Java I/O 学习小总结

来源:互联网 发布:阿里云ecs 挂载磁盘 编辑:程序博客网 时间:2024/04/26 19:08

光看书学技术其实不太可靠,要动手敲代码,并且网上资源很多,要吸取别人的经验,看视频也是很好的方式。

一开始学的时候没有专注于这一点,简单的看了马士兵的视频,用到的时候已经忘了。首先看的是《java语言程序设计 第八版》有点乱,不是很清楚,然后看的是达内的培训视频,似乎由于版权问题虽然讲的不错没看完。但也做了多少笔记。然后看了两个博客,才有了一个清晰的认识。

先贴上几个类图:


最主要的概念莫过于:流(Stream)。按不同的分类可以分为字节流和文本流。输入流和输出流。节点流和包装流。

java.io.File:表示(不是代表!)磁盘文件的路径。 File f = new File("C:\\abc.tex");系统不会去磁盘下搜索是否存在文件。在API下有很多方法,比如:delete().canReader().canWrite().exists().get...() mkdir()  separator()是静态属性。

这是一个讲的不错的博客这个写的真不错!


这是第二个

----------------------------------------更新--------------------------------------

补充一下第一个博客上没有说的之一的ByteArrayInputStream和ByteArrayOutputStream

这两个类是用IO的形式来完成对字符数组内容的读写,来支持类似虚拟化内存文件和内存映射文件的功能。在创建实例的时候,程序内部创建一个byte[] 型的缓冲区,然后里利用实例读写数据。

ByteArrayOutputStream:    可以捕获内存缓冲区的数据,转换成字节数组。

ByteArrayInputStream: 可以将字节数组转化为输入流

import java.io.*;public class test { public static void main(String[] args) {  int a=0;  int b=1;  int c=2;  ByteArrayOutputStream bout = new ByteArrayOutputStream();  bout.write(a);  bout.write(b);  bout.write(c);  byte[] buff = bout.toByteArray();  for(int i=0; i<buff.length; i++)   System.out.println(buff[i]);  System.out.println("***********************");  ByteArrayInputStream bin = new ByteArrayInputStream(buff);  while((b=bin.read())!=-1) {   System.out.println(b);  } }}

如上所示,ByteArrayOutputStream把内存中的数据读到字节数组中,而ByteArrayInputStream又把字节数组中的字节以流的形式读出,实现了对同一个字节数组的操作.

综合DataOutputStream&DataInputStream的作用和功能,与ByteArrayOutputStream和ByteArrayInputSream使用将更方便.此时DataOutputStream&DataInputStream封闭了字节流,以适当的形式读出了字节数组中的数据.如下所示:

import java.io.*;public class test { public static void main(String[] args)throws IOException {  ByteArrayOutputStream bout = new ByteArrayOutputStream();  DataOutputStream dout = new DataOutputStream(bout);  String name = "xxy";  int age = 84;  dout.writeUTF(name);  dout.writeInt(age);  byte[] buff = bout.toByteArray();  ByteArrayInputStream bin = new ByteArrayInputStream(buff);  DataInputStream dis = new DataInputStream(bin);  String newName = dis.readUTF();  int newAge = dis.readInt();  System.out.println(newName+":"+newAge); }}


0 0
原创粉丝点击