有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在Java中将数组的内容输出到文本文件中?

我想知道如何将数组的整数输出到由不同行分隔的文本文件中。 这是下面的相关代码,但每次我运行程序时,都会创建文件,但不会将任何数据保存到文件中

public static void printToFile(double[] gravity)throws IOException
{
    PrintWriter outputFile = new PrintWriter (new FileWriter("gravitydata.txt", true));
    for(int a = 0; a < 9; a++)
    {
         outputFile.println(gravity[a]);
    }
}

共 (3) 个答案

  1. # 1 楼答案

    您必须close()文件(关闭PrintWriter将关闭FileWriter将关闭文件)。你可以用^{}来帮你做

    public static void printToFile(double[] gravity) throws IOException
    {
        try (PrintWriter outputFile = new PrintWriter(
                new FileWriter("gravitydata.txt", true))) {
            for(int a = 0; a < gravity.length; a++){
                outputFile.println(gravity[a]);
            }
        }
    }
    

    或者旧的finally块之类的

    public static void printToFile(double[] gravity) throws IOException
    {
        PrintWriter outputFile = new PrintWriter(
                new FileWriter("gravitydata.txt", true))
        try {
            for(int a = 0; a < gravity.length; a++){
                outputFile.println(gravity[a]);
            }
        } finally {
            outputFile.close();
        }
    }
    

    无论哪种情况,都应该使用array length属性,而不是硬编码9

  2. # 2 楼答案

    如果希望利用Java8中的内置函数(避免编写自己的文件处理和循环),以下方法可能是很好的

    public static void printToFile(double[] gravity) throws IOException {
        // First, convert the double[] to a list of Strings
        final List<String> doublesAsStrings = Arrays.stream(gravity)
                .boxed() // Box it to Doubles
                .map(g -> String.valueOf(g)) // Convert each Double to a String
                .collect(Collectors.toList()); // Create a List<String>
    
        // Then, write the list to the file
        Files.write(new File("gravitydata.txt").toPath(), doublesAsStrings);
    }
    

    与之前的答案相比,有一些不同之处:

    • Files类用于编写数据,这很方便,因为它处理try/catch等
    • 无需外部循环,因为流式API:s用于创建要打印的字符串序列
    • 它又短又紧凑;)
  3. # 3 楼答案

    {
        PrintWriter outputFile = new PrintWriter (new FileWriter("gravitydata.txt", true));
        for(int a = 0; a < 9; a++)
        {
            outputFile.println(gravity[a]);
        }
        outputFile.close();
    
    }