黑马程序员_java07_IO
来源:互联网 发布:乡镇网络舆情监控制度 编辑:程序博客网 时间:2024/06/09 23:22
——- android培训、java培训、期待与您交流! ———-
java中提供了全面的输入输出流(IO)接口,包括标准的输入输出流,文件读写流,对象的串行化传输等,java中I/O是以流为基础进行的输入输出的,所有的数据进行串行化写入输出流,或者输入流流入。
流的概念
流是程序与外界进行数据交换的通道,在这个通道上传输的是有序的字节或者字符序列。流也是输入和输出设备的一种抽象表示,这些设备是数据源或者是数据终点,通过流,可以想数据终点所代表的设备写入数据,也可以从数据源中读取数据中读取数据。基于流的处理,简化了开发人员对于输入和输出处理的难度。当流作为数据写入的目的地时,该流被称为输出流。输出流可以连接硬盘上的文件,网络上的另一端等任何可以接收字节序列的设备。从提供数据的流称为输入流。输入流输出流称为“结点流”,结点流连接的就是文件,内存线程以及间的管道等,代表数据的来源和目的地。
字节流和字符流
字节流的两个基类 :InputStream OutputStream
字符流的两个基类:Reader Writer
为了提高输入输出流的效率引入缓冲流
BufferedInputStream BufferedOutStream BufferedReader BufferedWriter
输入流实例import java.io.*;class BufferedReaderDemo { public static void main(String[] args) throws IOException { FileReader fr=new FileReader("buf.txt"); BufferedReader br=new BufferedReader(fr); String line=null; while ((line=br.readLine())!=null) { System.out.println(line); } br.close(); }}
输出流实例
import java.io.*;class BufferedWriterDemo { public static void main(String[] args) throws IOException { FileWriter fw=new FileWriter("buf.txt"); BufferedWriter bf=new BufferedWriter(fw); for (int x=0;x<4 ;x++ ) { bf.write("abc"+x); bf.newLine(); bf.flush(); } bf.close(); }}
在一个程序中到底使用哪种流都需要进行一下判断,具体思路如下:
1.明确源和目的
源: 输入流。InputStream Reader
目的:输出流。OutputStream Writer
2.操作的数据是否是纯文本
是: 字符流
不是: 字节流
3.当体系明确后,在明确要使用哪个具体的对象
通过设备来进行区分:
源设备: 内存,硬盘,键盘
目的设备:内存,硬盘,控制台
讲一个文本文件中数据存储到另一个文件中,复制文件。
源: 因为是源,所以使用读取流。InputStream Reader
是不是操作文本文件。是,这时就可以选择Reader 。这个体系明确了。
是否需要提高效率,是,加入Reader体系中的缓冲区BufferedReade
现在一具体的复制MP3为例
(1)因为图片是二进制文件,所以要使用字节流InputStream与OutputStream
(2)因为MP3文件大于1M,需要提高效率,使用缓冲区BufferedInputStream与BufferedOutputStream
(3)不需要字节流与字符流之间的转化,不需要转换流
import java.io.*;class CopyMp3 { public static void main(String[] args)throws IOException { long start =System.currentTimeMillis(); copy2(); long end =System.currentTimeMillis(); System.out.println((end-start)+"ms"); } public static void copy2()throws IOException { MyBufferedInputStream bufis=new MyBufferedInputStream(new FileInputStream("二次曝光.bov")); BufferedOutputStream bofos=new BufferedOutputStream(new FileOutputStream("2.bov")); int by=0; while ((bufis.myRead())!=-1) { bofos.write(by); } bofos.close(); bufis.myClose(); } public static void copy_1()throws IOException { BufferedInputStream bufis=new BufferedInputStream(new FileInputStream("二次曝光.bov")); BufferedOutputStream bofos=new BufferedOutputStream(new FileOutputStream("1.bov")); int by=0; while ((bufis.read())!=-1) { bofos.write(by); } bofos.close(); bufis.close(); }}
转换流
InputStreamReader Out
该类为转换流,把一个字节输入流转换成一个字符输入流,使用该类转换时可以使用字符集解码器,默认为用户电脑系统使用的字节编码。
BufferedReader bufr
= new BufferedReader(newInputStreamReader(System.in));
上述代码描述了一个标准输入流(字节输入流)转换成字符缓冲区的输入流对象的过程。
- 黑马程序员_java07_IO
- 黑马程序员---------------
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- 黑马程序员
- mybatis实战教程(mybatis in action),mybatis入门到精通
- 轻松学习android百度地图开发(一)
- [Leetcode]Perfect Squares
- 记录一哈-mybatis使用generator生成代码
- TCP3次握手建立连接,4次握手断开连接
- 黑马程序员_java07_IO
- linux nginx 安装教程
- Java的ArrayList源码浅析
- 【Android】基于融云SDK的即时聊天工具
- SpringMvc+FreeMaker中json 时间格式转换
- htm和ashx接收参数(附Mime 类型列表)
- Java中super的几种用法并与this的区别
- mysql 年龄段划分
- 读Swift官方文档的收获(一)