繁体   English   中英

如何将字符串从变量写入文本文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM