gpt4 book ai didi

Java FileWriter 输出一个问号

转载 作者:行者123 更新时间:2023-12-01 22:46:43 29 4
gpt4 key购买 nike

我一直找不到原因。我在这段代码中遇到的唯一问题是,当 FileWriter 尝试将新值放入文本文件时,它会放入一个 ?。我不知道为什么,甚至不知道这意味着什么。这是代码:

if (secMessage[1].equalsIgnoreCase("add")) {
if (secMessage.length==2) {
try {
String deaths = readFile("C:/Users/Samboni/Documents/Stuff For Streaming/deaths.txt", Charset.defaultCharset());
FileWriter write = new FileWriter("C:/Users/Samboni/Documents/Stuff For Streaming/deaths.txt");
int comb = Integer.parseInt(deaths) + 1;
write.write(comb);
write.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

这是 readFile 方法:

static String readFile(String path, Charset encoding) throws IOException {
byte[] encoded = Files.readAllBytes(Paths.get(path));
return new String(encoded, encoding);
}

此外,secMessage 数组是一个字符串数组,其中包含 IRC 消息中的单词,这些单词被拆分为各个单词,这样程序就可以逐字地对命令使用react。

最佳答案

您正在调用Writer.write(int) 。这会将单个 UTF-16 代码点写入文件,仅获取底部 16 位。如果您的平台默认编码无法表示您尝试写入的代码点,它将写入“?”作为替换角色。

我怀疑您实际上想要写出数字的文本表示形式,在这种情况下您应该使用:

write.write(String.valueOf(comb));

换句话说,将值转换为字符串,然后将其写出来。因此,如果 comb 为 123,您将在文件中写入三个字符(“1”、“2”、“3”)。

就我个人而言,我会避免使用 FileWriter - 我更喜欢使用 OutputStreamWriter 包装 FileOutputStream,这样您就可以控制编码。或者在 Java 7 中,您可以使用 Files.newBufferedWriter 来更简单地完成此操作。

关于Java FileWriter 输出一个问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25226162/

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