2015-11-05 88 views
6

我試圖獲取src/main/resources中的SQL文件的源文件。ClassLoader的getResource()在路徑中使用單引號時返回null

我設法讓我的文件與此:

String sqlFileName = "query.sql"; 
URL url = MyClass.class.getClassLoader().getResource(sqlFileName); 

但如果有一個在sqlFileName一個單引號這樣

String sqlFileName = "John's query.sql"; 
URL url = MyClass.class.getClassLoader().getResource(sqlFileName); 

的getResource返回null,因爲它無法找到我的資源當有撇號時。我嘗試了幾種方法來避免我的單引號,例如\'和'',而這些都不起作用。

我期待着與獲得的getResource類似這樣的URL:

C:\Projects\ProjectA\src\main\resources\queries\John's query.sql 
+0

嘗試轉義單引號'\'' – rajuGT

+0

您可以編輯您的問題以顯示您期望找到的實際資源嗎? – Kenster

+0

說真的,爲什麼還要在sql文件名中使用撇號。你真的需要它嗎? –

回答

0

你嘗試用\\」逃跑呢?

使用'\',您爲字符串創建了一個轉義',但未傳遞給URL解析器。你想逃避\本身,因此'和'都被傳遞給解析器。

0

您可以嘗試編碼文件名,

URLEncoder.encode( 「french'filename.txt」, 「UTF-8」));

它會返回:french%27filename.txt如果需要,您可以選擇不同的編碼。

相關問題