您的位置:首页 > 理论基础 > 计算机网络

关于java读取远程文件时网络超时判断

2013-02-17 17:26 591 查看
今天远程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();
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: