操作2"/>
file文件操作2
字节流和字符流
- Java流
- 字符流操作
- 使用字符流读取文件
- 使用字符流写文本文件
- 字节流操作
- 使用字节流读取文本文件
- 使用字节流写文本文件
Java流
我们知道了如何利用file类对文件或者目录属性进行操作,但File类不能访问文件的内容,即不能从文件中读取数据或向文件里写数据。
读文件,是指把文件的数据读取到内存中,反之写文件就是把内存中的数据写到文件中。
流呢,是指一连串流动的字符,是以先进先出的方式发送和接收数据的通道。
在java.io包中,封装了许多输入\输出流API。在程序中,这些输入输出流的类的对象成为流对象。可以通过这些流对象将内存中的数以流的方式写入文件,也可以通过流对象将文件中的数据以流的方式读取到内存。
流对象构造的时候往往会和数据源联系起来。数据源分为源数据流和目标数据流源。
1.输入流联系的是源流数据源
2.输出流联系的则是目标数据源。
按照不同的分类方式,可以将流分成不同的类型。
1.按照流的流向进行划分可以分成输入流和输出流。
输出流:OUTPutStream和Writter作为基类。只能向其中写入数据,不能读。
输入流:InputStream和Reader作为基类。只能读取数据,不能写。
2.按照所操作的数据单元的不同,流又可以分成字节流和字符流。
字节流操作的最小的数据单位为8位字节,而字符流操作的最下数据单元是16位字符。
字节流和字符流的区分也很简单,字节流建议使用于二进制数据操作,而字符流用于文本。他们的用法几乎一样。
字符流操作
使用字符流读取文件
1.字符流输入流Reader类
Reader类是读取字符流的抽象类,他提供了常用的方法。
int read() 输入流中读取单个字符
int read(byte[] c)从输入流中读取c.length长度的字符,保存到字符数组C中,返回实际读取的字符数。
read(char[] c,int off,int len)从输入流中读取最多len的长度字符,保存到字符数组c中,保存的位置从off位置开始,返回实际读取的字符长度。
close() 关闭流
2.字符输入流FileReader类
FileReader类是Reader的子类,常用的构造方法格式如下。
FileReader(String fileName)其中,fileName是指要从中读取数据文件的名称。使用的方法如下:
Reader fr=new FileReader(“C:\\myTest.txt”);
3.使用FileReader读取文件
使用字符流类FileReader读取文本文件的操作如下。
1.引入类
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
2.创建FileReader对象
Reader re = new FileReader("C:\\mytest.txt");
3.利用FileReader类方法读取文本文件
int read();//读取单个字符
4.关闭相关的流对象
fr.close();
l练习:
Reader fe=null;StringBuffer sbf=null;try {fe=new FileReader("hello.txt");char ch[]=new char[1024];//创建字符数组作为中转站sbf=new StringBuffer();int lenth=fe.read(ch);//将字符读入数组while((lenth!=-1)){sbf.append(ch);//追加字符lenth=fe.read();} } catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(fe!=null){try {fe.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
创建字符的中转站,存入每次读取的数据内容,然后调用FileReader对象的Read()方法将字符读入数组ch,并追加到字符串sbf中。
或者我们可以这样写:
char[] cbuf = new char[5];int len = 0;try {fileReader = new FileReader(file);
更多推荐
file文件操作2
发布评论