文件操作总结更新(附文件输入和输出操作的简单说明)

      ===================java文件操作=======================
    前言:在java中,使用File类来进行相关的文件操作,可以通过File对象的方法创建文件对象、删除文件、列表目录下的文件以及判断文件是目录还是正式文件。
     File类的相关属性:
     1)public static String pathSeparator:表示当前操作系统的路径分隔符,因为在不同的操作系统下分隔符是不一样的,所以建议不要直接敲硬编码,要使用该属性代替硬编码。
     2)File类的构造器:
       一:File(File parent, String child)
         表示在父目录(文件)下创建一个名字为child的文件对象;
      
       二:File(String abc)
         表示创建一个 以abc为名字的File对象;

       三:File(String parent,String chlid)
         表示以名字为parent字符串作为父目录名,创建一个指向名为child的文件对象。

       注意:当我们通过File的构造器创建一个文件对象时,仅仅是在JVM内存中生成了一个File类型的对象,这时的对象与磁盘并没有任何关系,只有在调用这个对象时(其方法),该对象才会与磁盘上的某个或某些文件发生关系。

      3)File的一些重要方法
      boolean exists();
     String getname();
     boolean isDirectory();
     long length();
     File[] listFiles();
     boolean mkdirs();
     boolean delete();
     相关的用法参考JDK说明,还有许多实用的方法都可以在JDK中找到。

      4)利用File的相关属性及方法可以实现打印目录,查找目录的功能,可以使用递归方法判断并打印出目录及目录一下文件的相关信息。

=======================相关文件操作流的用法==========================
    在上面我们知道了java中可以用File对象来创建文件对象,也可以查看文件的相关信息,比如说相对路径和绝对路径等;但我们要的是如何对这些创建出来的文件进行我们想要的操作,而不是只是为了创建没用的文件或文件夹。为此我将介绍java中一些简单的可以操作文件的流操作。
    所谓流操作,顾名思义就是类似于水流,有水管封装的流状态,在java的io机制中,把流也当成是类来看待,只要我们创建了流对象,就可以对文件进行读写操作了。
    在java中,为了对不同来源和性质的流对象调用同一的方法,系统首先定义了顶层输入与输出流的接口和抽象类,以方便使用,建议尽量按照在具体流中所实现的接口(抽象类)中定义的方法使用。
   
    (一)InptStream是一个抽象类,它有多种适用于不同用途的具体实现类,大家可以参考JDK资料,在这里只介绍FileInptStream。
    用法:在程序中按照上面所说的操作创建一个测试文件(可以直接在文件夹下创建),然后我们创建一个流对象,流对象的构造函数的参数类表中,参数为文件名,如:
    java.io.InputStream in = new java.io.FileInputStream(文件名);
    这句话表示创建一个流对象,并把它“绑定”在文件名所指的文件上,我们就可以通过这个流对象来读入该文件中的数据了。读入的方法在编写程序时系统(eclipse)会有自动提示,按照提示使用符合自己要求的方法即可。

    (二)在InputStream的子类中还有一个比较常用的DataInputStream类,该类主要用于读入基本数据(八大基本类型的数据),怎么写入,就怎么读出来。所以想要读入,就必须知道是怎么写进去的。注意:DataInputStream是InputStream的一个子类,它的地位不等同于FileInptStream,它的构造函数参数为FileInptStream对象,可以简单理解为它是用来包装FileInptStream对象的。(即在水管上加以限制使之成为专门输送基本数据的水管,并不是重新在文件上安装一根专门输送解基本数据的水管)
   
    (三)缓冲流
     当我们要读写的文件太大时,我们会发现单纯使用以上的流对象很浪费时间,不怕,java虚拟机为我们提供了缓冲流来实现提速。可以理解为缓冲流是与DataInputStream地位相等的,它也是包装FileInptStream流对象的。不过它的主要功能是把数据一块一块(而不是一个字节一个字节)读入或读出,大家可以比较两者所用的时间,可以发现不用缓冲流的时候时间是大大增加了。所以在文件较大时,推荐使用缓冲流。

    (四)以上所介绍的只是读入流,输出流的用法与之相当接近,只是输出流的操作是在内存上进行的,(输入流也是)我们想要的就是把输出的数据保存,故在输出流操作最后一步还必须使用输出流特有的flush方法来进行保存数据。无论是输入还是输出,使用完文件后必须用close方法关闭文件,防止文件出现意想不到的故障,要养成这个良好的习惯。

你可能感兴趣的:(jvm,jdk)