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

今天远程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();
			}
		}
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值