Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA—从一个文件读取并写入另一个文件_Java_File_Io - Fatal编程技术网

JAVA—从一个文件读取并写入另一个文件

JAVA—从一个文件读取并写入另一个文件,java,file,io,Java,File,Io,这是我的代码,我不能让它正常工作,它只得到了第一个文本文件中3行中的最后一行,并且只大写,我不明白为什么 import java.util.Scanner; import java.io.*; public class AllCapitals { public static void main(String[] args) { String readLine; String inFilePath = "/home/file.t

这是我的代码,我不能让它正常工作,它只得到了第一个文本文件中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”

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

    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()那没用
  • 为每行添加换行符,否则所有大写内容将位于同一行

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

    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()那没用
  • 为每行添加换行符,否则所有大写内容将位于同一行