将从Java代码生成的文件保存到用户定义的位置,如下载功能

时间:2014-10-24 08:12:32

标签: java file save jfilechooser

我有一个要求,我必须保存一个使用我的java代码生成的文件,但是当我想要保存它时,我想让用户决定他们想要保存它的位置。就像下载选项一样我们从internet下载文件。我尝试使用JFileChooser。但它不能按照我希望的方式工作。有人可以帮忙。 我正在创建像

这样的文件
try{
    writer= new PrintWriter("F://map.txt", "UTF-8");
}catch(Exception e){
    e.printStackTrace();
}

JFileChooser fileChooser = new JFileChooser();
fileChooser.setDialogTitle("Specify a file to save");   
JFrame parentFrame = new JFrame();

int userSelection = fileChooser.showSaveDialog(parentFrame);

if (userSelection == JFileChooser.APPROVE_OPTION) {
    File fileToSave = fileChooser.getSelectedFile();
    System.out.println("Save as file: " + fileToSave.getAbsolutePath());
}

1 个答案:

答案 0 :(得分:1)

写入文件

请注意,如果该文件存在,则会覆盖该文件,如果存在,将不会自动提示您输入sh * t 。你必须自己检查它是否存在。

byte dataToWrite[] = // source
FileOutputStream out = new FileOutputStream("the-file-name");
out.write(dataToWrite);
out.close();

在你的情况下,这可能会读作

if (userSelection == JFileChooser.APPROVE_OPTION) {
    File fileToSave = fileChooser.getSelectedFile();
    System.out.println("Save as file: " + fileToSave.getAbsolutePath());

    FileInputStream in = null;
    FileOutputStream out = null;

    try {

        in = new FileInputStream(source);
        out = new FileOutputStream(fileToSave.getPath());

        byte[] buffer = new byte[1024];
        int length;
        while ((length = in.read(buffer)) > 0) {
            out.write(buffer, 0, length);
        }

    }
    finally {
        if (in != null) in.close();
        if (out != null) out.close();
    }
}

请注意,这是未经测试的代码,我对这些内容没有真正的例程。你应该谷歌“java写文件”或类似的东西,如果这被证明是错误的代码:)