----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
IO流:处理设备之间的数据传输
分类:
按操作数据分:字节流和字符流
字节流的抽象基类:InputStream、OutputStream
字符流的抽象基类:Reader、Writer
按流向分:写入流和读取流
字符流
Writer的子类FileWriter
FileWriter fw=new FileWriter("demo.txt");//创建文件,在编译的位置目录下,也可以指定绝对路径(c:\\abc\\)。若已有该名文件,则覆盖
fw.write(“abc”);//将字符串写入流中,而不是目的地
fw.flush();//将字符串刷入目的地中
fw.close();//关闭数据流,但会先刷入目的地。若已经把所要写入的所有数据都write完了,不再用到流了,可单独用这个方法,不用flush
文件的续写:
FileWriter fw=new FileWriter("demo.txt",true);//demo.txt文件已存在,但要是还是没有的话,就会建个新的。true代表允许在demo.txt文件数据后续写
fw.write(“abc”);
Reader的子类FileReader
FileReader fr=new FileReader("demo.txt");//创建一个文件读取流对象,使其与已存在的读取源文件关联
读取方式一:
int ch=0;
while((ch=fr.read())!=-1)//读到末尾,读不到了就返回-1
System.out.print((char)ch);
fr.close();
读取方式二:
char[] ch=new char[1024];//定义一个数组,用于存储读到的字符。长度可定义成1024的整数倍
int num=0;
while((num=fr.read(ch))!=-1)
System.out.print(new String(ch,0,num));
fr.close();
字符流缓冲区:
BufferedWriter类:FileWriter fw=new FileWriter("demo.txt");//创建缓冲区之前要先有流对象
BufferedWriter bw=new BufferedWriter(fw);//只要将要提高效率的流对象作为参数传入即可
bw.write(“abc”);
bw.newLine();//跨平台行分隔符方法
bw.flush();//使用缓冲区是要刷新
bw.close();//其实是在关闭流对象
BufferedReader类:前两步类似上
String line=null;
//一次读取一行
while((line=br.readLine())!=null)
System.out.printlin(line);
IO流的异常处理:
不管是字符流还是字节流,不管是谁的缓冲区,最后都要关闭,也就是说要放在try-catch-finally语句块的finally里,在之前要判断流是否为空
字节流
OutputStream:写入字节流
class FileStream{
public static void main(String[] args){
writeFile();
}
public static void writeFile() throws IOException{
FileOutputStream fos=new FileOutputStream("fos.txt");//直达目的地,不用刷新
fos.write("abc".getBytes);//这是字节流啊
fos.close();
}
}
InputStream类:读取字节流,有三种方式:
第一种和字符流的一样,第二种也基本相同,只是将字符数组改成字节数组
第三种可以使用fis.available()方法设置长度刚刚好的自己数组,但这种方法并不好,因为并不知道文件数据到底是多少字节,容易造成内存溢出
To be continue...
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------