问:

为什么java往文件中输入内容时总是有其他字符

答:
当Java程序往文件中写入内容时,不仅写入了可见的字符,还会写入一些控制字符。
主要原因有以下几点:
1. 行分割符
最明显的就是行分割符。Windows系统中是CRLF(0x0D0A),Linux/Unix系统中是LF(0x0A)。Java会根据不同的操作系统,写入对应的行分割符。
2. 字节序标记
如果写入的内容包含非ASCII字符,比如中文、日文等,就会写入UTF字节序标记0xEFBBBF。这是为了标记该文件编码方式为UTF。
3. 缓冲区效率
写入文件并不直接写入,而是先缓冲到内存缓冲区,一旦缓冲区满了才刷新到硬盘文件中。这种方式提高了效率。但为了区分缓冲区内容,也会写入一些控制字符。
4. 对齐效率
写入内容对齐也会增加效率。但是对齐时也会写入filler字节。
5. 文件后缀不一定准确
文件名通常使用.txt后缀表示文本文件,但实际上文件内写入的不仅仅只是文本内容。文件名后缀不一定能完全表达文件的内容。
所以, Java程序写文件时,可见字符只是冰山一角。为了兼容性、效率等方面,还会写入各种控制字符和填充字节。这些内容通常不影响程序使用,但若要人工查看内容,就需要注意去除这些控制字符。
希望以上解释能回答您的疑问! 更高效的方式是使用过滤器读取文件内容的可见字符。