[英]How to write String from variable to text file
我的目标是从文本文件中读取行,检查它们是否是回文,然后将它们写入完全不同的文件。
现在,据我所见,问题在于 if 语句块,我成功检查了回文,但似乎无法将它们写入另一个文件,因为它们存储在变量中。
当我使用 BufferedWriter 写入方法并将参数设置为带引号的实际字符串时,一切正常。
我该如何解决这个问题?
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.PrintWriter;
public class Zadatak14 {
public static void main(String[] args) {
BufferedReader br;
try {
br = new BufferedReader(new FileReader("C:\\Users\\Luka\\Documents\\NetBeansProjects\\CS101-DZ14-14\\src\\zadatak14\\ulaz.txt"));
String line;
while ((line = br.readLine()) != null) {
String palindrome = new StringBuilder(line).reverse().toString();
BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\Luka\\Documents\\NetBeansProjects\\CS101-DZ14-14\\izlaz.txt"));
if (line.contains(palindrome)) {
System.out.println(line);
bw.write(line);
}
bw.close();
}
br.close();
} catch (FileNotFoundException e) {
System.out.println("Greska");
} catch (IOException ex) {
System.out.println("Greska");
}
}
}
BufferedWriter bw = new BufferedWriter
您正在为 input 中的每一行创建一个新作家,这肯定是您不想要的。 在打开阅读器之后,将作者的创作移到顶部。
br.close();
不是你怎么做的。 这就是你这样做的方式:
try (BufferedWriter bw = new BufferedWriter(new FileWriter("...."))) {
// code here
}
// no matter how you get out of this code, the file is closed.
您使用上述方法执行此操作的原因是,如果您从块中return
,则如果发生异常,则不会调用bw.close()
。 使用 try 构造,当代码从块中退出时,stream 将关闭,无论它如何执行。
} catch (FileNotFoundException e) {
System.out.println("Greska");
不是你怎么做的——异常包含很多有用的信息(至少有 4 件事,对于某些特定类型的异常更多:类型、消息、堆栈跟踪、原因),你把它全部扔进了垃圾箱。 将有关问题的信息扔进垃圾箱是个坏主意。 不。 正确的做法是将throws Exception
添加到您的public static void main(String[] args)
方法中,然后您根本不需要捕获。 如果必须,如果您没有处理问题的好方法,则 catch 块的正确主体是throw new RuntimeException("Uncaught", e);
. 这会保留所有信息,并且不会导致必须捕获异常的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.