博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IO-字符流-FileReader
阅读量:6270 次
发布时间:2019-06-22

本文共 1861 字,大约阅读时间需要 6 分钟。

FileReader 读数据

构造方法:

FileReader(String fileName) 传递要读取的文件名称

成员方法:

int read() 读取单个字符并返回

int read(char[] cbuf) 一次读取一个字符数组的数据,返回的是实际读取字符的个数.

输入流读文件的一般步骤:

1.创建输入流对象

2.调用输入流对象的对数据方法

3.释放资源

举例:打印文件中的内容到公屏上,一次读取一个字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import 
java.io.FileNotFoundException;
import 
java.io.FileReader;
import 
java.io.IOException;
public 
class 
DemoFileReader {
public 
static 
void 
main(String[] args) 
throws 
IOException {
// 创建输入流对象
FileReader fr = 
new 
FileReader(
"a.txt"
);
int 
ch;
// 调用输入流方法读取数据的方法
/*
* ch != -1 ch=fr.read(); 故:(ch = fr.read()) != -1
*/
//
while 
((ch = fr.read()) != -
1
) {
System.out.println((
char
) ch);
}
// 释放资源
fr.close();
}
}

注意: a.txt必须存在,如果不存在会报系统找不到文件异常

2.上个范例是把文本内容读取出来打印到公屏上,如果是写入到其他文件,是不是就变成复制了呢

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import 
java.io.FileNotFoundException;
import 
java.io.FileReader;
import 
java.io.FileWriter;
import 
java.io.IOException;
public 
class 
DemoCopyFile {
public 
static 
void 
main(String[] args) 
throws 
IOException {
//创建输入流对象
FileReader fr = 
new 
FileReader(
"a.txt"
);
//创建输出流对象
FileWriter fw = 
new 
FileWriter(
"Copya.txt"
);
int 
ch;
while 
((ch = fr.read()) != -
1
) {
fw.write(ch);
}
//释放资源
fw.close();
fr.close();
}
}

上面的例子是一次读写一个字符复制文本文件,效率比较低.接下来我们看看 成员方法中一次一个字符数组的情况.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public 
class 
DemoCopyFile {
public 
static 
void 
main(String[] args) 
throws 
IOException {
//创建输入流对象
FileReader fr = 
new 
FileReader(
"a.txt"
);
//调用输入流对象读取数据的方法
char
[] chs = 
new 
char
[
1024
];
int 
len;
/*while一共做了三件事
* 1.fr.read(chs)将数据读取到数组中
* 2.len=fr.read(chs) 把读取到的有效个数复制给len
* 3.len != -1  判断读取的有效个数是否为-1
*
*/
while
((len = fr.read(chs))!= -
1
){
System.out.println(
new 
String(chs,
0
,len));
}
fr.close();
}
}

在这里什么时候用到字符流呢,一般情况下能够使用系统记事本打开并阅读里面的内容的,我们采用字符流,

本文转自xinsz08の平行时空博客51CTO博客,原文链接http://blog.51cto.com/xinsz08/1941490如需转载请自行联系原作者
维度2018
你可能感兴趣的文章
[SilverLight]DataGrid实现批量输入(like Excel)(补充)
查看>>
秋式广告杀手:广告拦截原理与杀手组织
查看>>
翻译 | 摆脱浏览器限制的JavaScript
查看>>
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>
网吧维护工具
查看>>
BOOT.INI文件参数
查看>>
vmstat详解
查看>>
新年第一镖
查看>>
unbtu使用笔记
查看>>
OEA 中 WPF 树型表格虚拟化设计方案
查看>>
Android程序开发初级教程(一) 开始 Hello Android
查看>>
使用Gradle打RPM包
查看>>
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>
nginx反向代理
查看>>
操作系统真实的虚拟内存是什么样的(一)
查看>>