2016-07-22 22 views
0

Tomcat Serverを使用して、古いフレームワークEchoStudio3でJavaプロジェクトを処理します。 生成されたCSVファイルをダウンロードしようとしましたが、代わりに奇妙なファイルがあります。ここで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(); 
} 

これは意志ならば、私は知らない、私は自分のコードをテストするローカルのWindows環境でTomcatサーバーを持っていますが、展開環境は、Linux環境となります別の問題を引き起こしますが、私はあなたが今すべきだと思います。 上記のコードのダウンロードファイルは、 "C-Program FilesApache Software Foundationapache-7.0.64binreports.csv"という名前で、Tomcatファイル(bootstrap.jar、catalina.bat、...)のリストが含まれています。生成されたファイルがbinディレクトリに存在するため、これは本当に奇妙ですが、ダウンロードした人はこのファイルではありません。

問題はファイルパスから発生していますか?

+0

「ファイル:///」+ DIR +「/reports.csv」は、あまりにもスラッシュが必要、私は今良いのファイルを持っています私はまだ完全なファイルパス "C-Program FilesApache Software Foundationapache-tomcat-7.0.64binreports.csv"でファイル名を取得します。 –

+1

'filename.getAbsolutePath()'を 'filename.getName()'に変更しますか? – Aaron

答えて

0

は正しいコードはこれで、あなたの助けをありがとう:

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

これは、ファイルをURLに変換する正しい方法ではありません。多くの文字(スペースなど)はURLには使用できません。ファイルをURLに変換する正しい方法は 'filename.toURI()。toURL()'です。これは準拠したURLを作成するためにすべての予約文字を適切にエスケープします。 – VGR