黑马程序员_javaIO流(一)

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

一、io概述


字节流两个基类:
InputStream   OutputStream
字符流两个基类:
Reader Writer
注:由这四个类派生出来的子类名称都是 以其父类名作为子类名的后缀。

流的基本应用小节
流是用来处理数据的。
处理数据时,一定要先明确数据源,与数据目的地。
数据源可以是文件,可以是键盘。
数据目的地可以是文件、显示器或者其他设备。
而流只是在帮助数据进行传输,并对传输的数据进行处理,比如过滤处理.
转换处理等。

选择流的思路:
      先考虑是输入流还是输出流,
      再考虑是字节流还是字符流,
      最后考虑是节点流还是处理流。


二、字符流
字符流----创建文件
创建流对象,建立数据存放文件
FileWriter fw = new FileWriter(“Test.txt”);
调用流对象的写入方法,将数据写入流
fw.write(“text”);
关闭流资源,并将流中的数据清空到文件中。
fw.close();
创建文件代码:
FileWriter fw = null;
try{
fw = new FileWriter("Test.txt");
fw.write("text");
}
catch (IOException e){
System.out.println(e.toString());
}
finally{
If(fw!=null)
try{
fw.close();
}
catch (IOException e){
System.out.println(e.toString());
}
}


字符流——读取文件
 
建立一个流对象,将已存在的一个文件加载进 流。
FileReader fr = new FileReader(“Test.txt”);
创建一个临时存放数据的数组。
char[] ch = new char[1024];
调用流对象的读取方法将流中的数据读入到数组 中。
fr.read(ch);
读取文件代码:
FileReader fr = null;
try{
fr = new FileReader("c:\\test.txt");
char[] buf = new char[1024];
int len= 0;
while((len=fr.read(buf))!=-1){
System.out.println(new String(buf,0,len));
}
}
catch (IOException e){
System.out.println("read-Exception :"+e.toString());
}
finally{
if(fr!=null){
try{
fr.close();
}
catch (IOException e){
System.out.println("close-Exception :"+e.toString());

}


注意:
定义文件路径时,可以用“/”或者“\\”。
 
在创建一个文件时,如果目录下有同名文件将被覆盖。
 
在读取文件时,必须保证该文件已存在,否则出异常。


字符流的缓冲区
 
缓冲区的出现提高了对数据的读写效率。
 对应类
BufferedWriter
BufferedReader
缓冲区要结合流才可以使用。
在流的基础上对流的功能进行了增强。


装饰设计模式
 
对原有类进行了功能的改变,增强。
 
装饰模式的基本格式。
 
它与继承有什么不同?
 
了解BufferedReader的原理。


三、字节流
基本操作与字符流类相同
但它不仅可以操作字符,还可以操作其他 媒体文件


四、转换流
InputStreamReader,OutputStreamWriter
转换流的由来
字符流与字节流之间的桥梁
方便了字符流与字节流之间的操作
转换流的应用
字节流中的数据都是字符时,转成字符流操作更高效



五、标准输入输出流
 
System类中的字段:in,out。
它们各代表了系统标准的输入和输出设备。
默认输入设备是键盘,输出设备是显示器。
 
System.in的类型是InputStream.

System.out的类型是PrintStream

是OutputStream的子类FilterOutputStream 的子类.


标准输入输出流示例
 
例:获取键盘录入数据,然后将数据流向显示器,那么显示器就是目的地。
 
通过System类的setIn,setOut方法对默认设备进行改变。
System.setIn(new FileInputStream(“1.txt”));//将源改成文件1.txt
System.setOut(new FileOutputStream(“2.txt”));//将目的改成文件2.txt
 
因为是字节流处理的是文本数据,可以转换成字符流,操作更方便。
 
BfferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));
 
BufferedWriter bufw =
new BufferedWriter(new OutputStreamWriter(System.out));


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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值