黑马程序员——IO流(1)
2014-10-13 10:21
239 查看
流的概念和作用:
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
Java IO流类图结构:
从上图可以看到,根据处理的数据类型的不同,分为字符流和字节流。字符流的本质是基于字节流,根据指定的码表可以对字符进行高效的流操作。字节流和字符流的区别:
(1)读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
(2)处理对象不同:字节流处理所有类型的数据(如图片、视频等),而字符流只能处理字符类型的数据。
结论:只有是处理纯文本数据,就优先考虑使用字符流。除此之外都使用字节流。
字符流:
向硬盘写入数据:
向硬盘读取数据:
字符流文件的复制:
其实,文件的复制就是一边读一边写,从上边的代码中就可以看出。
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
Java IO流类图结构:
从上图可以看到,根据处理的数据类型的不同,分为字符流和字节流。字符流的本质是基于字节流,根据指定的码表可以对字符进行高效的流操作。字节流和字符流的区别:
(1)读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。
(2)处理对象不同:字节流处理所有类型的数据(如图片、视频等),而字符流只能处理字符类型的数据。
结论:只有是处理纯文本数据,就优先考虑使用字符流。除此之外都使用字节流。
字符流:
向硬盘写入数据:
import java.io.*; public class IO_test1 { public static void main(String[] args) { FileWriter fw=null; try { //构造函数public FileWriter(String fileName, boolean append) //append - 一个 boolean 值,如果为 true,则将数据写入文件末尾处,而不是写入文件开始处。 即文件的续写 fw=new FileWriter("c:\\test.txt",true); fw.write("abcdefg"); //flush()刷新流 fw.flush(); //续写 fw.write("hello!"); fw.flush(); } catch (IOException e) { e.printStackTrace(); }finally{ //close()关闭流,并刷新,即flush try { if(fw!=null) fw.close(); } catch (IOException e) { e.printStackTrace(); } } } }
向硬盘读取数据:
import java.io.*; public class IO_test2 { public static void main(String[] args) { try { FileReader fr=new FileReader("c:\\test.txt"); //读取单个字符,直到末尾 //readOne(fr); //一次全部读取字符 readOnce(fr); } catch (FileNotFoundException e) { e.printStackTrace(); } } public static void readOne(FileReader fr){ try { int ch=0; while((ch=fr.read())!=-1){ System.out.print((char)ch); } } catch (IOException e) { e.printStackTrace(); } } public static void readOnce(FileReader fr){ //数组存储字符。因为知道文件大小,所以此处定义成了固定数组 char[] buff=new char[1024]; int num=0; try { while((num=fr.read(buff))!=-1){ //将字符数组转成字符串输出 System.out.println(new String(buff,0,num)); } } catch (IOException e) { e.printStackTrace(); } } }
字符流文件的复制:
import java.io.*; public class IO_test3 { public static void main(String[] args) { FileWriter fw=null; FileReader fr=null; try { fr=new FileReader("c:\\test.txt"); fw=new FileWriter("d:\\test1.txt"); char[] buff=new char[100]; int len=0; while((len=fr.read(buff))!=-1){ fw.write(buff, 0, len); } } catch (IOException e) { throw new RuntimeException("失败"); } finally{ if(fw!=null) try { fw.close(); } catch (IOException e) { e.printStackTrace(); } if(fr!=null) try { fr.close(); } catch (IOException e) { e.printStackTrace(); } } } }
其实,文件的复制就是一边读一边写,从上边的代码中就可以看出。
相关文章推荐
- 黑马程序员——IO流
- 黑马程序员——Java之IO流(一)
- 黑马程序员---IO流
- 黑马程序员---IO流
- 黑马程序员_学习笔记4 IO流以及正则表达式解决一个传智播客的问题
- 黑马程序员——IO流1
- 黑马程序员——io流的基本概况和分类
- 黑马程序员_IO流——FileStream
- 黑马程序员——【Java基础】——Java IO流
- 黑马程序员_java中的IO流
- 黑马程序员——Java基础——IO流笔记(ObjectInputStream和ObjectOutputStrem使用示例)
- 黑马程序员 IO流 流操作的基本规律
- 黑马程序员_IO流——管道流
- 黑马程序员_Java基础_IO流_字符流,带缓冲区的字符流,文本文件读写
- 黑马程序员_JAVA_IO流2
- 黑马程序员——JAVA基础------IO流(三)----字符流
- 黑马程序员—IO流FileWriter
- 黑马程序员_IO流知识总结
- 黑马程序员--IO流
- 黑马程序员-----Java基础IO流综合实例