今天遠程FTP突然掛掉了,導致讀取FTP的遠程檔案的程式僵死線上程了。檢查發現是代碼沒有判斷逾時異常判斷。現已修改,如下。
/** * 將遠程檔案臨時寫進本地 * @param ftpUrl * @param outputPath */public static boolean writeFtpFile2Local(String ftpUrl, String outputPath) {System.out.println("開始寫檔案到本地");URLConnection con=null;FileOutputStream fs =null;try {// 串連指定的網路資源,擷取網路輸入資料流URL u=new URL(ftpUrl);int bytesum = 0;int byteread = 0;con=u.openConnection();System.setProperty("sun.net.client.defaultConnectTimeout", "60000");//jdk1.4換成這個,連線逾時 System.setProperty("sun.net.client.defaultReadTimeout", "60000"); //jdk1.4換成這個,讀操作逾時con.connect();InputStream inStream = con.getInputStream();fs= new FileOutputStream(outputPath);byte[] buffer = new byte[1444];while ((byteread = inStream.read(buffer)) != -1) {bytesum += byteread;fs.write(buffer, 0, byteread);}return true;} catch (Exception e) {System.out.println("讀取遠程檔案到本地失敗。請與系統管理員聯絡!"+ftpUrl);e.printStackTrace();return false;}finally{try {if(fs!=null){fs.close();fs=null;}if(con!=null){con=null;}} catch (IOException e) {e.printStackTrace();}}}