java中BufferedReader和FileReader怎么用?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中BufferedReader和FileReader怎么用?相关的知识,希望对你有一定的参考价值。

String fileName;
File file=new File("E:/"+fileName);
BufferedReader bufferedReader=new BufferedReader(new FileReader(file));
中是不是指FileReader的实例对象将fileName文件中的字符读到缓存区,然后BufferedReade的对象将缓存的数据读到程序中。是这样理解吗?如果没有FileReader会怎么样。谢谢

java中BufferedReader使用:
b=bf.read())!=-1 每次都会先读取一个字节出来,所以后面的bf.readLine());
读取的就是每行少一个字节
所以,应该使用
String valueString = null;
while ((valueString=bf.readLine())!=null)
System.out.println(valueString);

FileWriter类(字符输出流类)
构造方法:FileWriter fw = new FileWriter(String fileName);//创建字符输出流类对象和已存在的文件相关联。文件不存在的话,并创建。
如:FileWriter fw = new FileWriter("C:\\\\demo.txt");
FileWriter fw = new FileWriter(String fileName,boolean append);//创建字符输出流类对象和已存在的文件相关联,并设置该该流对文件的操作是否为续写。
如:FileWriter fw = new FileWriter("C:\\\\demo.txt",ture); //表示在fw对文件再次写入时,会在该文件的结尾续写,并不会覆盖掉。
主要方法: void write(String str) //写入字符串。当执行完此方法后,字符数据还并没有写入到目的文件中去。此时字符数据会保存在缓冲区中。此时在使用刷新方法就可以使数据保存到目的文件中去。
viod flush() //刷新该流中的缓冲。将缓冲区中的字符数据保存到目的文件中去。
viod close() //关闭此流。在关闭前会先刷新此流的缓冲区。在关闭后,再写入或者刷新的话,会抛IOException异常。
参考技术A 简单地说java的IO包使用包装器模式设计的,也就是说用FileReader包装了File,又用BufferedReader包装了FileReader,才可以用BufferedReader。BufferedReader不能直接包装File,所以说没有FileReader的话应该会编译不了,因为BufferedReader的构造函数的参数就没有File类型的。本回答被提问者和网友采纳 参考技术B 小伙子叫这个io的java装饰模式实现。
请关注下设计模式,装饰模式。

Java 读取和写入文本文件

 

 

package test_java;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

public class ReadWrite {
    public static void main(String [] args) {
        String filePath = "input.txt";
        String destFilePath = "output.txt";
        readWrite(filePath, destFilePath);
    }
    
    public static void readWrite(String filePath, String destFilePath) {
        List<String> report = Arrays.asList("Prevotella_intermedia", "Enterobius_vermicularis", "Parvimonas_micra", "Protopolystoma_xenopodis");
        try {
            BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath));  // 读取文件
            FileOutputStream fileOutputStream = new FileOutputStream(new File(destFilePath));  // 写入文件
            String string;
            while((string = bufferedReader.readLine()) != null) {  // 按行读取
                if (string.split("	")[0].trim().equals("species")) {  
                    fileOutputStream.write((string + "
").getBytes());  // 将符合条件的行写入文件
                }
                if (report.contains(string.split("	")[0].trim())) {
                    fileOutputStream.write((string + "
").getBytes());
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }
}

 

以上是关于java中BufferedReader和FileReader怎么用?的主要内容,如果未能解决你的问题,请参考以下文章

java--IO--Properties类

java实现CSV文件的导入导出操作

java实现CSV文件的导入导出操作

Java 如何修改文件的某一行内容

四套读取方案

四套读写方案