我想将我的控制台行打印到txt文件。我想在else语句中执行此操作。但是它只写入文件的最后一条记录。如何修复它?当我尝试缓冲读卡器时,它无法解决我的问题。谢谢大家。祝你有个美好的一天。你有什么解决方案可以给我建议吗?
for(int iy=0;iy<arr.length;iy++){
if( arr[iy].contains("•") || arr[iy].contains("Contact") || arr[iy].contains("@") || arr[iy].contains("Activities and Societies") || arr[iy].contains("Page")){
}
else if(arr[iy].contains("Summary")){
//System.out.println(arr[iy]+"enes");
while(exit==false){
iy++;
if(arr[iy].contains("Experience")){
exit=true;
}
}
}
else if(arr[iy].contains("Skills") || arr[iy].contains("Languages")){
while(exit==false){
iy++;
if(arr[iy].contains("Education")){
exit=true;
}
}
}
else
{
System.out.println(arr[iy]);
try(PrintWriter bw = new PrintWriter(new FileWriter(FILENAME2))){
bw.write(arr[iy]);
//out.newLine();
bw.flush();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
看起来你在循环的每一步重新创建PrintWriter
,这会覆盖文件。在循环之前创建它并在之后关闭它。
答案 1 :(得分:0)
您的代码非常复杂,但是编写最后一行的原因很明显 - 您打算输出要输出的每一行的文件,并覆盖该文件的先前内容。
您不应该为每一行打开和关闭文件。在循环之前打开它一次,并在循环之后关闭它。
如果多次打开和关闭文件确实有意义,您应该在追加模式下打开var string = "This is a test. This is only a test. Not an Exam"
if string.range(of:"ex") != nil {
print("yes")
}
if string.range(of:"ex", options: String.CompareOptions.caseInsensitive) != nil {
print("yes")
}
(使用FileWriter
)。