Filereader.read() 方法无效
Filereader.read() method not working
我编写了以下代码来创建一个文件,向其中添加文本,然后读取该文件。我的问题是在执行时,文件的内容没有显示在屏幕上,尽管内容被添加到文本文件中。
以下是我的代码
import java.io.*;
class prc4{
public static void main(String args[]){
try{
File f = new File("C:\Program Files\Java\jdk1.8.0_25\bin\file1.txt");
if (f.createNewFile()){
System.out.println("File is created!");
}else{
System.out.println("File already exists.");
}
FileWriter f1 = new FileWriter("file1.txt");
f1.write("Hello World. This is a sample text file!");
FileReader f2 = new FileReader("file1.txt");
int x = f2.read();
while(x != -1){
System.out.println((char)x);
x = f2.read();
}
f1.close();
f2.close();
}catch(Exception e){ }
}
}
输出:
在文本文件中:
写入文件后(f1.write()
):
f1.close();
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("file1.txt"));
String line = reader.readLine();
while (line!=null) {
System.out.println(line);
line = reader.readLine();
}
} catch (IOException ioe) {
System.out.println(ioe.getMessage());
} finally {
try { if (reader!=null) reader.close(); } catch (Exception e) {}
}
您需要关闭,或者至少 flush,然后才能从文件中读取写入器。写入文件是缓冲的,因此当您从文件中读取内容时,内容实际上并不在文件中。我建议使用 try-with-resources 构造关闭编写器:
try (FileWriter f1 = new FileWriter("file1.txt"))
{
f1.write("Hello World. This is a sample text file!");
}
try (FileReader f2 = new FileReader("file1.txt");)
{
int x = f2.read();
while(x != -1){
System.out.println((char)x);
x = f2.read();
}
}
还要注意,您正在为每个字符调用 println()
,这意味着每个字符将打印在单独的行上。这可能是您想要的,或者您可能想改为调用 print()
。
尝试使用 BufferedReader,它是字符输入流的通用 reader。是从文本文件中读取的最佳选择
class prc4 {
public static void main(String args[]) {
try {
File f = new File(".\file1.txt");
if (f.createNewFile()) {
System.out.println("File is created!");
} else {
System.out.println("File already exists.");
}
FileWriter f1 = new FileWriter(".\file1.txt");
f1.write("Hello World. This is a sample text file!");
FileReader f2 = new FileReader(".\file1.txt");
BufferedReader br = new BufferedReader(f2);
String s;
while((s = br.readLine()) != null) {
System.out.println(s);
}
br.close();
f1.close();
f2.close();
} catch (Exception e) {
}
}
}
刷新并关闭你的 writer
你也可以使用 BufferedReader
逐行读取文件内容以打印其内容。
public static void main(String args[]){
try{
File f = new File("file1.txt");
if (f.createNewFile()){
System.out.println("File is created!");
}else{
System.out.println("File already exists.");
}
FileWriter f1 = new FileWriter(f);
f1.write("Hello World. This is a sample text file!");
f1.flush();
f1.close();
FileReader f2 = new FileReader(f);
BufferedReader reader = null;
try {
reader = new BufferedReader(f2);
String l = reader.readLine();
while (l!=null) {
System.out.println(l);
l = reader.readLine();
}
}finally {
try {
if (reader!=null)
reader.close();
} catch (Exception e) {
// Do nothing
}
}
}catch(Exception e){
e.printStackTrace();
}
}
我编写了以下代码来创建一个文件,向其中添加文本,然后读取该文件。我的问题是在执行时,文件的内容没有显示在屏幕上,尽管内容被添加到文本文件中。
以下是我的代码
import java.io.*;
class prc4{
public static void main(String args[]){
try{
File f = new File("C:\Program Files\Java\jdk1.8.0_25\bin\file1.txt");
if (f.createNewFile()){
System.out.println("File is created!");
}else{
System.out.println("File already exists.");
}
FileWriter f1 = new FileWriter("file1.txt");
f1.write("Hello World. This is a sample text file!");
FileReader f2 = new FileReader("file1.txt");
int x = f2.read();
while(x != -1){
System.out.println((char)x);
x = f2.read();
}
f1.close();
f2.close();
}catch(Exception e){ }
}
}
输出:
在文本文件中:
写入文件后(f1.write()
):
f1.close();
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("file1.txt"));
String line = reader.readLine();
while (line!=null) {
System.out.println(line);
line = reader.readLine();
}
} catch (IOException ioe) {
System.out.println(ioe.getMessage());
} finally {
try { if (reader!=null) reader.close(); } catch (Exception e) {}
}
您需要关闭,或者至少 flush,然后才能从文件中读取写入器。写入文件是缓冲的,因此当您从文件中读取内容时,内容实际上并不在文件中。我建议使用 try-with-resources 构造关闭编写器:
try (FileWriter f1 = new FileWriter("file1.txt"))
{
f1.write("Hello World. This is a sample text file!");
}
try (FileReader f2 = new FileReader("file1.txt");)
{
int x = f2.read();
while(x != -1){
System.out.println((char)x);
x = f2.read();
}
}
还要注意,您正在为每个字符调用 println()
,这意味着每个字符将打印在单独的行上。这可能是您想要的,或者您可能想改为调用 print()
。
尝试使用 BufferedReader,它是字符输入流的通用 reader。是从文本文件中读取的最佳选择
class prc4 {
public static void main(String args[]) {
try {
File f = new File(".\file1.txt");
if (f.createNewFile()) {
System.out.println("File is created!");
} else {
System.out.println("File already exists.");
}
FileWriter f1 = new FileWriter(".\file1.txt");
f1.write("Hello World. This is a sample text file!");
FileReader f2 = new FileReader(".\file1.txt");
BufferedReader br = new BufferedReader(f2);
String s;
while((s = br.readLine()) != null) {
System.out.println(s);
}
br.close();
f1.close();
f2.close();
} catch (Exception e) {
}
}
}
刷新并关闭你的 writer
你也可以使用 BufferedReader
逐行读取文件内容以打印其内容。
public static void main(String args[]){
try{
File f = new File("file1.txt");
if (f.createNewFile()){
System.out.println("File is created!");
}else{
System.out.println("File already exists.");
}
FileWriter f1 = new FileWriter(f);
f1.write("Hello World. This is a sample text file!");
f1.flush();
f1.close();
FileReader f2 = new FileReader(f);
BufferedReader reader = null;
try {
reader = new BufferedReader(f2);
String l = reader.readLine();
while (l!=null) {
System.out.println(l);
l = reader.readLine();
}
}finally {
try {
if (reader!=null)
reader.close();
} catch (Exception e) {
// Do nothing
}
}
}catch(Exception e){
e.printStackTrace();
}
}