【问题标题】:JAVA - reading from a file and writing to another [duplicate]JAVA - 从文件读取并写入另一个[重复]
【发布时间】:2016-03-26 17:21:14
【问题描述】:

这是我的代码,我不能让它正常工作,它只从第一个文本文件中获取总共 3 行的最后一行,并且只大写,我不知道为什么

    import java.util.Scanner;
    import java.io.*;


    public class AllCapitals {
    public static void main(String[] args) {
        String readLine;

        String inFilePath = "/home/file.txt"; 
        String outFilePath = "/home/newFile.txt";


        try (BufferedReader bufferedReader = new BufferedReader(new FileReader(inFilePath))) {

        while ((readLine = bufferedReader.readLine()) != null) {
            readLine.toUpperCase();
            String upperC = readLine.toUpperCase();

            System.out.println(upperC);

            try (Writer writer = new BufferedWriter(new OutputStreamWriter(
                    new FileOutputStream(outFilePath), "utf-8"))) {
                    writer.write(upperC);
                }
            }
        } catch (IOException e) {
            System.out.println("Error.");
            e.printStackTrace();
        }
    }
}

编辑:忘了说功能。

我需要从一个普通的文本文件中读取 3 行,就像这样

    Hello.
    How are you ?
    Good, thank you !

输出应该全部大写,但我只得到最后一行“GOOD THANK YOU”

【问题讨论】:

    标签: java file io


    【解决方案1】:

    这是因为您在每次迭代中重新创建输出文件,同时从第一次读取行。 在开始阅读之前创建一次输出文件,例如:

        try (BufferedReader bufferedReader = new BufferedReader(new FileReader(inFilePath));
             Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFilePath), "utf-8"))
        ) {
            while ((readLine = bufferedReader.readLine()) != null) {
                String upperC = readLine.toUpperCase();
                System.out.println(upperC);
    
                writer.write(upperC);
                writer.write(System.lineSeparator());
            }
        } catch (IOException e) {
            System.out.println("Error.");
            e.printStackTrace();
        }
    

    其他一些改进:

    • 删除了无意义的行 readLine.toUpperCase();
    • 为每一行添加一个换行符,否则所有大写的内容都会在同一行

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 2021-01-23
      • 2012-12-02
      • 2015-04-02
      • 2018-10-30
      • 1970-01-01
      • 2015-08-04
      • 2013-04-12
      • 1970-01-01
      相关资源
      最近更新 更多