Java字符流对与文本的操作
操作一:输出文本的内容
输出一:进行字符输出
1:创建字符流对象
Reader readfile = new FileReader("test/1.txt");
2:读取数据
方案one:int test1 = readfile.read(); System.out.println(test1);
弊端每次只能输出一个文本中的数据
方案two;int a=0;while(( a=readfile.read())!=-1) {System.out.println(a);}
通过循环数据来输出文本中的数据
注意要点:
例如文本的内容是m y c,拥有三个字符,
第一注意点:文件输出是有指针问题的,指针随着输出的情况来进行改变,也就是说当我第一输出的是m的话,当我再次执行输出语句的话输出的就是y,然后就是 c。
第二注意点是最后输出内容,当我进行的输出语句的内容已经完全将文本中的内容进行输出的时候,当再次执行输出语句是,输出的内容是**-1**.
第三点注意点:输出文本内容,输出的是字符串的代表的整数)
第四点注意点:运行文件可能出现错误,要先在执行前抛出错误,然后再执行代码即可
3:释放资源:在执行完后进行IO流关闭:
readfile.close();
问题:
那么请问一下为什么在文件操作完后要关闭流呢?
愿因1:每一个对文件的操作都是由缓存的,关闭流可以释放缓存
原因二:当你对硬盘中的文件进行操作时,不进行流关闭的情况下,操作文件内容是没有将操作写入硬盘文件中的
(例如:当你打开一个文件没有对它进行关闭,然后再对这个文件进行操作是会出现被占用的情况,这与流的概念差不多)
完整代码演示:
public class reader {
public static void main(String args[]) throws Exception {
//字符流读取数据
Reader readfile = new FileReader("test/1.txt"); //文件内容为aaa
//读取数据
// int test1 = readfile.read();
// System.out.println(test1);
//由于在文件中含有许多的数据,通过循环来输出文件的内容
int a=0;
while(( a=readfile.read())!=-1) {
System.out.println(a);
}
//释放资源
readfile.close();
}
-------------------------------------------
输出结果:
方法一:
97
方法二:
97
97
97
这是两种方法的输出结果:方法一:每次只能输出一个数据
方法二:可以全部的输出文件中数据
输出方式二:
字符流读取数据——按照字符数组读取
步骤与上面差不多的步骤,
区别就在于:创建一个数组来进行数据的输出
方法读取:
char [] chs = new char[字符数] int len = r.read(chs)
将数据通过数组的方式进行输出
其他的都与方式一相同,只需注意在最后的输出问题
代码:
public class reader {
public static void main(String args[]) throws Exception {
//按照数组的方式去读取文件中的数据
//a,b,c,d,e,f,g
Reader test1 = new FileReader("test/a/b/1.txt");
char [] chs = new char[3];
int len = test1.read(chs);
System.out.println(chs);
System.out.println(len);
while((len=test1.read(chs))!=-1