Java 程序到 read/write 文件,如记事本++,它不会更改现有文本编码并将新文本附加到文件
Java program to read/write file like notepad++ that is it will not change existing text encoding and append new text to file
我正在尝试通过 java 程序附加文件以读取文件 我正在使用扫描仪
inputFile = new Scanner(new FileInputStream("myfile"), "UTF-8");
读取整个文件后,我将其存储在 this.existingData=new StringBuilder(100000);
字符串生成器上并关闭文件 inputFile.close();
。
用于写入我正在使用
outFile = new PrintWriter(new OutputStreamWriter(new FileOutputStream("myfile"), StandardCharsets.UTF_8));
我将在此existingData
中添加程序生成的数据并将其写入
outFile.print(existingData);
outFile.flush();
并关闭文件
outFile.close();
所以在那之后,如果我尝试在 svn 中提交文件,补丁文件会显示整个文件已更改,而不仅仅是新添加的数据。 svn diff 仅显示新添加的更改。
如果我使用记事本++附加生成的数据,那么在补丁文件中只显示添加的内容。
我想将我的 java 程序制作成 read/write 像 notpad++ 这样的文件,它不会更改现有的文本编码并将新文本附加到文件中。
问题是:你总是使用UTF-8来读写。而且您读取的文件可能使用非常不同的编码编写。
尝试使用以下库之一确定正确的编码:juniversalchardet or ICU 并使用正确的编码编写文本。
我正在尝试通过 java 程序附加文件以读取文件 我正在使用扫描仪
inputFile = new Scanner(new FileInputStream("myfile"), "UTF-8");
读取整个文件后,我将其存储在 this.existingData=new StringBuilder(100000);
字符串生成器上并关闭文件 inputFile.close();
。
用于写入我正在使用
outFile = new PrintWriter(new OutputStreamWriter(new FileOutputStream("myfile"), StandardCharsets.UTF_8));
我将在此existingData
中添加程序生成的数据并将其写入outFile.print(existingData);
outFile.flush();
并关闭文件outFile.close();
所以在那之后,如果我尝试在 svn 中提交文件,补丁文件会显示整个文件已更改,而不仅仅是新添加的数据。 svn diff 仅显示新添加的更改。 如果我使用记事本++附加生成的数据,那么在补丁文件中只显示添加的内容。
我想将我的 java 程序制作成 read/write 像 notpad++ 这样的文件,它不会更改现有的文本编码并将新文本附加到文件中。
问题是:你总是使用UTF-8来读写。而且您读取的文件可能使用非常不同的编码编写。
尝试使用以下库之一确定正确的编码:juniversalchardet or ICU 并使用正确的编码编写文本。