gpt4 book ai didi

java - 无法将数据写入文件

转载 作者:太空宇宙 更新时间:2023-11-04 12:44:53 25 4
gpt4 key购买 nike

我是这个网站的新手,一般来说是java和编程。你可能会说我是个菜鸟。所以这是我的问题:我刚刚开始使用文件,所以我尝试了各种练习。假设我想在一个文件中写入很多数字。如果我使用此代码,一切正常:

    int value = 0;
int max = 10000;
try {
FileWriter wr = new FileWriter("newFile.txt");
for (int i = 0; i < max; i++){
value = i;
wr.write(value + " ");
}
wr.close();
} catch (Exception e){
println(e);
}

使用所有预期的数字创建 newFile.txt。但如果使用此代码写入从 0 到 9 的随机选择的数字,

    int value = 0;
int max = 10000;
try {
FileWriter wr = new FileWriter("newFile.txt");
for (int i = 0; i < max; i++){
value = RandomGenerator.getInstance().nextInt(0,9);
wr.write(value + " ");
}
wr.close();
} catch (Exception e){
println(e);
}

newFile.txt 已创建,但填充为 << ‱‷‱‰′‱′‵‶‰′‸′‵‸‸″‰‰‵‶‵‱‶‵ >>。

请注意,RandomGenerator 是 acm 包中的一个类,该包是我的学习书在示例中使用的包。

我尝试了不同的类,例如 BufferedWriter 和 PrintWriter,但得到了相同的输出。

所以,我在这里遗漏了什么吗?我实在想不通。

谢谢。

编辑:感谢您的快速回复。我已经尝试通过 System.out.printlnwr.write 获取输出。屏幕输出符合预期,但文件输出却并非如此。但更奇怪的事情发生了:我再次运行它,但范围从 0 到 10。我唯一改变的是这一行:

value = RandomGenerator.getInstance().nextInt(0,10);

现在 newFile.txt 符合预期..有什么想法吗??

谢谢

最佳答案

我认为您的代码没有什么问题。

稍作修改的版本,无需随机库即可工作:

int max = 10000;
Random random = new Random();

try(FileWriter wr = new FileWriter("newFile.txt")) {
for (int i = 0; i < max; i++){
int value = random.nextInt(9);
wr.write(value + " ");
}
} catch (Exception e){
e.printStackTrace();
}

当我运行上面的代码时,我得到了预期的文件,其中包含大量从 0 到 8 的数字。

如果您的 Random 库确实返回 int,那么您绝对应该获取文件中的数字,即使在错误的范围内。

也许问题出在您可视化文件时?它可能是编码,因为此代码使用您平台的默认编码(这可能会很奇怪地导致此问题)。

尝试使用它作为写入器以确保文件是使用 UTF-8 写入的:

try(OutputStreamWriter wr = new OutputStreamWriter(
new FileOutputStream("newFile.txt"), "UTF-8")) {

关于java - 无法将数据写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36432111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com