【问题标题】:JavaFX FileChooser dir and file name passed to FileOutputStreamJavaFX FileChooser 目录和文件名传递给 FileOutputStream
【发布时间】:2018-03-11 10:18:55
【问题描述】:

我有一个下载文件按钮,单击该按钮后将从网站下载文件并将其保存到通过 FileChooser 选择的位置和名称,但我正在努力将文件位置和名称传递给 FileOutputStream。

请问大家有什么建议吗?

谢谢,

保罗

这是我的代码:

public void GetFile()
{
    try
    {
        URL url = new URL("https://www.myURL.com/MyFile.xlsx");
        FileChooser saveAs = new FileChooser();
        saveAs.setInitialFileName("MyFile.xlsx");
        saveAs.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("Excel Files", "*.xlsx"));
        saveAs.showSaveDialog(null);
        System.out.println("File name and location set");
        saveFile(url,saveAs.getInitialDirectory());
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
}


public void saveFile(URL url, File saveAs) throws IOException {
    System.out.println("opening connection");
    InputStream in = url.openStream();
    FileOutputStream fos = new FileOutputStream(saveAs);
    System.out.println("Reading file...");
    int length = -1;
    byte[] buffer = new byte[1024];
    while ((length = in.read(buffer)) > -1) {
        fos.write(buffer, 0, length);
    }

    fos.close();
    in.close();
    System.out.println("File downloaded");
}

【问题讨论】:

    标签: javafx fileoutputstream filechooser


    【解决方案1】:

    使用FileChooser.showSaveDialog的返回值代替initialDirectory属性值:

    File outputFile = saveAs.showSaveDialog(null);
    
    if (outputFile != null) {
        System.out.println("File name and location set");
        saveFile(url, outputFile);
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 1970-01-01
      • 2016-06-25
      • 2011-09-04
      • 1970-01-01
      • 2012-09-13
      相关资源
      最近更新 更多