使用FileReader和FileWriter读取写入文件内容

java 中的字节流不能直接操作Unicode字符,要想直接操作字符输入/输出要使用几个字符输入/输出类。

字符流层次结构的顶层是Reader和Writer抽象类。

1、Reader

    Reader是定义java的流式字符输入模式的抽象类。错误异常为IOException。

    主要方法有:

    abstract  void  close() 关闭输入流,关闭后读取将会产生IOException异常。

    void  mark(int numChars) 在输入流的当前位置设立一个标志。该输入流在numChars个字符被读取前有效。

    boolean markSupported() 该流支持mark()/reset()则返回true。

    int read() 如果调用的输入流的下一个字符可读则返回一个整型,文件尾返回-1。

    int read(char buffer[ ]) 试图读取buffe中的buffer.length个字符,返回实际成功读取的字符数,文件尾返回-1。

    abstract int read (char buffer[ ], int offset, int numChars) 试图读取buffer中从buffer[offset]开始的 numChars个字符,返回实际成功读取的字符数,文件尾返回-1。

    void reset()  设置输入指针到先前设立的标志处。

    long skip (long numChars) 跳过numChars 个输入字符,返回跳过的字符数。

2、writer

    writer 是定义流矢字符输出的抽象类。所有该类的方法都返回一个void值并在出错条件下引发一个IOException异常。

    主要方法:

    abstract void close()  关闭输出流,关闭后的写操作引发IOException异常。

    abstract void flush(0  定制输出状态以使每个缓冲器都被清除。也就是刷新缓冲。

    void  write(int ch) 向输出流写入单个字符。参数是一个整型,可以不必把参数转换成字符型就可以调用。

    void write (char buffer[ ]) 向一个输出流写入一个完整的字符数组。

    abstract void write (char buffer[ ], int offset ,int numChars)  向调用的输出流写入数组buffer 以buffer[offset]为起点的numChars个字符区域内的内容。

    void write(String str)  向调用的输出流写str。

    void write (String str, int offset, int numChars) 写数组str中以制定的offset为起点的长度为numChars个字符区域内的内容。

3、FileReader

    FileReader类创建了一个可以读取文件内容的Reader类。它的构造函数:

    FileReader (String filePath)  filePath 是一个文件的完整路径

    FileReader(File fileObj)  fileObj 是描述该文件的File对象

    均引发FileNotFoundException异常。

    例如,从一个文件逐行读取并把它输出到标准输入流。

    import  java.io.*;

    class FileReaderDemo {

        public static void main (String args[ ] ) throws Exception {

            FileReader fr =  new FileReader ("c://in.txt");

            BufferedReader br = new BufferedReader (fr);

            String s;

             while ((s = br.readLine() )!=null) {

                 System.out.prinln (s);

              }

            fr.close();

      }

    }

4、FileWriter

    FileWriter 创建一个可以写文件的Writer类。构造函数:

    FileWriter (String filePath)  filePath 是一个文件的完整路径

    FileWriter(String filePath, boolean append)  如果append为true ,输出是附加到文件尾的。

    FileWriter(File fileObj)  是描述该文件的File对象

    例如,创建了一个样本字符缓冲器,开始生成一个String,然后用getChars()方法提取字符数组。然后创建了 三个文件,file1.txt包含例子中的隔个字符,file2.txt包含所有的字符,file2.txt包含最后的四分之一。

    import  java.io.*;

    class FileWriterDemo {

        public static void  main (String args[ ]) throws Exception {

            String source = "learn how to write to file";

            FileWriter  f1 = new FileWriter("file1.txt");

            for  (int i=0; i<buffer.length; i +=2) {

                f1.write (buffer[i]);

             }

            fo.close();

             FileWriter f2 = new FileWriter("file2.txt");

            f2.write(buffer);

            f2.close();

            FileWriter  f3 = new FileWriter ("file3.txt");

            f2.write(buffer,buffer.length-buffer.length/4, buffer.length/4);

        }

}

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: FileReaderFileWriter是Java中用于读取写入文件的类。FileReader用于读取字符文件,而FileWriter用于写入字符文件。这两个类都是基于字符流的,可以读取和写入Unicode字符。使用FileReaderFileWriter可以方便地读取和写入文本文件。 ### 回答2: FileReaderFileWriter是Java中输入和输出字符流相关的类,用于读取写入文件内容使用FileReader可以读取文件中的字符数据,配合BufferedReader类可以按行读取内容使用FileWriter可以将数据以字符形式写入到文件中。 FileReaderFileWriter最大的好处是可以直接对文件进行读写操作,无需通过其他流来进行处理,同时它们支持Unicode字符编码,可以处理多种不同编码的文件。使用这两个类可以进行文件的读写,包括文本文件、XML文件等等。 FileReader使用步骤为首先创建一个FileReader对象,并指定要读取的文件路径,然后使用read()方法读取文件中的字符,每次读取一个字符,直到返回-1表示文件读取结束。在读取文件时,需要关闭FileReader对象,以释放资源。 FileWriter使用步骤为首先创建一个FileWriter对象,并指定要写入的文件路径,然后使用write()方法将数据以字符形式写入到文件中。在写入文件时,需要关闭FileWriter对象,以确保文件写入完成。 总之,使用FileReaderFileWriter可以方便地读写文件,适合于处理文本文件内容。在实际开发中,使用这两个类可以很好地帮助我们完成文件的输入输出任务。 ### 回答3: FileReaderFileWriter是Java中常用的文件输入输出类,用于读取写入文件中的数据,是Java中文件读写操作的核心类之一。下面我们来详细了解一下这两个类的用法和注意事项。 使用FileReader读取文件数据时,需要创建一个FileReader对象,然后使用该对象的read()方法逐字符地读取文件内容,并将其存储到缓冲区中,直至文件末尾。读取文件的示例代码如下: FileReader fr = new FileReader("filename.txt"); int ch; while ((ch = fr.read()) != -1) { System.out.print((char) ch); } fr.close(); 使用FileWriter写入数据到文件时,同样要创建一个FileWriter对象,然后使用该对象的write()方法向文件中逐字符地写入数据。写入文件的示例代码如下: FileWriter fw = new FileWriter("filename.txt"); fw.write("Hello World!\n"); fw.write("This is a test message."); fw.close(); 需要注意的是,使用FileReaderFileWriter进行文件操作时存在着一些潜在的风险和问题。 首先,两者都是使用单个线程进行文件读写,当文件过大时,可能会导致程序阻塞和性能瓶颈。对于大文件的读取和写入,建议使用BufferedReader和 BufferedWriter等类进行操作。 其次,FileReaderFileWriter都是字符流类,读写的数据是字符类型,如果需要读写二进制数据或图片等,则需使用字节流类如FileInputStream和FileOutputStream等。 最后,当操作完成后,需要关闭文件流对象,避免资源浪费和文件打开异常。建议使用try-catch-finally语句块或者Java7中的try-with-resources语法糖处理异常和关闭文件。 总之,使用FileReaderFileWriter进行文件读写是Java中文件输入输出中的一种常用方式,但需要注意线程安全、数据类型和资源释放等问题。在实际应用中,要根据具体的需求选取不同的文件操作类进行文件读写操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值