如何在java中的.txt文件中写入或存储字符串数组

Fer*_*usi 2 java arrays string filewriter bufferedwriter

我想在 .txt 文件中写入字符串数组。但是在运行我的代码后,我得到了一个空文件。这是我的代码。

public void DataSave() throws IOException {
        File fout = new File("Data.txt");
        FileOutputStream fos = new FileOutputStream(fout);

        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));

        String[] numberOfProperty = new String[3];
        numberOfProperty[0] = "1";
        numberOfProperty[1] = "3";
        numberOfProperty[2] = "4";
        for (int i = 0; i < numberOfProperty.length; i++) {
            bw.write(numberOfProperty[i]);
            bw.newLine();
        }
    }
Run Code Online (Sandbox Code Playgroud)

我的代码有什么问题我无法理解。编译器没有显示错误。请帮忙。所有答案将不胜感激。

Har*_*ekh 5

public void DataSave() {
    File fout = new File("Data.txt");
    try (FileOutputStream fos = new FileOutputStream(fout); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));) {
        String[] numberOfProperty = new String[3];
        numberOfProperty[0] = "1";
        numberOfProperty[1] = "3";
        numberOfProperty[2] = "4";
        for (String s : numberOfProperty) {
            bw.write(s);
            bw.newLine();
        }
    } catch (IOException ignored) {

    }
}
Run Code Online (Sandbox Code Playgroud)

您需要关闭BufferedReader. 更好的解决方案是使用 try-with-resources,因此您无需担心关闭。

您可以在 try-with-resources 中拥有多个资源,以;.


Java 13+,您可以使用Path.of()

public void DataSave() {
    File fout = new File("Data.txt");
    try (FileOutputStream fos = new FileOutputStream(fout); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(fos));) {
        String[] numberOfProperty = new String[3];
        numberOfProperty[0] = "1";
        numberOfProperty[1] = "3";
        numberOfProperty[2] = "4";
        Files.write(Path.of("Data.txt"), Collections.singletonList(numberOfProperty));
    } catch (IOException ignored) {

    }
}
Run Code Online (Sandbox Code Playgroud)

您还可以将数组写在一行中:

String[] numberOfProperty = {"1", "2", "3"};
Run Code Online (Sandbox Code Playgroud)