【问题标题】:Creating a text file filled with random integers in Java在 Java 中创建一个填充随机整数的文本文件
【发布时间】:2023-04-09 22:40:01
【问题描述】:

也许是愚蠢的问题。但我尝试用 512 个整数填充一个空文本文件,每个整数都在新行上。我能够将它们随机化并将它们写入文件,但它们会产生大量我想要的数字。谁能帮我更正我的代码?

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.*;

public class Randomizer {

      public static void main() {
        // The target file
        File out = new File("random.txt");
        FileWriter fw = null;
        int n = 512;
        // Try block: Most stream operations may throw IO exception
        try {
            // Create file writer object
            fw = new FileWriter(out);
            // Wrap the writer with buffered streams
            BufferedWriter writer = new BufferedWriter(fw);
            int line;
            Random random = new Random();
            while (n > 0) {
                // Randomize an integer and write it to the output file
                line = random.nextInt(1000);
                writer.write(line + "\n");
                n--;
            }
            // Close the stream
            writer.close();
        } catch (IOException e) {
            e.printStackTrace();
            System.exit(0);
        }
    }
}

运行结束时random.txt的内容: 9463765593113665333437829621346187993554694651813319223268147794541131427390等

【问题讨论】:

  • 您使用的是什么操作系统?在 Windows 上,换行符是 \r\n,而不是 \n
  • 我猜输出是正确的,你是用记事本查看文件内容吗?一些编辑器不会将\n 读作换行符,而是使用\r\n
  • 您使用的是哪个版本的 Java?

标签: java file text file-io random


【解决方案1】:
            writer.write(line + "\n");

不要使用它。

您使用BufferedWriter,而BufferedWriter 具有.newLine()

因此替换为:

writer.write(line);
writer.newLine();

【讨论】:

    【解决方案2】:

    您似乎使用的是 Windows - Unix/Windows/Classic Mac 上的行尾不同。

    对基于 Windows 的系统尝试 \r\n,或尝试在写字板而不是记事本中打开 .txt 文件 - \n 通常用于 Unix 系统,并且已知 Windows 附带的记事本应用程序不能很好地处理它们.

    【讨论】:

      【解决方案3】:

      javadoc 中检查这一行是否为BufferedWriter

      提供了一个newLine() 方法,它使用系统属性line.separator 定义的平台自己的行分隔符概念。并非所有平台都使用换行符 ('\n') 来终止行。因此,调用此方法终止每个输出行优于直接写入换行符。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-25
        • 2012-03-24
        • 2021-06-27
        相关资源
        最近更新 更多