2015-11-05 1 views
6

src/main/resourcesにSQLファイルのressourceを取得しようとしています。ClassLoaderのgetResource()は、パス内の一重引用符を使用するとnullを返します。

私はこれで私のファイルを取得するために管理している

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

でもないこの

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

ようsqlFileNameでの単一引用符がある場合、それは私のリソースを見つけることができないためのgetResourceはnullを返しますアポストロフィがあるとき。私は\ 'や' 'のような一重引用符をエスケープするためにいくつかの方法を試しましたが、これらのどれもうまくいきませんでした。

私はこれに類似のgetResourceでURLを取得するために期待しています:

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

一重引用符でエスケープしよう '\' ' – rajuGT

+0

質問を編集して、実際に見つかっているリソースを表示できますか? – Kenster

+0

真剣に、SQLファイル名にアポストロフィを付けるのはどうしてですか?それは本当に必要ですか? –

答えて

0

あなたは\\でエスケープしてみてくださいましたか」?

1つで\を使用すると、文字列に対してエスケープされた 'を作成しますが、URLパーサには渡されません。 \と\の両方がパーサに渡されるように、\自身をエスケープしたいとします。あなたはファイル名をエンコードしてみてください

0

URLEncoder.encode( "french'filename.txt"、 "UTF-8"));

戻り値:french%27filename.txt必要に応じて、別のエンコーディングを選択できます。

関連する問題