java远程文件操作

Posted 飞鸿踏雪不留痕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java远程文件操作相关的知识,希望对你有一定的参考价值。

有时在项目中,会有专门的文件服务器(windows),这个时候我们需要对文件进行操作时,就不能像操作本地文件那样操作文件服务器的文件。这时候就可以用SmbFile来操作了。
首先添加jar包,maven中添加如下代码:

<dependency>
     <groupId>jcifs</groupId>
        <artifactId>jcifs</artifactId>
     <version>1.3.17</version>
</dependency>

一般通过文件服务器操作都需要账号密码,这时候需要设置下最基本的设置,

public static final String fileRoot = "smb://remotename:[email protected]";

public InputStream getFile(String path) throws IOException {
        SmbFile smbFile = new  SmbFile(fileRoot+path); 
        return smbFile.getInputStream();
}

public   static   void  smbGet1(String remoteUrl)  throws  IOException {  
        SmbFile smbFile = new  SmbFile(remoteUrl);  
        int  length = smbFile.getContentLength(); // 得到文件的大小   
        byte  buffer[] =  new   byte [length];  
        SmbFileInputStream in = new  SmbFileInputStream(smbFile);  
        // 建立smb文件输入流   
        while  ((in.read(buffer)) != - 1 ) {  
  
            System.out.write(buffer);  
            System.out.println(buffer.length);  
        }  
        in.close();  
    } 

 public static List<AttachmentPO> getAttachmentFiles(String remoteDirectory) 
    {
        List<AttachmentPO> attachmentPOs = new ArrayList<AttachmentPO>();
        try {
            SmbFile file = new SmbFile(fileRoot + remoteDirectory);
            String[] files = file.list();
            for(String name : files){
                AttachmentPO AttachmentPO = new AttachmentPO();
                AttachmentPO.setName(name);
                AttachmentPO.setFile_path(remoteDirectory + name); 
                AttachmentPO.setRef_type(WikiConsts.ATTACHMENT_TYPE_DOWNLOAD);
                attachmentPOs.add(AttachmentPO);
            }

        } catch (MalformedURLException e) {
            logger.error("get SmbFile by directory return wrong, the remoteDirectory is" + remoteDirectory);
        } catch (SmbException e) {
            logger.error("get SmbFiles under directory return wrong, the remoteDirectory is" + remoteDirectory);
        }
        return attachmentPOs;
    }

其它的一些操作方法和本地操作文件方法没什么大的区别,可以自行地研究这个SmbFile类里的方法。


以上是关于java远程文件操作的主要内容,如果未能解决你的问题,请参考以下文章

利用JAVA API远程进行HDFS的相关操作

Java itext为pdf 文件添加水印核心功能代码片段

java Ftp上传创建多层文件的代码片段

VSCode自定义代码片段——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程