写点什么

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

  • 2022 年 5 月 05 日
  • 本文字数:1794 字

    阅读完需:约 6 分钟

smbFile = new SmbFile(remoteUrl + folderName);


if (!smbFile.exists()) {


smbFile.mkdir();


}


} catch (MalformedURLException e) {


e.printStackTrace();


} catch (SmbException e) {


e.printStackTrace();


}


}


四、上传文件




/**


  • 上传文件

  • @param remoteUrl

  • @param shareFolderPath

  • @param localFilePath

  • @param fileName


*/


public static void uploadFileToSharedFolder(String remoteUrl, String shareFolderPath, String localFilePath, String fileName) {


InputStream inputStream = null;


OutputStream outputStream = null;


try {


File localFile = new File(localFilePath);


inputStream = new FileInputStream(localFile);


// smb://userName:passWord@host/path/shareFolderPath/fileName


SmbFile smbFile = new SmbFile(remoteUrl + shareFolderPath + "/" + fileName);


smbFile.connect();


outputStream = new SmbFileOutputStream(smbFile);


byte[] 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 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();


}


}


}


五、下载文件




/**


  • 下载文件到浏览器

  • @param httpServletResponse

  • @param remoteUrl

  • @param shareFolderPath

  • @param fileName


*/


public static void downloadFileToBrowser(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 = new SmbFileInputStream(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];


int len;


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();


}


}


}


/**


  • 下载文件到指定文件夹

  • @param remoteUrl

  • @param shareFolderPath

  • @param fileName

  • @param localDir


*/


public static void downloadFileToFolder(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(new SmbFileInputStream(remoteFile));


out = new BufferedOutputStream(new FileOutputStream(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();


}


}


}

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
java 通过 SmbFile 类操作共享文件夹_程序员_爱好编程进阶_InfoQ写作社区