java 通过 SmbFile 类操作共享文件夹

摘要:
添加依赖在pom.xml文件夹中添加如下的依赖就可以引用SmbFile类的jar包。smbFile.exists()){System.out.println;}else{SmbFile[]files=smbFile.listFiles();for{System.out.println;}}}catch{e.printStackTrace();}catch{e.printStackTrace();}}创建文件夹/***创建文件夹*@paramremoteUrl*@paramfolderName*@return*/publicstaticvoidsmbMkDir{SmbFilesmbFile;try{//smb://userName:passWord@host/path/folderNamesmbFile=newSmbFile;if(!smbFile.exists()){smbFile.mkdir();}}catch{e.printStackTrace();}catch{e.printStackTrace();}}上传文件/***上传文件*@paramremoteUrl*@paramshareFolderPath*@paramlocalFilePath*@paramfileName*/publicstaticvoiduploadFileToSharedFolder{InputStreaminputStream=null;OutputStreamoutputStream=null;try{FilelocalFile=newFile;inputStream=newFileInputStream;//smb://userName:passWord@host/path/shareFolderPath/fileNameSmbFilesmbFile=newSmbFile;smbFile.connect();outputStream=newSmbFileOutputStream;byte[]buffer=newbyte[4096];intlen=0;//读取长度while((len=inputStream.read(buffer,0,buffer.length))!

添加依赖

在pom.xml文件夹中添加如下的依赖就可以引用SmbFile类的jar包。

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

读取文件

/*** 读取共享文件夹下的所有文件(文件夹)的名称
  * @paramremoteUrl
  */
public static voidgetSharedFileList(String remoteUrl) {
    SmbFile smbFile;
    try{
        //smb://userName:passWord@host/path/
        smbFile = newSmbFile(remoteUrl);
        if (!smbFile.exists()) {
            System.out.println("no such folder");
        } else{
            SmbFile[] files =smbFile.listFiles();
            for(SmbFile f : files) {
                System.out.println(f.getName());
            }
        }
    } catch(MalformedURLException e) {
        e.printStackTrace();
    } catch(SmbException e) {
        e.printStackTrace();
    }
}

创建文件夹

/*** 创建文件夹
 * @paramremoteUrl 
 * @paramfolderName
 * @return
 */
public static voidsmbMkDir(String remoteUrl, String folderName) {
    SmbFile smbFile;
    try{
        //smb://userName:passWord@host/path/folderName
        smbFile = new SmbFile(remoteUrl +folderName);
        if (!smbFile.exists()) {
            smbFile.mkdir();
        }
    } catch(MalformedURLException e) {
        e.printStackTrace();
    } catch(SmbException e) {
        e.printStackTrace();
    }
}

上传文件

/*** 上传文件
  * @paramremoteUrl
  * @paramshareFolderPath
  * @paramlocalFilePath
  * @paramfileName
  */
public static voiduploadFileToSharedFolder(String remoteUrl, String shareFolderPath, String localFilePath, String fileName) {
    InputStream inputStream = null;
    OutputStream outputStream = null;
    try{
        File localFile = newFile(localFilePath);
        inputStream = newFileInputStream(localFile);
        //smb://userName:passWord@host/path/shareFolderPath/fileName
        SmbFile smbFile = new SmbFile(remoteUrl + shareFolderPath + "/" +fileName);
        smbFile.connect();
        outputStream = newSmbFileOutputStream(smbFile);
        byte[] buffer = new byte[4096];
        int len = 0; //读取长度
        while ((len = inputStream.read(buffer, 0, buffer.length)) != -1) {
            outputStream.write(buffer, 0, len);
        }
        //刷新缓冲的输出流
outputStream.flush();
    } catch(FileNotFoundException e) {
        e.printStackTrace();
    } catch(MalformedURLException e) {
        e.printStackTrace();
    } catch(IOException e) {
        e.printStackTrace();
    } finally{
        try{
            outputStream.close();
            inputStream.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

下载文件

/*** 下载文件到浏览器
  * @paramhttpServletResponse
  * @paramremoteUrl
  * @paramshareFolderPath
  * @paramfileName
  */
public static voiddownloadFileToBrowser(HttpServletResponse httpServletResponse, String remoteUrl, String shareFolderPath, String fileName) {
    SmbFile smbFile;
    SmbFileInputStream smbFileInputStream = null;
    OutputStream outputStream = null;
    try{
        //smb://userName:passWord@host/path/shareFolderPath/fileName
        smbFile = new SmbFile(remoteUrl + shareFolderPath + "/" +fileName);
        smbFileInputStream = newSmbFileInputStream(smbFile);
        httpServletResponse.setHeader("content-type", "application/octet-stream");
        httpServletResponse.setContentType("application/vnd.ms-excel;charset=UTF-8");
        httpServletResponse.setHeader("Content-disposition", "attachment; filename=" +fileName);
        //处理空格转为加号的问题
        httpServletResponse.setHeader("Content-Disposition", "attachment; fileName=" + fileName + ";filename*=utf-8''" + URLEncoder.encode(fileName, "UTF-8").replaceAll("\+", "%20"));
        outputStream =httpServletResponse.getOutputStream();
        byte[] buff = new byte[2048];
        intlen;
        while ((len = smbFileInputStream.read(buff)) != -1) {
            outputStream.write(buff, 0, len);
        }
    } catch(MalformedURLException e) {
        e.printStackTrace();
    } catch(SmbException e) {
        e.printStackTrace();
    } catch(UnknownHostException e) {
        e.printStackTrace();
    } catch(IOException e) {
        e.printStackTrace();
    }
    finally{
        try{
            outputStream.close();
            smbFileInputStream.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}
/*** 下载文件到指定文件夹
  * @paramremoteUrl
  * @paramshareFolderPath
  * @paramfileName
  * @paramlocalDir
  */
public static voiddownloadFileToFolder(String remoteUrl, String shareFolderPath, String fileName, String localDir) {
    InputStream in = null;
    OutputStream out = null;
    try{
        SmbFile remoteFile = new SmbFile(remoteUrl + shareFolderPath + File.separator +fileName);
        File localFile = new File(localDir + File.separator +fileName);
        in = new BufferedInputStream(newSmbFileInputStream(remoteFile));
        out = new BufferedOutputStream(newFileOutputStream(localFile));
        byte[] buffer = new byte[1024];
        while (in.read(buffer) != -1) {
            out.write(buffer);
            buffer = new byte[1024];
        }
    } catch(Exception e) {
        e.printStackTrace();
    } finally{
        try{
            out.close();
            in.close();
        } catch(IOException e) {
            e.printStackTrace();
        }
    }
}

删除文件

/*** 删除文件
  * @paramremoteUrl
  * @paramshareFolderPath
  * @paramfileName
  */
public static voiddeleteFile(String remoteUrl, String shareFolderPath, String fileName) {
    SmbFile SmbFile;
    try{
        //smb://userName:passWord@host/path/shareFolderPath/fileName
        SmbFile = new SmbFile(remoteUrl + shareFolderPath + "/" +fileName);
        if(SmbFile.exists()) {
            SmbFile.delete();
        }
    } catch(MalformedURLException e) {
        e.printStackTrace();
    } catch(SmbException e) {
    e.printStackTrace();
    }
}

删除文件夹将路径指向要删除的文件夹即可。

免责声明:文章转载自《java 通过 SmbFile 类操作共享文件夹》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇终于搞定2.0下头痛的输入法问题asp.net web api 测试帮助页面建立并测试下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

jmeter之认识元器件及功能 大杂烩

一、线程组 线程组是一个测试计划的开始点。在一个测试计划中的所有元件都必须在某个线程组下; 1.1 基础线程组Thread Group Ramp_up Periond值是预期Jmeter用于启动所有线程的时间;若是线程数过多,则会>该值启动完所有线程; 如下图,预期5s 启动200个线程;可以通过"用表格查看结果"查看每个线程的启动时间; 1.2...

Ubuntu 字体安装

命令安装:           以微软雅黑字体为例(其他的宋体、黑体等点阵字体都一样的),我们的雅黑字体文件是:Yahei.ttf(放在自己的主目录下)(在widows目录的Fonts目录下找需要的字体)由于我是双系统,我直接从Win7中复制了 msyh.ttf和msyhbd.ttf 到Ubuntu下 1在/usr/share/fonts/下新建文件夹 如...

USB3.0测试和使用说明

概述 AC6102上集成了一颗Cypress 推出的高性能USB3.0传输芯片CYUSB3014,Cypress称之为EZ-USBFX3。该芯片性能强劲,功能强大,接口简单,非常适合用于各种需要高速数据传输的场合,以下为摘自EZ-USBFX3数据手册中关于该芯片的介绍: 赛普拉斯EZ-USBFX3是新一代USB3.0外设控制器,具有高度集成的灵活特性,可帮...

Application.mk文件官方使用说明

本文档介绍了 ndk-build 所使用的 Application.mk 编译文件。 我们建议先阅读概念页面,然后再阅读本页面。 概览 Application.mk 指定了 ndk-build 的项目范围设置。默认情况下,它位于应用项目目录中的 jni/Application.mk下。 注意:其中许多参数也具有模块等效项。例如,APP_CFLAGS 对应...

app常见性能测试点

转载链接:https://blog.csdn.net/xiaomaoxiao336368/article/details/83547318普遍的apk性能测试,主要是以下七类1、响应2、内存3、cpu4、FPS (app使用的流畅度)5、GPU过度渲染6、耗电7、耗流(app除了这些性能测试,还有:手机版本号兼容性,屏幕分辨率兼容性,稳定性测试,安全测试等...

php-兄弟连(2014版)

主讲:高洛峰 一、PHP全系     版本:5.4 二、MySQL全系 三、HTML&CSS全系 四、JavaScript全系 参考资料:《细说PHP》第二版 2012年出版               《细说PHP》第三版 2014年出版 微博:bbs.lampbrother.net     weibo.com/gaoluofeng B/S结构软...