• file类


    一》。java.io.File类
     1.凡是与输入、输出相关的类、接口等都定义在java.io包下
     2.File是一个类,可以有构造器创建其对象。此对象对应着一个文件(.txt .avi .doc .ppt .mp3 .jpg)或文件目录
     3.File类对象是与平台无关的。
     4.File中的方法,仅涉及到如何创建、删除、重命名等等。只要涉及文件内容的,File是无能为力的,必须由io流来完成。
     5.File类的对象常作为io流的具体类的构造器的形参。
      路径:
         * 绝对路径:包括盘符在内的完整的文件路径
         * 相对路径:在当前文件目录下的文件的路径
     
    1.File类:
    • java.io.File类:文件和目录路径名的抽象表示形式,与平台无关
    • File能新建、删除、重命名文件和目录,但File不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。
    • File对象可以作为参数传递给流的构造函数;
     
    常见的构造方法:
    • File类的常见构造方法:
    • public File(String pathname)

             以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。

    • public File(String parent,String child)
              以parent为父路径,child为子路径创建File对象。
    • File的静态属性String separator存储了当前系统的路径分隔符。
    • 在UNIX中,此字段为‘/’,在Windows中,为‘\’

    访问文件名:

    • getName():获取文件名
    • getPath():获取路径
    • getAbsoluteFile():绝对文件名
    • getAbsolutePath():绝对文件路径
    • getParent():上一层目录
    • renameTo(FilenewName):重命名,注意括号内的文件一定不存在,重命名的文件必须存在
     
    File file1 = new File("d:/io/helloworld.txt");
            System.out.println(file1.getName());
            System.out.println(file1.getPath());
            System.out.println(file1.getAbsoluteFile());
            System.out.println(file1.getParent());
            System.out.println(file1.getAbsolutePath());
     

    文件检测:

    • exists():是否存在
    • canWrite():是否可以写入内容
    • canRead():是否可读
    • isFile():是不是文件
    • isDirectory():是不是文件目录
    获取常规文件信息
    • lastModified():最后的修改时间  
    • length()
     
    File file1 = new File("d:/io/helloworld.txt");
            System.out.println(file1.exists());
            System.out.println(file1.canWrite());
            System.out.println(file1.canRead());
            System.out.println(file1.isFile());
            System.out.println(file1.isDirectory());
            System.out.println(new Date(file1.lastModified())); //转成当前的时间
            System.out.println(file1.length());
     

    文件操作相关

    • createNewFile():创建新的文件
    • delete():删除文件
     
    File file1 = new File("d:/io/helloworld.txt");
            System.out.println(file1.delete());
     
            if(!file1.exists()){
                boolean b = file1.createNewFile();
                System.out.println(b);
            }
     
            File file2 = new File("d:\io1\io2");
            if(!file2.exists()){
                boolean b = file2.mkdirs();
                System.out.println(b);
            }
     
    目录操作相关
     
    • mkDir():创建一个文件目录。只有在上层文件目录存在的情况下才返回true
    • mkDirs():创建一个文件目录。若上层文件目录不存在,一并创建
    • list():以string型的数组列出来的,只读出文件名
    • listFiles():
     
    File file3 = new File("d:\teach");
            String[] strs = file3.list();
            for(int i = 0;i < strs.length;i++){
                System.out.println(strs[i]);
            }
     
            System.out.println();
     
            File[] files = file3.listFiles();
            for(int i = 0;i < files.length;i++){
                System.out.println(files[i].getName());
            }
     
    File dir1 = new File("D:/IOTest/dir1");
    if (!dir1.exists()) {     // 如果D:/IOTest/dir1不存在,就创建为目录
      dir1.mkdir();
    }
    // 创建以dir1为父目录,名为"dir2"的File对象
    File dir2 = new File(dir1, "dir2");
    if (!dir2.exists()) { // 如果还不存在,就创建为目录
      dir2.mkdirs();
    }
    File dir4 = new File(dir1, "dir3/dir4");
    if (!dir4.exists()) {
      dir4.mkdirs();
    }
    // 创建以dir2为父目录,名为"test.txt"的File对象
    File file= new File(dir2, "test.txt");

    if (!file.exists()) { // 如果还不存在,就创建为文件
      file.createNewFile();
    }
    IO流分类:
    按流向分: 输入流 输出流 
    按处理的单位: 字节流(8 位的字节) 字符流(16 位的字节)
     按流的角色 :
    节点流:可以从一个特定的 IO 设备读/写数据的流
     处理流:对一个已存在的流进行连接和封装,通过封装后的流来实现数据读/写操作 
    2.java IO原理:
    • IO流用来处理设备之间的数据传输。
    • java程序中,对于数据的输入/输出操作以“流(stream)”的方式进行;
    • java.io包下提供了各种"流"类和接口,用以获取不同种类的数据,并通过标准的方法输入或输出数据。
     
    输入input:读取外部数据(磁盘等存储设备的数据)到程序(内存)中;
    输出output:将程序数据输出到磁盘等存储设备中;
    3.流的分类:
    • 按操作数据单位不同分为:字节流(8 bit),字符流(16 bit) 
    • 按数据流的流向不同分为:输入流,输出流
    • 按流的角色的不同分为:节点流,处理流(加速节点流的传输)
     
    字节流:以byte为单位传输;
    字符流:以char为单位传输;
    节点流:直接作用在文件上的,可以从一个特定的数据源读写数据;
    处理流:(加速节点流的传输)“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。
    注意:使用FileReader  FileWriter可以实现文本文件的复制。对于非文本文件(图像,音频)只能使用字节流
    节点流:(输入)FileInputStream、FileReader
                   (输出) FileOutputStream、FileWriter
    缓冲流:(输入流):BufferedInputStream、BufferedReader
                     (输出流):BufferedOutputStream、BufferedWriter
    (抽象基类)
    字节流
    字符流
    输入流
    InputStream
    Reader
    输出流
    OutputStream
    Writer
     
    java.io.Reader和java.io.InputStream组成了java输入类,Reader用于读入16位字符,也就是Unicode编码的字符;
    而InputStream用于读入ASC||字符和二进制数据。
    reader支持16位的UNicode字符输出,inputstream支持8位的字符输入;
     
  • 相关阅读:
    gRPC错误码 http状态码 provide your APIs in both gRPC and RESTful style at the same time
    rust
    lz4 1
    剖析美团内部所采用的网站压力测试方案
    【NOIP2002提高组T4】矩形覆盖-DFS剪枝
    【NOIP2002提高组T4】矩形覆盖-DFS剪枝
    【POJ2777】Count Color-线段树区间更新
    【POJ2777】Count Color-线段树区间更新
    【NOIP2005提高组T3】篝火晚会-置换群
    【NOIP2005提高组T3】篝火晚会-置换群
  • 原文地址:https://www.cnblogs.com/gmj0113/p/5665625.html
Copyright © 2020-2023  润新知