Reader 和 writer 是转么用来读取字符的,避免了很多的字符乱码问题,读取字符十分的方便。但是不能像InputStream 和 OutputStream 用于读取图片,视频等,只能用于读取字符.
一、Reader类读取字符,
1. 构造方法,
我们这里使用 FileReader类
Reader reader = new FileReader(url);
url用法和之前的File,Input/Output Stream一样,File的实例或者 是 路径的字符串.
2. 常用方法。(这里的用法和InputStream基本一致)
- read(char [])
- 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
文件写入情况: