使用遠端的NAS當做網路磁碟機時,會遇到一個狀況:若AP Server以服務的形式啟動時,會抓不到網路磁碟機。有兩個方法可以解決程式存取網路磁碟機的狀況。
方法1. 設定服務的登入帳戶
AP Server服務的登入帳戶不要使用預設的「本機系統帳戶」,以登入NAS的帳號、密碼來建立本機帳戶,再將服務的登入帳戶變更為此新建帳戶,則程式裡就能以UNC的方式存取網路磁碟機(如 \\192.168.0.1\share\doc)。
方法2. 使用jCIFS套件
jCIFS是CIFS(Common Internet File System)的Java實作,以smb://通訊協定來溝通Windows與Linux(Samba)。使用紀要如下:
1.登入NAS,先建立NTLM認證:
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, 帳號, 密碼);
2.列出遠端的檔案清單
String remoteURL = "smb://192.168.0.1/share/doc"; SmbFile dir = new SmbFile(remoteURL, auth); for (SmbFile f : dir.listFiles()) { System.out.println("File name: " + f.getName()); }
3. 將遠端檔案存入本地磁碟
SmbFile smbFile = new SmbFile("smb://192.168.0.1/share/doc/test1.doc", auth); SmbFileInputStream inputSmbFile = null; FileOutputStream outputFile = null; try { String filename = smbFile.getName(); inputSmbFile = new SmbFileInputStream(smbFile); outputFile = new FileOutputStream(new File(destDir + filename)); while ((len = inputSmbFile.read(buf)) > 0) { outputFile.write(buf, 0, len); } } catch (IOException e) { e.printStackTrace(); } finally { if (inputSmbFile != null) inputSmbFile.close(); if (outputFile != null) outputFile.close(); }
4. 將本地檔案存入遠端
SmbFileOutputStream outputSmbFile = null; FileInputStream inputFile = null; try { File file = new File(sSrcFile); String filename = file.getName(); SmbFile smbFile = new SmbFile(sRemoteURL_ + filename, auth); outputSmbFile = new SmbFileOutputStream(smbFile); inputFile = new FileInputStream(file); while ((len = inputFile.read(buf)) > 0) { outputSmbFile.write(buf, 0, len); } } catch (IOException e) { e.printStackTrace(); } finally { if (outputSmbFile != null) outputSmbFile.close(); if (inputFile != null) inputFile.close(); }
##
您可能也會有興趣的類似文章
- Servlet 3.0的檔案上傳寫法 (2則留言, 2012/06/19)
- 以Scribe-java實作Google OAuth 2.0的認證機制 (0則留言, 2013/02/19)
- Java十年有成 (0則留言, 2005/04/12)
- 解決 iReport 升級後的問題 (1則留言, 2005/11/22)
- [轉貼CNet] 開原碼Java工具熱 昇陽能否突圍? (0則留言, 2005/06/30)
- Java I18N國際化工具:JRC-Editor (0則留言, 2008/03/01)
- [Java] JBuilder reportedly migrating to Eclipse? (1則留言, 2005/04/23)
- [IntelliJ IDEA] Java / JavaScript除錯小技巧 (0則留言, 2014/08/14)
- 又一個Java寫的資料庫前端工具:Execute Query 3.0 (2則留言, 2006/09/21)
- 使用IntelliJ IDEA 12的Android UI Designer輕鬆寫Android App (1則留言, 2012/08/09)
- jTDS JDBC Driver在2012年10月釋出了能在JDK 1.7運行的1.3.0版 (0則留言, 2013/01/16)
- Java之父James Gosling由Oracle辭職了… (2則留言, 2010/04/10)
- Java程式庫Markdown4J簡介 (0則留言, 2013/02/22)
- [jEdit] jEdit編輯器的初始設定與必裝插件 (3則留言, 2007/10/25)
- 取得iReport / JasperReports報表內特定元件的方法 [修訂] (5則留言, 2011/10/17)