IO流

Posted zhulina-917

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO流相关的知识,希望对你有一定的参考价值。

1. 文件系统和File类

     File类在Java.io包中   对于一个File对象来说它能够代表硬盘上的一个文件或者文件夹

      原理:当我们创建一个File对象时,在内存中分配了一块内存区域,创建一个File对象并不会在系统中真的创建一个文件或者文件夹,而只在JVM内存中

                  创建了一个对象,通过这个对象能够跟磁盘打交道,从而操作底层的文件。因此File对象所代表的的文件或者文件夹可能不存在。

 

      1、 File有四个构造方法其中三个比较常用

               (1)  File(String pathname) :     表示一个路径名 用来创建一个文件或者文件夹

                    (2)     File(String parent, String child) :   用来构建parent/child 的文件或者文件夹

                  (3)   File(File parent, String child) :     同样用 parent 表示父目录,只不过这个 parent 是用 File 类型来表示。

        2、   File 类的一些基本操作

               (1)    createNewFile() : 这个方法可以用来创建一个新文件。需要注意的是,如果这个文件在系统中已经存在,createNewFile 方法不会覆盖原有文件。

               (2)    mkdir() / mkdirs() : 这两个方法都可以用来创建文件夹。所不同的是,mkdir 只能创建一层文件夹,而 mkdirs 能够创建多层文件夹。

 

                  (3)      delete() : 这个方法能够删除 File 所代表的文件或者文件夹。
 
                  (4)      deleteOnExit() : 这个方法也能用来删除文件或者文件夹。所不同的是,delete()方法被调用时,这个文件或者文件夹会被立刻删除,而 deleteOnExit()方法被调用                                         后,文件或者文件夹并不会立刻被删除,而会等到程序退出以后再删除。
 
                   (5)      getPath() : 返回路径
                   (6)      getName() : 返回文件名
                   (7)     getParent() : 返回所在的文件夹

2.   IO 分类  问题引入

            1.     所谓的流,指的是:用来传输数据的对象

            2.     流可以按照方向分类,分为输入流和输出流

 

            3.     流可以按照数据单位分类,分为字节流和字符流

             4.      流可以按照功能分类,分为节点流和过滤流

            5.     任何数据都可以按照字节的方式进行传输。

             问题:汉字占用的有时并不是一个字节如果使用字节传输 ,传输过程中出现传输错误只保留半个汉字出现这种错误

             解决:字符流

         1. 字符流    

                字符流传输数据的单位是字符。这种流专门用于处理文本,能够方便的处理字符编码的问题。

          2. 节点流

               真正能够完成传输功能的流,而相对的,过滤流并不能完成真正的数据传输,过滤流是用来为其他流增强功能。

 3. 设计模式         

            在节点流和过滤流的设计上,I/O 框架中使用了一种设计模式,这种设计模式被称为“装饰模式”。

                                                      技术图片

 

 

在 I/O 框架中对应的概念就是节点流。而零件的那些子类,是为枪械增强功能的,本身并不能完成射击的功能,因此对应于 I/O 的概念,就是过滤流。

                                   技术图片

 

 

4. 字节流

          (1).   特点:数据单位是字节,能够处理任何一种文件

            (2) .      InputStream 和OutputStream  所有字节流的父类         

                               

 

             FileInputStream 

                (1)FileInputStream(Sting filename):通过文件路径获得文件输入流

                (2)FileFileInputStream(File file): 通过

 

以上是关于IO流的主要内容,如果未能解决你的问题,请参考以下文章

IO流之IO流综述

IO异常--缓冲流--转换流--序列化流( IO流2 )

IO流(序列流)

java中的io流都有哪些

java IO流 IO流概述

IO流