Java 使用JCIFS访问网络文件共享的工具类

2018-07-20    来源:open-open

容器云强势上线!快速搭建集群,上万Linux镜像随意使用
public class UploadDownloadUtil
{

	/**
	 * 从共享目录拷贝文件到本地
	 * @param remoteUrl 共享目录上的文件路径
	 * @param localDir 本地目录
	 */
	public void smbGet(String remoteUrl, String localDir)
	{
		InputStream in = null;
		OutputStream out = null;
		try
		{
			SmbFile remoteFile = new SmbFile(remoteUrl);
			//这一句很重要
			remoteFile.connect();
			if (remoteFile == null)
			{
				System.out.println("共享文件不存在");
				return;
			}
			String fileName = remoteFile.getName();
			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();
			}
		}
	}

	/**
	 * 从本地上传文件到共享目录
	 * @Version1.0 Sep 25, 2009 3:49:00 PM
	 * @param remoteUrl 共享文件目录
	 * @param localFilePath 本地文件绝对路径
	 */
	public void smbPut(String remoteUrl, String localFilePath)
	{
		InputStream in = null;
		OutputStream out = null;
		try
		{
			File localFile = new File(localFilePath);

			String fileName = localFile.getName();
			SmbFile remoteFile = new SmbFile(remoteUrl + "/" + fileName);
			in = new BufferedInputStream(new FileInputStream(localFile));
			out = new BufferedOutputStream(new SmbFileOutputStream(remoteFile));
			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();
			}
		}
	}

	public static void main(String[] args)
	{
		UploadDownloadUtil test = new UploadDownloadUtil();
		// smb:域名;用户名:密码@目的IP/文件夹/文件名.xxx
		// test.smbGet("smb://szpcg;jiang.t:xxx@192.168.193.13/Jake/test.txt",
		// "c://") ;
		
//		test.smbPut("smb://szpcg;jiang.t:xxx@192.168.193.13/Jake",
//				"c://test.txt");
		
		
		//用户名密码不能有强字符,也就是不能有特殊字符,否则会被作为分断处理
		test.smbGet("smb://CHINA;xieruilin:123456Xrl@10.70.36.121/project/report/网上问题智能分析助手使用文档.doc",
		"c://Temp/");

	}

}

标签: 域名

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。

上一篇:用Alamofire进行网络请求

下一篇:类似log4cplus的一个C++日志类