【问题标题】:Create a file and then delete in java创建一个文件,然后在java中删除
【发布时间】:2011-08-17 18:15:44
【问题描述】:

我的要求是有一个导出按钮,onclick加载数据库中的数据然后转换成.csv,.doc或.html文件,可以在这里打开或保存,这需要转换成文件,将其保存在本地路径并上传到SFTP服务器并从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;

    }

我可以创建文件,但上传完成后无法从 loacl 路径中删除...谁能告诉我哪里出错了

【问题讨论】:

  • 您可能需要一个临时文件,查看 API 是否支持它。
  • 为什么f1.close() 已从问题中删除?

标签: java javascript hibernate


【解决方案1】:

您不必关闭流然后尝试删除它吗?

finally {
    f1.close();
    if(file != null && file.exists()) {
        file.delete();
    }
}

【讨论】:

    猜你喜欢
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 2015-06-23
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2016-05-31
    相关资源
    最近更新 更多