java深入学习十一之IO流
来源:互联网 发布:linux 使用ftp 编辑:程序博客网 时间:2024/06/01 09:28
一、流(Stream)
1.java程序通过流来完成输入输出。例如,常用的System.out.println()中out就是System中一个 final static的PrintStream,还有控制台输入常用的Scanner scanner = new Scanner(System.in),in就是System中一个final static的InputStream。java程序或applet运行时,会自动创建3个流对象,System.in,System.out,System.error;
2.流是信息的抽象,是一序列的0和1,java可以通过流与物理设备通讯,交换信息,物理设备包括键盘,磁盘文件,网络等等。通过使用流,不需要知道理解物理设备的不同,例如键盘与网络,只需要使用相对应的流的类,而它的底层实现,java已经帮我们实现了。
3.根据程序中流的方向,从磁盘文件或控制台等到java程序,这是输入流;从java程序到磁盘文件或控制台等,这是输出流。
4.根据流的结构不同,可分为字节流和字符流(底层是字节流)。字节流是以字节为处理单位,字符流以字符为处理单位。字节为8个比特位,字符为多个字节。
5.字节流的输入输出基类是InputStream,OutputStream这两个抽象类,字符流的输入输出的基类是Reader,Writer这两个抽象类。其他流都是由这4个基类派生的,属于子类。下面是从他人博客找的图
6.字符流是对字节流的封装,操作更加简单,所以以字节流为例,了解各个类的功能。
- FileInputStream:文件输入流,操作文件
- FilterInputStream:过滤输入流,基本输入流只能读原始字节,这个类提供额外的功能,例如我们可以使用FilterInputStream的子类DateInputStream来将基本的字节过滤成整数,浮点数,等等。
- ObjectInputStream:与IO流的序列化相关
- PipedInputStream:管道(pipe)是线程间的同步通讯通道,线程之间用这两个类(包括PipedOutputStream)传输信息。
- SequenceInputStream:合并输入流
- StringBufferInputStream:(过时,不能正确将字节转化为字符,要用字符请使用StringReader)
- ByteArrayInputStream:字节数组输入流,ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。
关闭 ByteArrayInputStream 无效。此类中的方法在关闭此流后仍可被调用,而不会产生任何 IOException
7.例子
public static void main(String[] args) { try { StringBuilder sBuilder = new StringBuilder(); FileInputStream fin = new FileInputStream(new File("E:\\123.txt")); byte b[] = new byte[1024]; while(fin.read(b)!=-1){//这个程序有个bug,读取1024个byte,如果是中文,可能会截断, //如果是字符或数字等用一个byte表示的没问题,中文需要两个byte,这个是面向字节的输入流 sBuilder.append(new String(b).trim()); } System.out.println(sBuilder.toString()); FileOutputStream fou = new FileOutputStream(new File("E:\\456.txt")); fou.write(sBuilder.toString().getBytes()); fin.close(); fou.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
阅读全文
0 0
- java深入学习十一之IO流
- java基础学习IO流之字符流 十一 -3
- java基础学习IO流之字节流 十一 -4
- java基础学习IO流之缓冲流 十一 -5
- java基础学习IO流之其它流 十一 -6
- java基础学习IO流之File类 十一 -1
- java基础学习IO流之递归 十一 -2
- Java学习笔记之IO(十一):装饰者设计模式
- 黑马程序员java学习日记十一 IO流
- JAVA学习第五十七课 — IO流(十一)
- Java io 输入输出流(十一)
- 深入学习IO流
- 深入学习Java IO关闭
- Java学习之IO流
- Java之IO流学习
- Java语言深入 JAVA之精髓IO流
- Java语言深入:JAVA语言之IO流详解
- java学习之路 之 IO流
- EPOLL内核源代码实现原理分析
- 深度学习FPGA实现基础知识6(Deep Learning(深度学习)学习资料大全及CSDN大牛博客推荐)
- 剑指offer---二叉树中和为某一值的路径
- 机器学习经典书籍
- eclipse的一些常用快捷键
- java深入学习十一之IO流
- office-word使用技巧——常见问题
- [kuangbin带你飞]专题七 线段树 G POJ 3264
- Spring Cloud学习--容错机制(Hystrix之服务降级)
- 数字特征值
- The Skyline Problem解题心得
- angualr2 下载文件的两种方式
- color space
- pip加速器