本文實例為大家分享了java利用SMB讀取遠程文件的具體代碼,供大家參考,具體內容如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
package com.yss.test.FileReadWriter; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.MalformedURLException; import jcifs.smb.SmbFile; import jcifs.smb.SmbFileInputStream; import jcifs.smb.SmbFileOutputStream; public class RemoteAccessData { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { smbGet1( "smb://192.168.75.204/test/新建 文本文檔.txt" ); smbGet( "smb://192.168.75.204/test/新建 文本文檔.txt" , "e:/" ); } /** * 方法一: * * @param remoteUrl * 遠程路徑 smb://192.168.75.204/test/新建 文本文檔.txt * @throws IOException */ 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(); } // 從共享目錄下載文件 /** * 方法二: * 路徑格式:smb://192.168.75.204/test/新建 文本文檔.txt * smb://username:[email protected]/test * @param remoteUrl * 遠程路徑 * @param localDir * 要寫入的本地路徑 */ public static void smbGet(String remoteUrl, String localDir) { InputStream in = null ; OutputStream out = null ; try { SmbFile remoteFile = new SmbFile(remoteUrl); 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(); } } } // 向共享目錄上傳文件 public static 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(); } } } // 遠程url smb://192.168.0.77/test // 如果需要用戶名密碼就這樣: // smb://username:[email protected]/test } |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/z69183787/article/details/14161109