JAVA—从一个文件读取并写入另一个文件
这是我的代码,我不能让它正常工作,它只得到了第一个文本文件中3行中的最后一行,并且只大写,我不明白为什么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
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()代码>那没用
- 为每行添加换行符,否则所有大写内容将位于同一行