Java 我不知道的代码';我不了解I/O中的写入方法

Java 我不知道的代码';我不了解I/O中的写入方法,java,io,Java,Io,我刚开始学习IO,但这段代码有些地方我不明白: public static void main(String[] args) throws IOException { FileReader reader = new FileReader("C://blablablal.txt"); FileWriter writer = new FileWriter("C://blabla.txt"); int c; while ((c = reader.

我刚开始学习IO,但这段代码有些地方我不明白:

public static void main(String[] args) throws IOException {


    FileReader reader = new FileReader("C://blablablal.txt");
    FileWriter writer = new FileWriter("C://blabla.txt");


        int c;
        while ((c = reader.read()) != -1) {
            writer.write(c);

        }
    reader.close();
    writer.close();

}
我很乐意解释一下write方法(在while循环中写入“c”(一个int)实际上是如何在txt文件中将其作为字符或字符串写入的。
谢谢

首先,如果路径正确,FileReader将准备在给定的文件路径上读取文件内容。
其次,如果文件有要写的内容,FileWriter将准备将内容写入文件。

接下来,读取器从文件中读取内容,直到文件结束(-1),并使用writer写入另一个文件

至少读写器将关闭


如果您有任何疑问,请在此处进行注释。

首先,如果路径正确,FileReader将准备在给定的文件路径上读取文件内容。
其次,如果文件有要写的内容,FileWriter将准备将内容写入文件。

接下来,读取器从文件中读取内容,直到文件结束(-1),并使用writer写入另一个文件

至少读写器将关闭

如果您有任何疑问,请在此处进行注释。

方法将
int
(32位)转换为
char
(16位)。然后根据编码将字符转换为适当的字节。在这种情况下,所使用的编码是平台默认编码,但您应该始终指定所使用的编码,以确保其在任何环境中都能正常工作

它不把
char c
作为参数的原因显然是,现在纠正起来太晚了。

方法将
int
(32位)转换为
char
(16位)。然后根据编码将字符转换为适当的字节。在这种情况下,所使用的编码是平台默认编码,但您应该始终指定所使用的编码,以确保其在任何环境中都能正常工作

它不将char c作为参数的原因显然是,现在更正该参数为时已晚。

reader.read()一次从文件中读取一个字符。这似乎有点令人困惑,因为您正在将中的字符作为整数值读取,但这意味着整数值实际上等于一个字符。当文件中没有更多要读取的字符时,将返回-1,这就是您知道已到达文件末尾的方式

writer.write的行为方式相同。它将字符的整数值写入文件

这里有一个链接,可以链接到一个很好的教程。 这是给你的

reader.read()一次从文件中读取一个字符。这似乎有点令人困惑,因为您正在将中的字符作为整数值读取,但这意味着整数值实际上等于一个字符。当文件中没有更多要读取的字符时,将返回-1,这就是您知道已到达文件末尾的方式

writer.write的行为方式相同。它将字符的整数值写入文件

这里有一个链接,可以链接到一个很好的教程。
这是给你的

它读取字节-1表示不再有任何内容可读取。它读取字节-1意味着没有什么可读的了。