filereader—在java中将文本文件数据转换为大写

eqfvzcg8  于 2021-07-07  发布在  Java
关注(0)|答案(2)|浏览(407)

我用java编写了一个程序来转换文件中的大写文本,但是它会删除数据而不是转换数据
但是,当我从一个文件中获取数据并将转换后的数据写入另一个文件时,它可以正常工作。
所以我有一个问题,我怎么能用一个文件来做这个。
下面是我的代码,告诉我如何更正?

import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.FileWriter;

public class uppercase{

    public static void main(String[] args) {

    try {
        FileReader reader = new FileReader("e.txt");
        FileWriter writer = new FileWriter("e.txt");

        int data;
        int data2;
        while((data=reader.read())!= -1) {
          data2=Character.toUpperCase(data);
          writer.write(data2);
        }
        reader.close();
        writer.close();

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
  }
}
w6lpcovy

w6lpcovy1#

这是个坏主意,因为您正在写入的文件和读取的文件相同。您应该:
将完整的文件加载到内存中,关闭它,然后将其转储到同一个文件中。
保存到其他文件并重命名(更好)

c90pui9n

c90pui9n2#

首先打开一个流从文件中读取,并将结果附加到 String 变量并在读取结束时,将所有数据写入文件:

try {
    FileReader reader = new FileReader("e.txt");
    String result = "";
    int data;
    int data2;
    while ((data = reader.read()) != -1) {
        data2 = Character.toUpperCase(data);
        result += (char)data2;
    }
    reader.close();
    System.out.println(result);
    FileWriter writer = new FileWriter("e.txt");
    writer.write(result);
    writer.flush();
    writer.close();

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

相关问题