Java IO Reader,Writer类 读写字符 用法详解教程。

Reader 和 writer 是转么用来读取字符的,避免了很多的字符乱码问题,读取字符十分的方便。但是不能像InputStream 和 OutputStream 用于读取图片,视频等,只能用于读取字符.

一、Reader类读取字符,

1. 构造方法,

在这里插入图片描述
我们这里使用 FileReader类

Reader reader = new FileReader(url);

url用法和之前的File,Input/Output Stream一样,File的实例或者 是 路径的字符串.

2. 常用方法。(这里的用法和InputStream基本一致)

  1. read(char [])
  2. close()。

3. 使用步骤

  • 1.构造
  • 2.int read(char[] cbuf,
    int off,
    int len)
    在这里插入图片描述
  • 3.close()

实例代码.

package Java学习.Java高级.IO.IO.Reader字符读取;

import java.io.FileReader;
import java.io.IOException;

/**
* 一、构造:
*  Reader reader = new FileReader(url);
* 二、步骤
* 1.构造
* 2.read(char[],int index,int length)
* 或者 read(char[])
* 3.close()
* 三:read()和
* InputStream: read(byte[])
* Reader: read(char[])
* 会把字节或者字符 储存到 数组里,
*/
public class Mian {
   public static void main(String[] args) throws IOException {
       String url =  "D:\\Program Files\\JetBrains\\test1\\Lab" +
               "\\src\\Java学习\\Java高级\\IO\\IO\\Reader字符读取\\";
       FileReader fileReader = new FileReader(url + "test.txt");
       char[] chars = new char[1024];
       while (fileReader.read(chars,0,chars.length) != -1){
           System.out.println(new String(chars));
       }
   }
}

Run:
132半亩方糖acb

Process finished with exit code 0

Writer

1.构造同上

Writer writer = new FileWriter(url,true);

url : 写入的路径
true : append 允许向后添加写入。不覆盖

2. 常用方法

  • 1.write(char[] chars, int off, int len) 写道内存
  • 2.flush() 刷到硬盘
  • 3.close() 关闭流.

3. 使用步骤

  • 1.构造,使用多态
  • 2.write(char[] chars, int off, int len)
  • 3.flush()
  • 4.close()

代码实例:

package Java学习.Java高级.IO.IO.Writer写入;

import java.io.*;

/**
* 一、注意:Reader 是把数据写入到内存中,要使用flush刷新内存中的数据到硬盘
* 二、构造方法和Reader一样
* 三、常用方法
* 1.write(char[] chars, int off, int len) 写道内存
* 2.flush() 刷到硬盘
* 3.close() 关闭流.
* 四、步骤
* 1.构造,使用多态
* 2.write(char[] chars, int off, int len)
* 3.flush()
* 4.close()
*/
public class Main {
   public static void main(String[] args) throws IOException {
       String url = "D:\\Program Files\\JetBrains\\tes" +
               "t1\\Lab\\src\\Java学习\\Java高级\\IO\\IO\\Writer写入\\文件写入测试.txt";
       Writer writer = new FileWriter(url,true);
       for (int i = 0; i < 10; i++) {
           String string = "这是第 "+(i+1)+"个字符串\n";
           char[] chars = string.toCharArray();
           writer.write(chars);//写入内存,必须写入硬盘才行。
           writer.flush();//写入硬盘
           System.out.println("写入的字符为:"+new String(chars,0,chars.length));
       }
   	writer.close();//关闭流.
   }
}

4. write() 可以直接写字符串 String 代替 char[];所以上面的代码还可以写为(更简洁)

package Java学习.Java高级.IO.IO.Writer写入;

import java.io.*;

/**
 * 一、注意:Reader 是把数据写入到内存中,要使用flush刷新内存中的数据到硬盘
 * 二、构造方法和Reader一样
 * 三、常用方法
 * 1.write(char[] chars, int off, int len) 写道内存
 * 2.flush() 刷到硬盘
 * 3.close() 关闭流.
 * 四、步骤
 * 1.构造,使用多态
 * 2.write(char[] chars, int off, int len)
 * 3.flush()
 * 4.close()
 */
public class Main {
    public static void main(String[] args) throws IOException {
        String url = "D:\\Program Files\\JetBrains\\tes" +
                "t1\\Lab\\src\\Java学习\\Java高级\\IO\\IO\\Writer写入\\文件写入测试.txt";
        Writer writer = new FileWriter(url,true);
        for (int i = 0; i < 10; i++) {
            String string = "这是第 "+(i+1)+"个字符串\n";
            writer.write(string);//写入内存,必须写入硬盘才行。
            writer.flush();//写入硬盘
            System.out.println("写入的字符为:"+string);
        }
        writer.close();
    }
}

Run:
写入的字符为:这是第 1个字符串

写入的字符为:这是第 2个字符串

写入的字符为:这是第 3个字符串

写入的字符为:这是第 4个字符串

写入的字符为:这是第 5个字符串

写入的字符为:这是第 6个字符串

扫描二维码关注公众号,回复: 11217460 查看本文章

写入的字符为:这是第 7个字符串

写入的字符为:这是第 8个字符串

写入的字符为:这是第 9个字符串

写入的字符为:这是第 10个字符串

Process finished with exit code 0

文件写入情况:
在这里插入图片描述

原创文章 132 获赞 11 访问量 4712

猜你喜欢

转载自blog.csdn.net/jarvan5/article/details/105991258