我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java中怎么对接远程文件

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java中怎么对接远程文件

Java中怎么对接远程文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

配置文件:copyRemoteFile.properties

#  class="lazy" data-src/dao.properties    #      这里保存的都是键值对信息    #  interface name(no packgage) = implementation class  # 注意:    #A:【路径符号】【必须】是【/】【如:D:/home/publish】    #B:【键key=值value】对【后面】【绝不允许有空格】【如:REMOTE_HOST_IP=172.77.9.77】   # REMOTE_HOST_IP  远程机器IP    # LOGIN_ACCOUNT   远程机器登录名    # LOGIN_PASSWORD  远程机器登录密码    # SHARE_DOC_NAME  远程机器共享文件夹名(设置共享后必须授予读写权限)   # sourcePath      本地路径    # targetPath      目标路径(真实路径=共享文件夹路径+目标路径)   REMOTE_HOST_IP=172.77.9.77   LOGIN_ACCOUNT=77   LOGIN_PASSWORD=77   SHARE_DOC_NAME=vfs_home    sourcePath=D:/home/publish   targetPath=publish

导入jar包:jcifs-1.3.16.jar

读取配置文件中key对应的value类:RemoteConfigUtil.java

package com.remote;       import java.io.IOException;   import java.util.Properties;        public class RemoteConfigUtil {       private String REMOTE_HOST_IP;       private String LOGIN_ACCOUNT;       private String LOGIN_PASSWORD;       private String SHARE_DOC_NAME;       private String sourcePath;       private String targetPath;           //无参构造方法       public RemoteConfigUtil() {           try {               // 读取配置文件               Properties prop = new Properties();               prop.load(this.getClass().getClassLoader().getResourceAsStream("copyRemoteFile.properties"));               // 根据 key 获取 value               REMOTE_HOST_IP = prop.getProperty("REMOTE_HOST_IP");               LOGIN_ACCOUNT = prop.getProperty("LOGIN_ACCOUNT");               LOGIN_PASSWORD = prop.getProperty("LOGIN_PASSWORD");               SHARE_DOC_NAME = prop.getProperty("SHARE_DOC_NAME");               sourcePath = prop.getProperty("sourcePath");               targetPath = prop.getProperty("targetPath");           } catch (IOException e) {               e.printStackTrace();           }       }       public String getLOGIN_ACCOUNT() {           return LOGIN_ACCOUNT;       }           public void setLOGIN_ACCOUNT(String login_account) {           LOGIN_ACCOUNT = login_account;       }           public String getLOGIN_PASSWORD() {           return LOGIN_PASSWORD;       }           public void setLOGIN_PASSWORD(String login_password) {           LOGIN_PASSWORD = login_password;       }           public String getREMOTE_HOST_IP() {           return REMOTE_HOST_IP;       }           public void setREMOTE_HOST_IP(String remote_host_ip) {           REMOTE_HOST_IP = remote_host_ip;       }           public String getSHARE_DOC_NAME() {           return SHARE_DOC_NAME;       }           public void setSHARE_DOC_NAME(String share_doc_name) {           SHARE_DOC_NAME = share_doc_name;       }           public String getSourcePath() {           return sourcePath;       }           public void setSourcePath(String sourcePath) {           this.sourcePath = sourcePath;       }           public String getTargetPath() {           return targetPath;       }           public void setTargetPath(String targetPath) {           this.targetPath = targetPath;       }   }

操作远程共享文件夹类: RemoteFileUtil.java

根据需求选择相应的 Method

package com.remote;   import java.io.BufferedOutputStream;   import java.io.BufferedReader;   import java.io.File;   import java.io.FileInputStream;   import java.io.FileNotFoundException;   import java.io.IOException;   import java.io.InputStream;   import java.io.InputStreamReader;   import java.io.OutputStream;   import java.net.MalformedURLException;   import java.net.UnknownHostException;   import java.util.ArrayList;   import java.util.List;       import jcifs.smb.SmbException;   import jcifs.smb.SmbFile;   import jcifs.smb.SmbFileInputStream;   import jcifs.smb.SmbFileOutputStream;        public class RemoteFileUtil {                  private ArrayList filelist = new ArrayList();       RemoteConfigUtil rc = new RemoteConfigUtil();           private String remoteHostIp;  //远程主机IP          private String account;       //登陆账户          private String password;      //登陆密码          private String shareDocName;  //共享文件夹名称                             public RemoteFileUtil(){             this.remoteHostIp = rc.getREMOTE_HOST_IP();              this.account = rc.getLOGIN_ACCOUNT();              this.password = rc.getLOGIN_PASSWORD();              this.shareDocName = rc.getSHARE_DOC_NAME();          }                             public RemoteFileUtil(String remoteHostIp, String account, String password,String shareDocName) {              this.remoteHostIp = remoteHostIp;              this.account = account;              this.password = password;              this.shareDocName = shareDocName;          }                                public List<String> readFile(String remoteFileName){              SmbFile smbFile = null;              BufferedReader reader = null;              List<String> resultLines = null;              //构建连接字符串,并取得文件连接              String conStr = null;              conStr = "smb://"+account+":"+password+"@"+remoteHostIp+"/"+shareDocName+"/"+remoteFileName;              try {                  smbFile = new SmbFile(conStr);              } catch (MalformedURLException e) {                  e.printStackTrace();              }              //创建reader              try {                  reader = new BufferedReader(new InputStreamReader(new SmbFileInputStream(smbFile)));              } catch (SmbException e) {                  e.printStackTrace();              } catch (MalformedURLException e) {                  e.printStackTrace();              } catch (UnknownHostException e) {                  e.printStackTrace();              }                     //循环对文件进行读取              String line;              try {                  line = reader.readLine();                  if(line != null && line.length()>0){                      resultLines = new ArrayList<String>();                  }                  while (line != null) {                      resultLines.add(line);                      line = reader.readLine();                  }              } catch (IOException e) {                  e.printStackTrace();              }              //返回              return resultLines;          }                             public boolean writeFile(InputStream is,String remoteFileName){              SmbFile smbFile = null;              OutputStream os = null;              byte[] buffer = new byte[1024*8];              //构建连接字符串,并取得文件连接              String conStr = null;              conStr = "smb://"+account+":"+password+"@"+remoteHostIp+"/"+shareDocName+"/"+remoteFileName;              try {                  smbFile = new SmbFile(conStr);              } catch (MalformedURLException e) {                  e.printStackTrace();                  return false;              }                             //获取远程文件输出流并写文件到远程共享文件夹              try {                  os = new BufferedOutputStream(new SmbFileOutputStream(smbFile));                  while((is.read(buffer))!=-1){                      os.write(buffer);                         }              } catch (Exception e) {                  e.printStackTrace();                  return false;              }                              return true;          }                                        public boolean writeFile(String localFileFullName ,String remoteFileName){              try {                  return writeFile(new FileInputStream(new File(localFileFullName)),remoteFileName);              } catch (FileNotFoundException e) {                  e.printStackTrace();                  return false;              }          }                             public boolean writeFile(File localFile ,String remoteFileName){              try {                  return writeFile(new FileInputStream(localFile),remoteFileName);              } catch (FileNotFoundException e) {                  e.printStackTrace();                  return false;              }          }                                 public List<String> getFiles(){              SmbFile smbFile = null;              BufferedReader reader = null;              List<String> resultLines = new ArrayList();              //构建连接字符串,并取得文件连接              String conStr = null;              conStr = "smb://"+account+":"+password+"@"+remoteHostIp+"/"+shareDocName+"/";              try {                  smbFile = new SmbFile(conStr);              } catch (MalformedURLException e) {                  e.printStackTrace();              }              //创建reader              try {                String[] a = smbFile.list();             for(int i=0;i<a.length;i++){               resultLines.add(a[i]);               System.out.println(a[i]);             }           } catch (SmbException e) {                  e.printStackTrace();              } catch (Exception e) {                  e.printStackTrace();              }                     //返回              return resultLines;          }                          public void smbMkDir(String name) {           // 注意使用jcifs-1.3.15.jar的时候 操作远程计算机的时候所有类前面须要增加Smb           // 创建一个远程文件对象           String conStr = "smb://" + account + ":" + password + "@" + remoteHostIp + "/" + shareDocName;           SmbFile remoteFile;           try {               remoteFile = new SmbFile(conStr + "/" + name);               if (!remoteFile.exists()) {                   remoteFile.mkdir();// 创建远程文件夹               }           } catch (MalformedURLException e) {               e.printStackTrace();           } catch (SmbException e) {               e.printStackTrace();           }       }                    public void delFolder(String folderPath) {           //String conStr = "smb://"+LOGIN_ACCOUNT+":"+LOGIN_PASSWORD+"@"+remoteHostIp+"/"+shareDocName;            try {               delAllFile(folderPath); //删除完里面所有内容               String filePath = folderPath;               filePath = filePath.toString();                               SmbFile myFilePath = new SmbFile(filePath);               myFilePath.delete(); //删除空文件夹           }           catch (Exception e) {               String message = ("删除文件夹操作出错");               System.out.println(message);           }       }                            public boolean delAllFile(String path) {           boolean bea = false;           try {               SmbFile file = new SmbFile(path);               if (!file.exists()) {                   return bea;               }               if (!file.isDirectory()) {                   return bea;               }               String[] tempList = file.list();               SmbFile temp = null;               for (int i = 0; i < tempList.length; i++) {                   if (path.endsWith("/")) {                       temp = new SmbFile(path + tempList[i]);                   } else {                       temp = new SmbFile(path + "/" + tempList[i]);                   }                   if (temp.isFile()) {                       temp.delete();                   }                   if (temp.isDirectory()) {                       delAllFile(path + "/" + tempList[i] + "/");// 先删除文件夹里面的文件                       delFolder(path + "/" + tempList[i] + "/");// 再删除空文件夹                       bea = true;                   }               }               return bea;           } catch (Exception e) {               return bea;           }       }                                public void copyFolder(String oldPath, String newPath) {           String conStr = "smb://" + account + ":" + password + "@" + remoteHostIp + "/" + shareDocName;           System.err.println(conStr);           try {                            SmbFile exittemps = new SmbFile(conStr + "/" + newPath);               if (!exittemps.exists()) {                   exittemps.mkdirs(); // 如果文件夹不存在 则建立新文件夹               }               File a = new File(oldPath);               String[] file = a.list();               File temp = null;               for (int i = 0; i < file.length; i++) {                   if (oldPath.endsWith("/")) {                       temp = new File(oldPath + file[i]);                   } else {                       temp = new File(oldPath + "/" + file[i]);                   }                   if (temp.isFile()) {                       if (temp.exists()) {                           writeFile(temp, newPath + "/" + file[i]);                       }                   }                   if (temp.isDirectory()) {// 如果是子文件夹                       copyFolder(oldPath + "/" + file[i], newPath + "/" + file[i]);                   }               }               } catch (Exception e) {               String message = "复制整个文件夹内容操作出错";               System.out.println(message);           }       }                    public void copyFileToRemoteDir(String localFileFullName, String targetDir) {           System.err.println(localFileFullName + "--" + targetDir);           RemoteFileUtil rf = new RemoteFileUtil();           InputStream is = null;           SmbFile smbFile = null;           OutputStream os = null;           byte[] buffer = new byte[1024 * 8];           // 构建连接字符串,并取得文件连接           String conStr = null;           conStr = "smb://" + account + ":" + password + "@" + remoteHostIp + "/" + shareDocName + "/" + targetDir;           System.err.println(conStr);           SmbFile sf;           try {               sf = new SmbFile("smb://" + account + ":" + password + "@" + remoteHostIp + "/" + shareDocName + "/" + targetDir);               if (!sf.exists()) {                   // 新建目标目录                   sf.mkdirs();                   is = new FileInputStream(new File(localFileFullName));                   // 获取远程文件输出流并写文件到远程共享文件夹                   os = new BufferedOutputStream(new SmbFileOutputStream(smbFile));                   while ((is.read(buffer)) != -1) {                       os.write(buffer);                   }               }           } catch (Exception e) {               System.err.println("提示:复制整个文件夹内容操作出错。");           }               File file = new File(localFileFullName);           if (file.isFile()) {               File sourceFile = file;     // 源文件               File targetFile = new File(new File(targetDir).getAbsolutePath() + File.separator + file.getName());// 目标文件               String name = file.getName();// 文件名               if (targetDir != null && targetFile != null) {                   rf.writeFile(sourceFile, "/" + targetDir + "/" + name); // 复制文件               } else if (targetFile != null) {                   rf.writeFile(sourceFile, name); // 复制文件               }           }       }                    public ArrayList refreshFileList(String strPath, String subStr) {           File dir = new File(strPath);           File[] files = dir.listFiles();           if (files == null)               return null;           for (int i = 0; i < files.length; i++) {               if (!files[i].isDirectory()) {                   String strFileName = files[i].getAbsolutePath().toLowerCase();                   if (files[i].getName().indexOf(subStr) >= 0) {                       filelist.add(files[i].getName());                   }               }           }           return filelist;       }           // 测试从本地复制文件到远程目标目录,测试已通过       public static void main(String[] args) {           RemoteConfigUtil rc = new RemoteConfigUtil();           RemoteFileUtil util = new RemoteFileUtil();           util.copyFileToRemoteDir(rc.getSourcePath(), rc.getTargetPath());       }   }

看完上述内容,你们掌握Java中怎么对接远程文件的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java中怎么对接远程文件

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java中怎么对接远程文件

Java中怎么对接远程文件,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、配置文件:copyRemoteFile.properties# src/dao.propertie
2023-06-17

利用Java怎么对文件目录进行远程共享

这篇文章将为大家详细讲解有关利用Java怎么对文件目录进行远程共享,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。.远程共享目录操作1、需要下载对应的jcifs-1.3.18.jar2、涉及的
2023-05-31

java怎么读取远程服务器文件

读取远程服务器文件了解使用Java读取远程服务器文件的各种方法,包括:使用URL连接:直接获取输入流以读取文件。使用NIO:采用异步方式进行非阻塞文件访问。使用ApacheCommonsIO:使用便捷的FileUtils工具读取文件。探索其他第三方库:GoogleGuava、OkHttp、Retrofit等。
java怎么读取远程服务器文件
2024-04-11

java怎么读取远程服务器文件

要读取远程服务器上的文件,可以使用Java的网络编程功能。以下是使用Java读取远程服务器文件的步骤:1. 创建一个URL对象,指定远程服务器上文件的URL地址。例如:```javaURL url = new URL("http://exa
2023-09-26

Java 7中怎么对文件进行操作

这篇文章将为大家详细讲解有关Java 7中怎么对文件进行操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。创建和删除文件下面的代码片段向你展示的是用 Files.createFile(Pat
2023-06-17

怎么远程连接云服务器桌面文件

一、远程连接云服务器的步骤确认您已经安装了远程连接工具,如TeamViewer和VNC。下载云服务器的远程连接软件,并打开它。连接到云服务器,并在浏览器中输入云服务器的IP地址。开始登录和登出,并使用云服务器提供的远程连接服务。如果您想让云服务器中的其他用户访问您的本地文件,请将用户名和密码告知他们。如果您想让其他用户
怎么远程连接云服务器桌面文件
2023-10-27

java怎么将文件流直接转换成文件

要将文件流直接转换成文件,可以使用FileOutputStream类。下面是一个示例代码:import java.io.*;public class ConvertStreamToFile {public static void main
2023-10-23

java怎么连接redis配置文件

Java连接Redis配置文件的详细步骤如下:配置连接参数,设置最大连接数、空闲连接数等连接池配置信息。建立连接池,使用Redis服务器地址和端口创建JedisPool连接池对象。获取连接,从连接池中获取一个Jedis连接。使用连接,使用Jedis连接执行Redis命令。回收连接,使用完连接后,将其归还给连接池。示例代码展示了如何使用Jedis连接Redis并执行设置和获取键值的操作。通过配置连接池,可以优化Java应用程序与Redis的连接管理。
java怎么连接redis配置文件
2024-04-02

Java中怎么锁文件

本篇内容主要讲解“Java中怎么锁文件”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java中怎么锁文件”吧!1. 概览当读写文件时,需要确保有适当的文件锁定机制,来保证基于并发I/O应用程序的
2023-06-03

Linux怎么远程拷贝文件

今天给大家介绍一下Linux怎么远程拷贝文件。文章的内容小编觉得不错,现在给大家分享一下,觉得有需要的朋友可以了解一下,希望对大家有所帮助,下面跟着小编的思路一起来阅读吧。scp是 secure copy的缩写是Linux系统下基于ssh登
2023-06-28

java怎么把对象存储在文件

Java中的对象序列化机制允许将对象存储到文件或数据库中,以便以后使用。序列化过程涉及将对象的内部状态转换为二进制格式,反序列化过程则将二进制格式还原为对象。对象序列化具有持久性、可移植性和高效性的优点,但存在版本不兼容、安全性和空间占用方面的缺点。
java怎么把对象存储在文件
2024-04-11

怎么在Java中利用File对文件进行操作

本篇文章为大家展示了怎么在Java中利用File对文件进行操作,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.1java.io.FileFile用于表示文件系统中的一个文件或目录通过File可以:
2023-05-31

Linux服务器中怎么远程获取文件

这篇文章将为大家详细讲解有关Linux服务器中怎么远程获取文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.ftp 方式 a) get 格式:代码如下:get [
2023-06-12

VB.NET中怎么对文件排序

本篇文章为大家展示了VB.NET中怎么对文件排序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。VB.NET文件排序之按文件尺寸大小代码如下:Public Class Form1 按照文件尺寸大小排
2023-06-17

linux scp怎么远程拷贝文件及文件夹

本篇内容介绍了“linux scp怎么远程拷贝文件及文件夹”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、拷贝本机/home/admini
2023-06-13

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录