【问题标题】:Add text to the file if exist and create file with text if not in java如果存在,则将文本添加到文件中,如果在 java 中不存在,则使用文本创建文件
【发布时间】:2017-05-28 16:31:49
【问题描述】:

我需要将文本添加到现有文件(如果用户在开始时选择文件 - PUSH READ BUTTON)

fileread = fileChooser.showOpenDialog(primaryStage);

或者如果文件不存在(用户不要从读取按钮开始选择文件),同样的保存按钮,打开一个

 File filesave = fileChooser.showSaveDialog(primaryStage);

如果用户没有选择,则一如既往地保存文件。

我有方法 savefield - 从 HTMLEditor javaFX 保存文本

@FXML public void savefiled() throws FileNotFoundException, IOException {
      Stage primaryStage = null;
      String stringHtml = HTMLEditor_go.getHtmlText();

if(fileread.getPath().equals("")||fileread.getPath() == null){ //this line gives me a NULL

    Files.createDirectories(Paths.get("./src/path/my_text/"));
    FileChooser fileChooser = new FileChooser();
        FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("HTML files (*.html)", "*.html");
        fileChooser.getExtensionFilters().add(extFilter);

   File defaultDirectory = new File(System.getProperty("user.dir")+"/src/path/my_text/");
    fileChooser.setInitialDirectory(defaultDirectory);
    File filesave = fileChooser.showSaveDialog(primaryStage);
    filesave.createNewFile();
    SaveFile(stringHtml, filesave);

}else{ File fileget = new File(fileread.getPath()); 
fileget.createNewFile();  
SaveFile(stringHtml, fileget);} }

保存文件是

private void SaveFile(String content, File file){
try {Writer write = new BufferedWriter (new FileWriter(file));
     write.write(content);
     write.close(); 
    } catch (IOException ex) {    }}

【问题讨论】:

  • 无需 if 语句即可正常工作。
  • 如果用户一开始没有选择要打开的文件,你将fileread初始化成什么?你能解释一下“这条线给了我一个NULL”是什么意思吗?你的意思是它会抛出一个NullPointerException
  • 怎么办?他可以选择文件,也可以不选择。如果 File fileread == "" || null 然后创建新文件,其中包含他在 HTMLEditor 中编写的文本。我只是在那个方向上想的,因为我是新手。
  • 你能回答我之前评论中的问题吗?
  • 是的,它给了我一个 NullPointerException,它应该是什么 - 那我为什么选择 if(){}

标签: java javafx html-editor


【解决方案1】:

据我所知,如果用户没有选择要打开的文件,那么fileread 仍将为空。所以你只需要测试一下。替换

if(fileread.getPath().equals("")||fileread.getPath() == null){

    // ...
}

if (fileread == null) {
    // ...
}

(或可能

if (fileread == null || fileread.getPath().equals("") || fileread.getPath() == null) {
    // ...
}

虽然我真的不明白后两个测试中的任何一个如何评估为真)。

【讨论】:

  • @Kolia “相同”是什么意思??? if (fileread == null) 不可能抛出空指针异常,因此您不可能从该版本的代码中得到相同的结果。
  • 它工作 _ _ 谢谢。 NULL 在另一个部分中
猜你喜欢
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 1970-01-01
  • 2014-07-20
  • 2012-03-26
  • 1970-01-01
相关资源
最近更新 更多