Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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_Filereader_File Handling_Uppercase_Filewriter - Fatal编程技术网

在Java中将文本文件数据转换为大写

在Java中将文本文件数据转换为大写,java,filereader,file-handling,uppercase,filewriter,Java,Filereader,File Handling,Uppercase,Filewriter,我用java编写了一个程序,将文件中的文本转换为大写,但它会删除数据,而不是转换数据 但当我从一个文件中获取数据并将转换后的数据写入另一个文件时,它工作正常 所以我遇到了一个问题,那个就是如何使用单个文件来实现这一点 下面是我的代码,请告诉我如何更正 import java.io.FileReader; import java.io.FileNotFoundException; import java.io.IOException; import java.io.FileWriter; pu

我用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();
    }
  }
}

这是个坏主意,因为您正在向读取的同一个文件写入数据。你应该:

  • 将完整的文件加载到内存中,关闭它,然后将其转储到同一个文件中
  • 保存到其他文件并重命名(更好)

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

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();
}

通过
新建filewriter(“file.txt”)
创建的filewriter将覆盖指定的文件。您可以使用
newfilewriter(“file.txt”,true)
更改要附加到文件的行为。但我想你不想要这两种选择中的任何一种。因此,您可能应该阅读所有内容,将其转换为大写,然后用大写内容覆盖文件。您的类名的第一个字母应该是大写。