2013-11-21 18 views
0

我試圖添加功能的一大塊代碼,並與文件分隔符有一個奇怪的問題。在以下代碼中讀取文件時,在我的電腦上工作,但在Linux服務器上時失敗。當PC我通過這一點,它的工作原理:爲什麼File.separator使用錯誤的字符?

fileName = "C:\\Test\\Test.txt"; 

但是,當一臺服務器上我通過這一點,並得到「找不到文件」,因爲BufferedReader中/的FileReader聲明如下互換「/」爲「\」:

fileName: /opt/Test/Test.txt 

找不到文件:java.io.FileNotFoundException:\選擇\測試\ Test.txt的(系統

fileName = "/opt/Test/Test.txt"; 
System.out.println("fileName: "+fileName); 
reader = new BufferedReader(new FileReader(new File(fileName))); 

當Linux服務器上運行,輸出結果找不到指定的路徑)

當我創建一個簡單的Test.java文件,試圖複製其行爲與預期相同,所以一些在更大的代碼源造成的BufferedReader /的FileReader線表現得好像它在一臺PC,而不是一個Linux機器。任何想法可能是什麼?

回答

1

我沒有看到你在哪裏使用File.separator。試試這個,而不是硬編碼路徑分隔符。

fileName = File.separator + "opt" + File.separator + "Test" + File.separator + "Test.txt"; 
+0

我已嘗試...或者更確切地說,由於基目錄從我試圖文件名= fileName.replace一個配置文件(「/」,文件分割符),並且代替「/」與「讀\「在Linux服務器上,這是錯誤的。即使沒有這樣做,BufferedReader/FileReader操作似乎將帶有適當分隔符的文件替換爲「\」,然後嘗試查找文件,然後由於分隔符錯誤而失敗。 – user2137130

+0

原來,這是因爲我將代碼作爲Web Start客戶端運行,所以「\」是正確的文件分隔符,因爲我正在PC上運行客戶端。我試圖訪問服務器上的一個文件,所以必須通過定義的方法來做到這一點。 – user2137130

相關問題