java 通过 SmbFile 类操作共享文件夹的示例
一、添加依赖
在pom.xml文件夹中添加如下的依赖就可以引用SmbFile类的jar包。
jcifs jcifs 1.3.17
二、读取文件
/**
*读取共享文件夹下的所有文件(文件夹)的名称
*@paramremoteUrl
*/
publicstaticvoidgetSharedFileList(StringremoteUrl){
SmbFilesmbFile;
try{
//smb://userName:passWord@host/path/
smbFile=newSmbFile(remoteUrl);
if(!smbFile.exists()){
System.out.println("nosuchfolder");
}else{
SmbFile[]files=smbFile.listFiles();
for(SmbFilef:files){
System.out.println(f.getName());
}
}
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(SmbExceptione){
e.printStackTrace();
}
}
三、创建文件夹
/**
*创建文件夹
*@paramremoteUrl
*@paramfolderName
*@return
*/
publicstaticvoidsmbMkDir(StringremoteUrl,StringfolderName){
SmbFilesmbFile;
try{
//smb://userName:passWord@host/path/folderName
smbFile=newSmbFile(remoteUrl+folderName);
if(!smbFile.exists()){
smbFile.mkdir();
}
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(SmbExceptione){
e.printStackTrace();
}
}
四、上传文件
/**
*上传文件
*@paramremoteUrl
*@paramshareFolderPath
*@paramlocalFilePath
*@paramfileName
*/
publicstaticvoiduploadFileToSharedFolder(StringremoteUrl,StringshareFolderPath,StringlocalFilePath,StringfileName){
InputStreaminputStream=null;
OutputStreamoutputStream=null;
try{
FilelocalFile=newFile(localFilePath);
inputStream=newFileInputStream(localFile);
//smb://userName:passWord@host/path/shareFolderPath/fileName
SmbFilesmbFile=newSmbFile(remoteUrl+shareFolderPath+"/"+fileName);
smbFile.connect();
outputStream=newSmbFileOutputStream(smbFile);
byte[]buffer=newbyte[4096];
intlen=0;//读取长度
while((len=inputStream.read(buffer,0,buffer.length))!=-1){
outputStream.write(buffer,0,len);
}
//刷新缓冲的输出流
outputStream.flush();
}catch(FileNotFoundExceptione){
e.printStackTrace();
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}finally{
try{
outputStream.close();
inputStream.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
五、下载文件
/**
*下载文件到浏览器
*@paramhttpServletResponse
*@paramremoteUrl
*@paramshareFolderPath
*@paramfileName
*/
publicstaticvoiddownloadFileToBrowser(HttpServletResponsehttpServletResponse,StringremoteUrl,StringshareFolderPath,StringfileName){
SmbFilesmbFile;
SmbFileInputStreamsmbFileInputStream=null;
OutputStreamoutputStream=null;
try{
//smb://userName:passWord@host/path/shareFolderPath/fileName
smbFile=newSmbFile(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=newbyte[2048];
intlen;
while((len=smbFileInputStream.read(buff))!=-1){
outputStream.write(buff,0,len);
}
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(SmbExceptione){
e.printStackTrace();
}catch(UnknownHostExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
finally{
try{
outputStream.close();
smbFileInputStream.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
/**
*下载文件到指定文件夹
*@paramremoteUrl
*@paramshareFolderPath
*@paramfileName
*@paramlocalDir
*/
publicstaticvoiddownloadFileToFolder(StringremoteUrl,StringshareFolderPath,StringfileName,StringlocalDir){
InputStreamin=null;
OutputStreamout=null;
try{
SmbFileremoteFile=newSmbFile(remoteUrl+shareFolderPath+File.separator+fileName);
FilelocalFile=newFile(localDir+File.separator+fileName);
in=newBufferedInputStream(newSmbFileInputStream(remoteFile));
out=newBufferedOutputStream(newFileOutputStream(localFile));
byte[]buffer=newbyte[1024];
while(in.read(buffer)!=-1){
out.write(buffer);
buffer=newbyte[1024];
}
}catch(Exceptione){
e.printStackTrace();
}finally{
try{
out.close();
in.close();
}catch(IOExceptione){
e.printStackTrace();
}
}
}
六、删除文件
/**
*删除文件
*@paramremoteUrl
*@paramshareFolderPath
*@paramfileName
*/
publicstaticvoiddeleteFile(StringremoteUrl,StringshareFolderPath,StringfileName){
SmbFileSmbFile;
try{
//smb://userName:passWord@host/path/shareFolderPath/fileName
SmbFile=newSmbFile(remoteUrl+shareFolderPath+"/"+fileName);
if(SmbFile.exists()){
SmbFile.delete();
}
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(SmbExceptione){
e.printStackTrace();
}
}
删除文件夹将路径指向要删除的文件夹即可。
到此这篇关于java通过SmbFile类操作共享文件夹的文章就介绍到这了,更多相关java操作共享文件夹内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。