2014-01-24 3 views
3

파일 이름에 메타 문자가있는 파일을 어떻게 읽습니까? 예를 들어 :Java SAX가 메타 문자로 파일 이름을 읽음

private void readDoc (String path) { 
    try { 
     SAXReader reader = new SAXReader(); 
     this.doc = reader.read("_40208#1159SOV.xml"); 
} catch(Exception e) { 
     this.print(e.getMessage()); } } 

나는 사용하여 시도 :

reader.read(Pattern.quote("_40208#1159SOV.xml"); 

을했지만 작동하지 않습니다. 파일 이름을 바꿀 필요가없는 솔루션이 필요하십니까? 감사합니다.

+0

"작동하지 않는다"고하면 그게 무슨 뜻입니까? 프로그램의 산출물을 산출 할 수 있습니까? –

+0

그냥 파일 이름 경로에/Q와/E를 추가하는 것입니다. – user1722669

답변

2

read은 시스템 ID를 URL 인 것처럼 처리합니다. #은 URL의 앵커를 나타내므로이 메서드는 존재하지 않는 _40208이라는 파일을 찾습니다. 당신은 해결책도 간단하다의는 UI 대화 상자이 경우 문자열을

를 반환 (JFileChooser를)에서 받고있다 파일로 인수를

Document doc = reader.read(URLEncoder.encode("_40208#1159SOV.xml", "UTF-8")); 

경로를 인코딩 할 수 있습니다 : SAXReader provides an overloaded method which uses a File reference

Document doc = reader.read(filechooser.getSelectedFile()); 
+0

흠 이제 파일 이름이 정상적으로 인쇄되지만 SAX는 이러한 파일을 찾을 수 없다는 예외를 throw합니다. charset을 사용하여 Windows에서 작업하고 이미 Windows-1251을 시도 할 수도 있습니다. 및 windows-1252 – user1722669

+0

응용 프로그램 경로에 파일이 있습니까? – Reimeus

+0

아니요, 파일 경로가 UI 대화 상자에서 반환됩니다. – user1722669

0

필자의 경우이 문제에 대한보다 쉬운 해결책을 찾을 수 있습니다. reader.read(new File(path)); 작품 어떤 URLEncoder 와도 완벽합니다. 누군가 도움이되기를 바랍니다.

관련 문제