Java 写入文件时出错-它会加倍

Java 写入文件时出错-它会加倍,java,file,Java,File,很抱歉,这个标题听起来很不清楚,我只是不知道该怎么解释 所以,我试图从一个文件中读取一些行,修改它们,然后将它们添加到另一个文件中 这是原始文件: line number one line number two line number three 等等 但当要将其打印到另一个文件中时,我得到以下结果: line number one line number one line number one line number one line number one line number two l

很抱歉,这个标题听起来很不清楚,我只是不知道该怎么解释

所以,我试图从一个文件中读取一些行,修改它们,然后将它们添加到另一个文件中

这是原始文件:

line number one
line number two
line number three
等等

但当要将其打印到另一个文件中时,我得到以下结果:

line number one
line number one line number one
line number one line number one line number two
line number one line number one line number two line number two
这是我的密码

这是读取原始文件的部分

try {
   File f = new File(path);
   try (FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr)) {

   while ((aux=br.readLine())!=null) {

       //easyDecryp is the method that modifies the line.
       //there's nothing wrong with it.

       output += easyDecryp(aux)+"\n";
       aux="";
   }
   br.close();
   fr.close();
}       

} catch(IOException e) {
System.out.println("Error: "+e.getMessage());
}
在这里我写进了新的

try {
   File f = new File(path);
   try (FileWriter fw = new FileWriter(f); PrintWriter pw = new PrintWriter(fw)) {
       pw.println(output);
   } 
} catch(IOException e) {
   System.out.println("Error: "+e.getMessage());
}
输出是保存行的变量。都是。 它应该逐行读取,然后写入新文件,如下所示:

output = line1
//New line added
output = line1 \n line2

//Note the new line tag between every line

我认为,
easyDecryp(aux)
正在返回该行,然后您在上面执行
+=
。这就是您的行被复制的原因。

您的代码没有显示文件的写入位置。“输出”变量是什么?请在代码中说明如何将内容写入另一个文件。是否使用输出变量,即追加行内容。输出+=easyDecryp(辅助)+“\n”;您不需要显式的
Closeable.close()
在try with resources结束时,顺便说一句,easyDecryp(aux)插入重复的行。请在调试模式下验证它。