打开文本文件的javafx gui,如何读取文本文件中的内容并编辑/保存文本文件

Pro*_*oob 5 java javafx

我在 javaFX 中编写了代码来打开一个文本文件,我的代码打开了它,但它没有显示文本文件中的任何内容。而且只是为了好玩,我想知道编辑文本文件然后使用用户刚刚所做的编辑保存文本文件的最佳方法是什么。任何提示将非常感谢。

这是我的代码:

 package blah;
 import javafx.application.Application;
 import javafx.stage.Stage;
 import javafx.stage.FileChooser;
 import javafx.scene.Scene;
 import javafx.scene.layout.VBox;
 import javafx.scene.layout.HBox;
 import javafx.scene.text.Text;
 import javafx.scene.control.Button;
 import javafx.event.ActionEvent;
 import javafx.event.EventHandler;
 import java.io.File;

public class blah
    extends Application {

private Text actionStatus;
private Stage savedStage;


public static void main(String [] args) {

    Application.launch(args);
}

@Override
public void start(Stage primaryStage) {
    Button open = new Button("open");
    open.setOnAction(new SingleFcButtonListener());
    HBox open1 = new HBox(10);
    open1.getChildren().addAll(open);
    Button save = new Button("Save");
            HBox save1 = new HBox(10);
            save1.getChildren().addAll(save);

    actionStatus = new Text();



    VBox vbox = new VBox(30);
    vbox.getChildren().addAll( open1,save1,  actionStatus);
    Scene scene = new Scene(vbox, 500, 300); 
    primaryStage.setScene(scene);
    primaryStage.show();
    savedStage = primaryStage;
}

private class SingleFcButtonListener implements EventHandler<ActionEvent> {

    @Override
    public void handle(ActionEvent e) {

        showSingleFileChooser();
    }
}

private void showSingleFileChooser() {

    FileChooser fileChooser = new FileChooser();
    File selectedFile = fileChooser.showOpenDialog(null);

    if (selectedFile != null) {

        actionStatus.setText("File selected: " + selectedFile.getName());
    }

   }

}
Run Code Online (Sandbox Code Playgroud)

GOX*_*LUS 6

您可以使用BufferedReaderScanner来读取文件:

缓冲阅读器

try (BufferedReader reader = new BufferedReader(new FileReader(new File("file.txt")))) {

        String line;
        while ((line = reader.readLine()) != null)
            System.out.println(line);

    } catch (IOException e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

扫描仪

try (Scanner scanner = new Scanner(new File("file.txt"))) {

        while (scanner.hasNext())
            System.out.println(scanner.next());

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
 }
Run Code Online (Sandbox Code Playgroud)

您可以使用PrintWriterFileWriter(带有 BufferedWriter)写入文件:

文件编写器

   FileWriter fw = new FileWriter(file.getAbsoluteFile());
   BufferedWriter bw = new BufferedWriter(fw);
   bw.write(content);
   bw.flush();
   bw.close();
Run Code Online (Sandbox Code Playgroud)

这里的例子:

打印作家

 PrintWriter writer = new PrintWriter("the-file-name.txt", "UTF-8");
 writer.println("The first line");
 writer.println("The second line");
 writer.flush();
 writer.close();
Run Code Online (Sandbox Code Playgroud)

取自这里