在Java中将文本文件数据转换为大写
我用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
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)
更改要附加到文件的行为。但我想你不想要这两种选择中的任何一种。因此,您可能应该阅读所有内容,将其转换为大写,然后用大写内容覆盖文件。您的类名的第一个字母应该是大写。