2015-11-05 86 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如果需要,您可以选择不同的编码。

相关问题