PrintWriter 不写入指定文件
PrintWriter does not write to specified file
我有一个程序必须在文件中读取计算多个东西,例如文件中有多少个元音等。出于测试目的,我刚刚将结果打印到控制台,但是我需要将它打印到一个单独的文件,所以我正在使用 Print Writer。我将包括我的整个代码,这样您就可以确切地看到它在做什么。
//Variables
int vowels = 0, digits = 0, spaces = 0, upperCase = 0, lowerCase = 0;
char ch;
// Creates File Chooser and Scans Selected file.
Scanner in = null;
File selectedFile = null;
JFileChooser chooser = new JFileChooser("E:/OOSD/src/textAnalyser");
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
selectedFile = chooser.getSelectedFile();
in = new Scanner(selectedFile);
}
//Loops through the file until it has counted everything.
while (in.hasNext()) {
//Gets the next line from the input
String line = in.nextLine();
// loop goes on till it has no next line.
for (int i = 0; i < line.length(); i++) {
ch = line.charAt(i);
if (ch == 'a' || ch == 'A' || ch == 'e' || ch == 'E' || ch == 'i'
|| ch == 'I' || ch == 'o' || ch == 'O' || ch == 'u' || ch == 'U') {
vowels++;
} else if (Character.isDigit(ch)) {
digits++;
} else if (Character.isWhitespace(ch)) {
spaces++;
} else if (Character.isUpperCase(ch)) {
upperCase++;
} else if (Character.isLowerCase(ch)) {
lowerCase++;
}
}
}//Ends While Loop.
PrintWriter writer = new PrintWriter("Output.txt", "UTF-8");
writer.println("Vowels: " + vowels);
writer.println("Digits : " + digits);
writer.println("Spaces : " + spaces);
writer.println("Capital Letters : " + upperCase);
writer.println("LoweCase : " + lowerCase);
writer.close();
如果您能告诉我为什么它不会打印到指定的输出文件,那将非常感谢 :) 抱歉,这是一个很长的问题。
您的 PrintWriter
已禁用自动刷新。要么在构造函数中启用它,要么在编写器关闭之前手动刷新。既然你阅读了行,你应该使用 in.hasNextLine()
而不是 in.hasNext()
.
为了让您的程序正常工作,您需要在关闭之前刷新您的 PrintWriter。
PrintWriter writer = new PrintWriter("C:/Users/r7h8/Output.txt", "UTF-8");
writer.println("Vowels: " + vowels);
writer.println("Digits : " + digits);
writer.println("Spaces : " + spaces);
writer.println("Capital Letters : " + upperCase);
writer.println("LoweCase : " + lowerCase);
writer.flush();
writer.close();
刷新时,内容会写入文件。
此致。
我有一个程序必须在文件中读取计算多个东西,例如文件中有多少个元音等。出于测试目的,我刚刚将结果打印到控制台,但是我需要将它打印到一个单独的文件,所以我正在使用 Print Writer。我将包括我的整个代码,这样您就可以确切地看到它在做什么。
//Variables
int vowels = 0, digits = 0, spaces = 0, upperCase = 0, lowerCase = 0;
char ch;
// Creates File Chooser and Scans Selected file.
Scanner in = null;
File selectedFile = null;
JFileChooser chooser = new JFileChooser("E:/OOSD/src/textAnalyser");
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
selectedFile = chooser.getSelectedFile();
in = new Scanner(selectedFile);
}
//Loops through the file until it has counted everything.
while (in.hasNext()) {
//Gets the next line from the input
String line = in.nextLine();
// loop goes on till it has no next line.
for (int i = 0; i < line.length(); i++) {
ch = line.charAt(i);
if (ch == 'a' || ch == 'A' || ch == 'e' || ch == 'E' || ch == 'i'
|| ch == 'I' || ch == 'o' || ch == 'O' || ch == 'u' || ch == 'U') {
vowels++;
} else if (Character.isDigit(ch)) {
digits++;
} else if (Character.isWhitespace(ch)) {
spaces++;
} else if (Character.isUpperCase(ch)) {
upperCase++;
} else if (Character.isLowerCase(ch)) {
lowerCase++;
}
}
}//Ends While Loop.
PrintWriter writer = new PrintWriter("Output.txt", "UTF-8");
writer.println("Vowels: " + vowels);
writer.println("Digits : " + digits);
writer.println("Spaces : " + spaces);
writer.println("Capital Letters : " + upperCase);
writer.println("LoweCase : " + lowerCase);
writer.close();
如果您能告诉我为什么它不会打印到指定的输出文件,那将非常感谢 :) 抱歉,这是一个很长的问题。
您的 PrintWriter
已禁用自动刷新。要么在构造函数中启用它,要么在编写器关闭之前手动刷新。既然你阅读了行,你应该使用 in.hasNextLine()
而不是 in.hasNext()
.
为了让您的程序正常工作,您需要在关闭之前刷新您的 PrintWriter。
PrintWriter writer = new PrintWriter("C:/Users/r7h8/Output.txt", "UTF-8");
writer.println("Vowels: " + vowels);
writer.println("Digits : " + digits);
writer.println("Spaces : " + spaces);
writer.println("Capital Letters : " + upperCase);
writer.println("LoweCase : " + lowerCase);
writer.flush();
writer.close();
刷新时,内容会写入文件。
此致。