2011-08-17 17 views
1

私の要件は、エクスポートボタンがあり、データベース内のデータがロードされてから、.csv、.doc、または.htmlファイルに変換され、開いたり保存したりできますこれをファイルに変換してローカルパスに保存し、SFTPサーバーにアップロードしてloaclパスから削除する必要があります。私のコードは、私は、ファイルを作成することができるが、私が間違っファイルを作成してからJavaで削除する

をやっていますどこフォームにloaclパスを削除することができませんでしアップロードが完了した後に...誰も私を伝えることができ

public String a(String tableName, String format,String jsondataAsString,String jsonKeyName,String userName, 
      String password, String hostName,String remotePath) throws IOException{ 
     userName="a"; 
     password="a"; 
     hostName="10.100.10.100"; 
     remotePath="/tmp"; 
     System.out.println("TableName-->" +tableName); 
     System.out.println("Format-->" +format); 
     System.out.println("JsonData-->" +jsondataAsString); 
     System.out.println("userName-->" +userName); 
     System.out.println("password-->" +password); 
     System.out.println("hostname-->" +hostName); 
     System.out.println("RemotePath-->" +remotePath); 
     String mimeType = null; 
     String fileName = null; 
     String seperator = null;   
     String lineSeperator = null; 
     boolean isFileTransferComplete=true; 
     OutputStream f1 =null; 

     if (format.equalsIgnoreCase("CSV")) { 
      fileName = tableName + ".csv"; 
      mimeType = "application/CSV"; 
      seperator = ","; 
      lineSeperator = "\n"; 



     } else if (format.equalsIgnoreCase("Word")) { 
      fileName = tableName + ".doc"; 
      mimeType = "application/msword"; 
      seperator = " "; 
      lineSeperator = "\n\n"; 
     } else { 

      fileName = tableName + ".html"; 
      mimeType = "application/html"; 
      seperator = "  "; 
      lineSeperator = "<br><br>"; 
     } 
     String localfilePath="D:/aaa/" +fileName; 
     String error=""; 
    try{ 
     String data = convertJsonToString(jsondataAsString, seperator, jsonKeyName,lineSeperator,format); 
     if (data == null || data.length() == 0) { 
      data = "[BLANK]"; 
     } 
     boolean isFileTobeDeleted=true; 
     ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 
     System.out.println("Buffer-->" +buffer); 

     buffer.flush(); 
     buffer.write(data.getBytes()); 

     f1 = new FileOutputStream(localfilePath); 
     buffer.writeTo(f1); 

     isFileTransferComplete = new SFTPHandler(hostName, 
       PicoEmsGuiConstants.SFTP_Port, userName, password) 
       .uploadFile(remotePath,localfilePath); 
     System.out.println("FileTransfer" +isFileTransferComplete); 

      File target = new File(localfilePath); 

      target.delete(); 


     } 
     System.out.println("isFileTobeDeleted" +isFileTobeDeleted); 



     }catch(Exception e){ 
     System.out.println("Exception :::>" +e.getMessage()); 

     }finally{ 
      f1.close(); 
     } 

     return isFileTransferComplete+"--"+ remotePath; 

    } 

.....このように書きます

+0

一時ファイルが必要な場合は、APIを参照してください。 – Ingo

+0

なぜ 'f1.close()'が質問から削除されたのですか? – andyb

答えて

4

ストリームを閉じてから削除しようとしないでください。

finally { 
    f1.close(); 
    if(file != null && file.exists()) { 
     file.delete(); 
    } 
} 
関連する問題