[英]How to access the remote .mdb file in shared folder using java and jackcess from linux machine
這是我的第一篇文章。 我正在嘗試使用jackcess lib從Linux機器中打開Windows機器中共享文件夾中的遠程.mdb文件。 並在busineess對象中設置表值。 我寫了下面的代碼。
方案1:我已經從Windows機器上運行了代碼,一切正常。 方案2:如果我從linux機器上運行代碼,則文件未找到異常。 希望這應該是個小錯誤。 請糾正我這里缺少的內容。
package com.gg.main;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Map;
import com.healthmarketscience.jackcess.Database;
import com.healthmarketscience.jackcess.Table;
import com.penske.model.Login;
public class Test {
public static void main(String args[]){
Table table = null;
Database db = null;
Login login = null;
ArrayList<Login> rowList = null;
try {
rowList = new ArrayList();
db = Database.open(new File("//aa.bb.com/file/access.mdb"));
table = db.getTable("Maintenance");
System.out.println(Database.open(new File("//aa.bb.com/file/access.mdb"))
.getTable("Maintenance").getColumns());
for(Map<String, Object> row : table) {
login = new Login();
if(row.get("Req_ID")!=null){
login.setId(row.get("Req_ID").toString());
}
if(row.get("Name")!=null){
login.setName(row.get("Name").toString());
}if(row.get("Loc")!=null){
login.setLoc(row.get("Loc").toString());
}
rowList.add(login);
}
login.setRowList(rowList);
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
Linux不支持Windows的UNC路徑,因為您在此處使用它們:
new File("//aa.bb.com/file/access.mdb")
您必須在程序可以訪問它的Linux文件系統中的某個位置掛載遠程文件系統,然后使用smbfs或類似的東西替換程序中的路徑以使用該本地文件系統路徑。 自從我不得不與Windows機器進行交互以來已經有很長時間了,但是它應該是這樣的:
mount -t smbfs -o username=foo,password=bar //aa.bb.com/file /mnt/whatever_you_choose_to_name_it
有關詳細信息,請參見手冊頁 。
當然,如果您的程序應該自動啟動,例如。 作為系統引導的一部分,您必須確保文件系統也自動掛載。 參見fstab(5)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.