2016-07-22 3 views
0

Tomcat 서버가있는 이전 프레임 워크 EchoStudio3이있는 Java 프로젝트에서 작업합니다. 생성 된 CSV 파일을 다운로드하려고 시도하지만 대신 이상한 파일이 표시됩니다. 나는이 뜻을 알고하지 않습니다, 나는 내 코드를 테스트 로컬 Windows 환경에서 Tomcat 서버를 가지고Java 파일 경로 문제

String dir = System.getProperty("user.dir"); 
File filename = new File(dir, "reports.csv"); 
FileWriter fw = new FileWriter(filename); 

fw.append("User");name 
fw.append(','); 
fw.append("Count"); 
fw.append('\n'); 
fw.append("Bob"); 
fw.append(','); 
fw.append("20"); 
fw.append('\n'); 
fw.append("John"); 
fw.append(','); 
fw.append("5"); 
fw.append('\n'); 
fw.append("Mike"); 
fw.append(','); 
fw.append("2"); 
fw.append('\n'); 
fw.append("Total"); 
fw.append(','); 
fw.append("27"); 
fw.append('\n'); 

try { 
    fw.flush(); 
    fw.close(); 
    URL url = new URL("file:///" + dir); 
    FileURLConnection urlConn = (FileURLConnection) url.openConnection(); 
    String contentType = "text/csv"; 
    ApplicationInstance.getActive().enqueueCommand(new DownloadCommand(
       new FileDownload(contentType,"inline", 
       filename.getAbsolutePath(), 
       urlConn.getInputStream()))); 

} catch (Exception e) { 
    System.out.println("Error while flushing/closing fileWriter !!!"); 
    e.printStackTrace(); 
} 

하지만 배포 환경은 리눅스 환경이 될 것입니다 : 여기

내 코드입니다 또 다른 문제가 생겼지 만 지금은 그렇게해야한다고 생각합니다. 위의 코드에서 다운로드 한 파일의 이름은 "C-Program FilesApache Software Foundationapache-tomcat-7.0.64binreports.csv"이며 Tomcat 파일 목록 (bootstrap.jar, catalina.bat, ...)이 있습니다. 그리고 그것은 생성 된 파일이 bin 디렉토리에 있기 때문에 정말로 이상합니다. 그러나이 파일은 다운로드 한 사람이 아닙니다 ...

파일 경로에서 문제가 발생합니까?

URL url = new URL("file:///" + dir + "/reports.csv"); 
FileURLConnection urlConn = (FileURLConnection) url.openConnection(); 
String contentType = "text/csv"; 
ApplicationInstance.getActive().enqueueCommand(new DownloadCommand(
    new FileDownload(contentType,"inline", 
        filename.toString(), 
        urlConn.getInputStream()))); 
+0

"파일 : ///" –

+1

'filename.getAbsolutePath()'를'filename.getName()'으로 변경 하시겠습니까? – Aaron

답변

0

는 당신의 도움을 주셔서 감사합니다, 올바른 코드는 이것이다 + DIR + "/reports.csv는"너무 슬래시가 필요, 지금은 좋은 파일이 ,하지만 여전히 전체 파일 경로 "C-Program FilesApache Software Foundationapache-tomcat-7.0.64binreports.csv"로 파일 이름을 얻습니다.
+0

파일을 URL로 변환하는 올바른 방법이 아닙니다. 많은 문자 (예 : 공백)는 URL에 허용되지 않습니다. 파일을 URL로 변환하는 정확한 방법은'filename.toURI(). toURL()'입니다. 이것은 호환되는 URL을 만들기 위해 모든 예약 된 문자를 적절하게 이스케이프합니다. – VGR