2012-05-31 45 views
0

我使用org.eclipse.swt.widgets.FileDialog獲取eclipse插件中的文件路徑並將路徑保存在XML文件中。java.io.File的路徑問題

在web.xml,路徑被存儲爲下面(I不能改變backsladh到forwardslash或逃生反斜線由於值從SWT FileDialog的未來)

<init-param> 
    <param-name>filePath</param-name> 
    <param-value>c:\new\demo\next\version.txt</param-value> 
</init-param> 

以我濾波器,我有下面的代碼在init()方法,但我沒能獲得文件參考由於特殊字符

String filePath = filterConfig.getInitParameter("filePath"); 
// Tried filePath.replace('\\','/') --> Didnot work since \n is a single character 
File f = new File(path) 
+0

爲了更快得到更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

+0

你最近在讀什麼? –

回答

0

我使用 org.eclipse.swt.widgets.FileDialog獲取eclipse插件中的文件路徑並將路徑保存在XML文件中。

在web.xml,路徑被存儲爲下面(I不能backsladh改變 forwardslash或逃生反斜線由於值從SWT FileDialog的未來)

的SWT文件對話框不寫web.xml文件。你這樣做,所以你可以修復反斜槓。將它們更改爲正斜槓。

我有下面的代碼在init()方法,但我沒能獲得文件 參考由於特殊字符 未[從你的意見之一]

工作,因爲\ n被認爲是單個字符

這意味着web.xml文件中的數據是錯誤的你可以在代碼中做的任何事都可以解決這個問題。這不是一個編碼問題。您不需要在Java中處理反斜槓。編譯器已經這樣做了,因此在這種情況下在web-app容器中執行了XML解析器。您需要事先獲得正確的文件格式。

+0

感謝@EJP,現在它正在工作,並且因爲您的解決方案正是需要的,所以接受它作爲答案 – user948246

2

因爲\ n被認爲是新的生產線我不能得到實際的路徑。

這表明無論讀取文件是假設轉義,但事實並非如此。

不幸的是,你還沒有告訴我們什麼代碼用於數據用於代碼讀取數據。它是否在你的控制之下?

基本上你需要像逃避一樣逃避 - 所以要麼你可以在編寫數據時逃避c:\new\demo\next\version.txtc:\\new\\demo\\next\\version.txt,或者你可以刪除當你閱讀數據時試圖隱藏的代碼數據。

請注意,如果您字面上嘗試:

string.replace('\\', '/'); 

那麼肯定不會在所有幫助 - 因爲你忽略返回值。如果你試圖

string = string.replace('\\', '/'); 

那麼應該先完成相關的替代品,但你沒有說哪裏你試圖這樣做,或以何種方式沒有工作。

我實際上會在這裏將前進和後退斜線視爲紅色鯡魚:從根本上說,您需要按照與您相同的方式逃脫。用正斜槓代替反斜槓可能有助於文件名,但在其他地方如果不能只是執行替換,就會在其他位置出現問題。

+0

在web.xml中,路徑存儲如下(我不能將反斜槓更改爲正向或反斜槓,因爲值來自SWT FileDialog)\ n ​​filePath c:\ new \ demo \ next \ version。 txt \ n在我的過濾器中,我在init()方法中有下面的代碼,但由於特殊字符而無法獲取文件引用String filePath = filterConfig.getInitParameter(「filePath」); //嘗試過filePath.replace('\\','/') - >由於\ n是單個字符,所以沒有工作文件f = new File(path) – user948246

+0

請參閱我編輯的問題 – user948246

+0

String.replace i did not忽略返回值,因爲\ n被認爲是單個字符,因此\ n不工作 – user948246