"黑马程序员"Java IO流

来源:互联网 发布:网络机柜插座接线图 编辑:程序博客网 时间:2024/03/29 22:18

------- android培训、java培训、期待与您交流! ----------

1.IO流:

IO流用来处理设备之间的数据传输

Java对数据的操作时通过流的方式

Java用于操作流的对象都在IO包中

流按操作数据分为两种,字节流与字符流

流按流向分为:输入流,输出流

2.IO流常用基类

2.1字节流的抽象基类

InputStream     OutputStream

2.2字符流的抽象基类

Reader   Writer

注::由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。

如:InputStream的子类FileputStream、Reader的子类FIleReader

import java.io.*;class  FileWriterDemo{public static void main(String[] args) throws IOException{//创建一个FileWriter对象。该对象一被初始化就必须要明确被操作的文件。//而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。//其实该步就是在明确数据要存放的目的地。FileWriter fw = new FileWriter("demo.txt");//调用write方法,将字符串写入到流中。fw.write("abcde");//刷新流对象中的缓冲中的数据。//将数据刷到目的地中。//fw.flush();//关闭流资源,但是关闭之前会刷新一次内部的缓冲中的数据。//将数据刷到目的地中。//和flush区别:flush刷新后,流可以继续使用,close刷新后,会将流关闭。fw.close();}}
3.复制文件:

复制的原理:其实就是将一个盘下的文件数据存储到另一个盘中的一个文件中。

步骤:

3.1在盘中创建一个文件,用于存储盘中的文件中的数据

3.2定义读取流和盘中的文件关联

3.3通过不断的读写完成数据存储。


import java.io.*;class CopyText {public static void main(String[] args) throws IOException{copy_2();}public static void copy_2(){FileWriter fw = null;FileReader fr = null;try{fw = new FileWriter("SystemDemo_copy.txt");fr = new FileReader("SystemDemo.java");char[] buf = new char[1024];int len = 0;while((len=fr.read(buf))!=-1){fw.write(buf,0,len);}}catch (IOException e){throw new RuntimeException("读写失败");}finally{if(fr!=null)try{fr.close();}catch (IOException e){}if(fw!=null)try{fw.close();}catch (IOException e){}}}//从C盘读一个字符,就往D盘写一个字符。public static void copy_1()throws IOException{//创建目的地。FileWriter fw = new FileWriter("RuntimeDemo_copy.txt");//与已有文件关联。FileReader fr = new FileReader("RuntimeDemo.java");int ch = 0;while((ch=fr.read())!=-1){fw.write(ch);}fw.close();fr.close();}}
4.字符流的缓冲区

缓冲区的出现提高了对数据的读写效率

对应类:bufferedWriter BufferedReader

缓冲区要结合流才可以使用

在流的基础上对流的功能进行了增强。

/*字符读取流缓冲区:该缓冲区提供了一个一次读一行的方法 readLine,方便于对文本数据的获取。当返回null时,表示读到文件末尾。readLine方法返回的时候只返回回车符之前的数据内容。并不返回回车符。*/import java.io.*;class  BufferedReaderDemo{public static void main(String[] args) throws IOException{//创建一个读取流对象和文件相关联。FileReader fr = new FileReader("buf.txt");//为了提高效率。加入缓冲技术。将字符读取流对象作为参数传递给缓冲对象的构造函数。BufferedReader bufr = new BufferedReader(fr);String line = null;while((line=bufr.readLine())!=null){System.out.print(line);}bufr.close();}}




0 0