推广 热搜: 食品  快递      www  民事主体  网络营销  代理  东莞市  橡塑 
点击 18回答 2 2025-04-28 04:20

java远程读写文件详解

已解决 悬赏分:50 - 解决时间 2025-04-28 04:20
求远程读写文件代码注释已知电脑用户名、密码、ip文件路径谢谢
反对 0举报 0 收藏 0 打赏 0
最佳答案
支持 0 反对 0 举报 2025-04-28 04:20
求远程读写...
支持 0 反对 0 举报 2025-04-28 04:20
实现上传下载实际上就是io的转换。举例:import hkrt.b2b.view.util.Log;import hkrt.b2b.view.util.ViewUtil;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import org.apache.commons.net.ftp.FTPClient;import org.apache.commons.net.ftp.FTPFile;public class CCFCCBFTP {public static String fileUploadByFtp(String plainFilePath, String fileName, String filepath) throws Exception {FileInputStream fis = null;ByteArrayOutputStream bos = null;FTPClient ftpClient = new FTPClient();String bl = "false";try {fis = new FileInputStream(plainFilePath);bos = new ByteArrayOutputStream(fis.available());byte[] buffer = new byte[1024];int count = 0;while ((count = fis.read(buffer)) != -1) {bos.write(buffer, 0, count);}bos.flush();Log.info("加密上传文件开始");Log.info("连接远程上传服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);FTPFile[] fs;fs = ftpClient.listFiles();for (FTPFile ff : fs) {if (ff.getName().equals(filepath)) {bl="true";ftpClient.changeWorkingDirectory("/"+filepath+"");}}Log.info("检查文件路径是否存在:/"+filepath);if("false".equals(bl)){ViewUtil.dataSEErrorPerformedCommon( "查询文件路径不存在:"+"/"+filepath);return bl;}ftpClient.setBufferSize(1024);ftpClient.setControlEncoding("GBK");// 设置文件类型(二进制)ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);ftpClient.storeFile(fileName, fis);Log.info("上传文件成功:"+fileName+"。文件保存路径:"+"/"+filepath+"/");return bl;} catch (Exception e) {throw e;} finally {if (fis != null) {try {fis.close();} catch (Exception e) {Log.info(e.getLocalizedMessage(), e);}}if (bos != null) {try {bos.close();} catch (Exception e) {Log.info(e.getLocalizedMessage(), e);}}}}public static String fileDownloadByFtp(String localFilePath, String fileName,String routeFilepath) throws Exception {FileInputStream fis = null;ByteArrayOutputStream bos = null;FileOutputStream fos = null;FTPClient ftpClient = new FTPClient();String SFP = System.getProperty("file.separator");String bl = "false";try {Log.info("下载并解密文件开始");Log.info("连接远程下载服务器"+CCFCCBUtil.CCFCCBHOSTNAME+":"+22);ftpClient.connect(CCFCCBUtil.CCFCCBHOSTNAME, 22);ftpClient.login(CCFCCBUtil.CCFCCBLOGINNAME, CCFCCBUtil.CCFCCBLOGINPASSWORD);// ftpClient.connect(CMBCUtil.CMBCHOSTNAME, 2021);// ftpClient.login(CMBCUtil.CMBCLOGINNAME, CMBCUtil.CMBCLOGINPASSWORD);FTPFile[] fs; ftpClient.makeDirectory(routeFilepath);ftpClient.changeWorkingDirectory(routeFilepath);bl = "false";fs = ftpClient.listFiles();for (FTPFile ff : fs) {if (ff.getName().equals(fileName)) {bl = "true";Log.info("下载文件开始。");ftpClient.setBufferSize(1024);// 设置文件类型(二进制)ftpClient.setFileType(FTPClient.BINARY_FILE_TYPE);InputStream is = ftpClient.retrieveFileStream(fileName);bos = new ByteArrayOutputStream(is.available());byte[] buffer = new byte[1024];int count = 0;while ((count = is.read(buffer)) != -1) {bos.write(buffer, 0, count);}bos.flush();fos = new FileOutputStream(localFilePath+SFP+fileName);fos.write(bos.toByteArray());Log.info("下载文件结束:"+localFilePath);}}Log.info("检查文件是否存:"+fileName+" "+bl);if("false".equals(bl)){ViewUtil.dataSEErrorPerformedCommon("查询无结果,请稍后再查询。");return bl;}return bl;} catch (Exception e) {throw e;} finally {if (fis != null) {try {fis.close();} catch (Exception e) {Log.info(e.getLocalizedMessage(), e);}}if (bos != null) {try {bos.close();} catch (Exception e) {Log.info(e.getLocalizedMessage(), e);}}if (fos != null) {try {fos.close();} catch (Exception e) {Log.info(e.getLocalizedMessage(), e);}}}}}备注:以上方法就实现了流的二进制上传下载转换,只需要将服务器连接部分调整为本地的实际ftp服务用户名和密码即可。
网站首页  |  营业执照  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报