您的位置:首页 > 职场人生

黑马程序员_IO流学习总结

2013-03-17 13:37 417 查看
android培训、java培训、期待与您交流!
流的概念:
在面向对象的语言中,数据的输入和输出都是通过流来实现的。数据流是一种有顺序、有起点和终点的字符集合。

流的分类: 

按照数据流的流向划分可以分为输入流和输出流。

  输入流:可以对数据进行读取操作的类称为输入流,输入流都继承自抽象类InputStream

  输出流:一个能过将字节流传送出去的类被称为输出流,所有的输入流都继承自抽象类OutStream

按照数据流的操作数据的单位分类可以分为字节流和字符流。

  字符流:字符流对数据的操作一字符为单位,只能操作文本数据。

  字节流:字节流对数据的操作以一个字节(8bit)为一个单位进行处理,因为所有文件在计算机中被转换为2进制,所以字节流可以操作所有数据。

  注意:仅当操作纯文本数据是选用字符流进行操作,其他媒体数据一律选用字节流。

流的层次关系:

字节流常用类

InputStream 这是一个抽象类,表示所有字节输入流的超类

  FileInputStream 用于读取诸如图像数据之类的原始字节流

  BufferedInputStream 字节输入流缓冲区,能对字节输入流的功能进行增强

OutPutStream 这是一个抽象类,表示所有字节输入流的超类

  FileOutputStream 用于写入诸如图像数据之类的原始字节流

  BufferedOutStream 字节输出流缓冲区 

字符流常用类

Reader 用于读取字符流的抽象类

  FileReader 用于读取文本文件的便捷类

  BufferedReader 用于读取文本的缓冲区,能对Reader功能进行增强

  InputStreamReader 是字节流通向字符流的桥梁:能够将字节流转换为字符流

Writer 用于写入字符流的抽象类

  FileWriter 用于写入文本文件的便捷类

  BufferedWriter 将文本写入字符输出流,缓冲各个字符,从而提供单个字符、数组和字符串的高效写入。

  OutStreamWriter  是字符流通向字节流的桥梁:
流操作规律:

1,明确源和目的。
源:输入流。InputStream Reader
目的:输出流。OutputStream Writer。
2,操作的数据是否是纯文本。
是:字符流。
不是:字节流。3,当体系明确后,在明确要使用哪个具体的对象。
通过设备来进行区分:
源设备:内存,硬盘。键盘
目的设备:内存,硬盘,控制台。
流的使用字符流示例:拷贝一个字符文件
import java.io.*;
class CopyTxt
{
public static void main(String[] args) throws Exception
{
//定义文件读取流对象,并指定要拷贝的文本文件
FileReader fr=new FileReader("\\java\\CopyTxt.java");
//定义文件写入流对象,并指定文件保存的位置
FileWriter fw=new FileWriter("C:\\CopyTxt.java");
//定义读取流缓冲区对象,传入fr以便跟好的操作数据。
BufferedReader bufr=new BufferedReader(fr);
String line=null;
while((line=bufr.readLine())!=null)
{
fw.write(line+"\r\n");//读取一行就写入一行数据。
}
bufr.close();//关闭读取流
fw.close();//关闭写入流
}

}

字节流示例:从E:\\KuGou路径拷贝一个音乐文件,到C盘根目录。
import java.io.*;
class CopyMp3
{
public static void main(String[] args) throws Exception
{
//定义文件读取流对象,并指定要拷贝的Mp3文件
FileInputStream fis=new FileInputStream("E:\\KuGou\\刘德华 - 冰雨.mp3");
//定义文件写入流对象,并指定文件保存的位置
FileOutputStream fos=new FileOutputStream("C:\\刘德华 - 冰雨.mp3");
//定义读取流缓冲区对象,传入fis以便跟好的操作数据。
BufferedInputStream bufs=new BufferedInputStream(fis);
byte[] buf=new byte[1024];
int len=0;
while((len=bufs.read(buf))!=-1)
{
fos.write(buf,0,len);
}
bufs.close();//关闭读取流
fos.close();//关闭写入流
}

}
键盘录入:将键盘录入的文本存入到指定文件中
import java.io.*;
class KeyBoarding
{
public static void main(String[] args) throws Exception
{
//获取键盘录入
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
//定义文件写入流,指定文件存放路径。定义文件写入流
FileWriter fw=new FileWriter("C:\\KeyBoarding.txt");
String line=null;
while((line=bufr.readLine())!=null)//
{
fw.write(line+"\r\n");//如果读取一行数据不为空就写入输入流。
if(line.equals("over"))
break;
fw.flush();//刷新输入流
}
bufr.close();//关闭输出流缓冲区。

}

}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: