JavaSE基础九----<IO流 >File类

Posted 小智RE0

tags:

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


什么是IO流


JavaIO流,是一种计算机用语。主要是用于处理数据的传输。
1.按流的方向分为:输入流和输出流
2.按流的数据单位不同分为:字节流和字符流
3.按流的功能不同分为:节点流和处理流


File类


位于java.io包中.

File类的对象可以表示文件,还可以表示目录,在程序中一个File类对象可以代表计算机一个的文件或目录;

File对象可以对文件或目录的属性进行操作,如:文件名、最后修改日期、文件大小等;
File对象无法操作文件的具体数据,即不能直接对文件进行读/写的操作。

构造方法

方法注释
File(File parent, String child)从父路径名和子路径名字符串创建新的 File实例。
File(String pathname)通过将给定的路径名字符串转换为路径名来创建新的 File实例。
File(String parent, String child)从父路径名字符串和子路径名字符串创建新的 File实例。
File(URI uri)通过将给定的 file: URI转换为路径名来创建新的 File实例。

前三种构造方法:

注意:这里的文件的路径可以用"/“反斜杠或者用”\\"双斜线;
File f1=new File(“F:/Demo01.txt”);
File f2=new File(“F:\\Demo02.md”);

 //构造方法
//1.public File( String pathname);
//在指定的文件(目录)的路径创建文件对象;
//注意:这里的文件的路径可以用"/"反斜杠或者用"\\\\"双斜线;
//例如:在F盘创建Demo01,Demo02文件的对象;
File f1=new File("F:/Demo01.txt");
File f2=new File("F:\\\\Demo02.md");

//2.public File(String parent,String child);
//通过在给定的路径名字符串转换为路径名来创建新的 File实例。
//例如:在F盘创建Demo03文件的对象;
String s="F:\\\\";
File f3=new File(s,"Demo3.txt");

//3.public File( File parent,String child);
//在父路径名来对子路径名字符串创建新的 File实例。
File f4=new File("F:\\\\");
File f5=new File(f4,"Demo05.txt");

在创建对象时,不会检测文件是否存在


常用方法

(1)部分获取方法和判断方法.

方法用法
public long length( )获取文件的长度(获取的是字节长度)
public String getName( )获取该文件的名字
public String getParent( )获取该文件的上一级;(返回的是字符串形式)
public File getParentFile( )获取该文件的上一级(返回文件路径)
public String getAbsolutePath( )获取该相对路径文件的绝对路径字符串形式
public File getAbsoluteFile( )获取该相对路径文件的绝对路径
public String getPath( )获取文件的地址
public long lastModified( )返回文件最后一次操作的时间;(long类型的)
public boolean exists( )判断文件是否存在;
public boolean canRead( )判断文件是否为可读
public boolean canWrite( )判断文件是否为可写
public boolean canExecute( )判断文件是否可被执行
public boolean isAbsolute( )判断该创建对象的文件是否为绝对路径的
public boolean isDirectory( )判断该文件是否为一个文件夹
public boolean isHidden( )判断该文件是否为隐藏文件

关于相对路径和绝对路径;

  • 绝对路径:是从盘符开始的路径,形如
    C:\\windows\\system32\\cmd.exe
  • 相对路径:是从当前路径开始的路径,假如当前路径为C:\\windows
    要描述上述路径,只需输入
    system32\\cmd.exe
  • 实际上,严格的相对路径写法应为.\\system32\\cmd.exe
    其中,.表示当前路径,在通道情况下可以省略,只有在特殊的情况下不能省略。
    假如当前路径为c:\\program files
    要调用上述命令,则需要输入
    …\\windows\\system32\\cmd.exe
    其中,…为父目录。
    当前路径如果为c:\\program files\\common files
    则需要输入
    …\\windows\\system32\\cmd.exe
    另外,还有一种不包含盘符的特殊绝对路径,形如
    \\windows\\system32\\cmd.exe
    无论当前路径是什么,会自动地从当前盘的根目录开始查找指定的程序。
    (来自百度百科)

上面的(1)方法演示:

import java.io.File;
/**
 * @create 2021-05-18 19:32
 * File类的常用方法
 *部分获取方法,判断方法;
 */
public class Demo02 {
    public static void main(String[] args) {
        File f=new File("F:/Demo1.txt");
        //1.public long length();
        //获取文件的长度(获取的是字节长度);
        System.out.println(f.length());//16
        //2.public String getName()
        //获取该文件的名字;
        System.out.println(f.getName());//Demo1.txt
        //3.public String getParent();
        //获取该文件的上一级;(返回的是字符串形式)
        System.out.println(f.getParent());// F:\\
        //4.public String getAbsolutePath()
        //获取该相对路径文件的绝对路径字符串;
        System.out.println(f.getAbsolutePath());// F:\\Demo1.txt
        //5.public String getPath()
        //获取文件的地址;
        System.out.println(f.getPath());//F:\\Demo1.txt
        //6.public long lastModified( )
        //返回文件最后一次操作的时间;(long类型的)
        System.out.println(f.lastModified());//1621334347878
        //7.public boolean exists( );
        //判断文件是否存在;
        System.out.println(f.exists());//true
        //8.public boolean canRead()
        //判断文件是否为可读;
        System.out.println(f.canRead());//true
        //9.public boolean canWrite()
        //判断文件是否为可写;
        System.out.println(f.canWrite());//true
        //10.public boolean canExecute();
        //判断文件是否可被执行;
        System.out.println(f.canExecute());//true
        //11.public boolean isAbsolute( )
        //判断该创建对象的文件是否为绝对路径的;
        System.out.println(f.isAbsolute());//true
        //12.public boolean isDirectory( )
        //判断该文件是否为一个文件夹;
        System.out.println(f.isDirectory());//false
        //13.public boolean isHidden( )
        //判断该文件是否为隐藏文件;
        System.out.println(f.isHidden());//false
    }
}

(2)其他方法.

方法用法
public boolean createNewFile( )判断文件是否存在;文件不存在就创建一个,返回true;若文件已存在,则返回false;(由于会有文件不存在的状况,所以调用这个方法时,需要捕获异常或者抛出异常.
public boolean delete( )判断是否删除文件;若文件不存在,则返回false;若文件存在,删除文件且返回true;在删除文件夹时,文件夹必须为空
  • public boolean mkdir( )
    创建由此抽象路径名命名的目录(文件夹);只能创建单级的文件夹;
    若文件夹已经存在,则返回false;若不存在则创建且返回true.
//执行一次创建一次;
File f3=new File("F:/RE01/RE02");
System.out.println(f3.mkdir());

在这里插入图片描述

  • public boolean mkdirs( )
    创建由此抽象路径名命名的目录,包括任何必需但不存在的父目录;
    可以创建多级文件夹.
    若文件夹已经存在,则返回false;若不存在则创建且返回true;
    一次执行直接创建;
//一次执行直接创建;
File f4=new File("F:/RES1/RES2");
System.out.println(f4.mkdirs());

在这里插入图片描述


  • public String[ ] list( )
    获取指定目录下的所有子级文件(目录)名;
    以字符串数组形式返回文件(目录)名.
//5.public String[] list( )
//获取指定目录下的所有子级文件(目录)名;
  File f5=new File("F:/JAVAIO流练习使用的文件夹");
  String[] s=f5.list();
  //遍历
   for (String s1:s) {
      System.out.println(s1);
    }

在这里插入图片描述


  • public String[ ] list(FilenameFilter filter)
    返回一个字符串数组,返回由此抽象路径名表示的目录中满足指定过滤器的文件(目录)名。
    即可以添加筛选条件,来获取文件(目录)名
public String[] list(FilenameFilter filter);
//返回一个字符串数组,返回由此抽象路径名表示的目录中满足指定过滤器的文件(目录)名。
   String [] string=f5.list(new FilenameFilter() {
      @Override
      public boolean accept(File dir, String name) {
          //指定返回以docx结尾的文件;
          return name.endsWith("docx");
           }
       });
      for (String s2:string) {
          System.out.println(s2);
    }

在这里插入图片描述


  • public File[ ] listFiles( )
    返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
File f5=new File("F:/JAVAIO流练习使用的文件夹");
//7.public File[] listFiles( )
//返回一个抽象路径名数组,表示由该抽象路径名表示的目录中的文件。
    File[] files0=f5.listFiles();
    for (File file:files0) {
       System.out.println(file);
    }

在这里插入图片描述


  • public File[] listFiles(FilenameFilter filter)
    返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
File f5=new File("F:/JAVAIO流练习使用的文件夹");
//8.public File[] listFiles(FilenameFilter filter);
//返回一个抽象路径名数组,表示由此抽象路径名表示的满足指定过滤器的目录中的文件和目录。
  File[] files1=f5.listFiles(new FilenameFilter() {
  @Override
  public boolean accept(File dir, String name) {
       //指定返回以docx结尾的文件;
       return name.endsWith("docx");
       }
   });
  for (File file:files1) {
      System.out.println(file);
   }

在这里插入图片描述


方法用法
public boolean renameTo(File dest)指定文件重命名;dest:更改后的文件名
public static File[] listRoots()列出可用的文件系统根目录
public int compareTo(File pathname)如果参数等于此抽象路径名,则为零,如果此抽象路径名在字典上小于参数,则小于零的值,或者如果此抽象路径名在词法上大于参数,则该值大于零;如果文件名字符串的首字母相同,则返回两个字符串的长度差值。否则返回两个字符串首字母的小写字母的ASCII码的差值
public boolean equals(Object obj)判断此抽象路径名与给定对象的相等性。当且仅当对象相同时为true;否则false
public boolean setReadable(boolean readable)一种方便的方法来设置所有者对此抽象路径名的读取权限
public boolean setReadable(boolean readable,boolean ownerOnly)设置此抽象路径名的所有者或私有的读取权限。 readable - 如果为 true,则设置允许读操作的访问权限;如果为 false,则不允许读操作。owneronly - 如果为 true,则读权限只适用于所有者的读权限;否则适用于所有用户。如果底层文件系统不能区分所有者读权限与其他读权限,那么无论该参数为何值,读权限将适用于所有用户。;返回值:;当且仅当操作成功时返回 true。如果用户不具有更改此抽象路径名访问权限的权限,那么操作将失败。如果 readable 为 false,并且底层文件系统不实现读权限,那么操作也将失败。
public boolean setReadOnly( )设置文件为只读
public boolean setWritable(boolean writable)设置文件为可写
public boolean setWritable(boolean writable,boolean ownerOnly)设置此抽象路径名的所有者或每个人的写入权限
public java.nio.file.Path toPath( )返回从此抽象路径构造的java.nio.file.Path对象
public String toString()返回此抽象路径名的路径名字符串
public java.net.URI toURI()构造一个表示此抽象路径名的 file: URI


以上是关于JavaSE基础九----<IO流 >File类的主要内容,如果未能解决你的问题,请参考以下文章

JavaSE基础九----<IO流 >流的体系和分类,字节流,字节缓冲流

JavaSE基础九---<IO流 >print打印流,对象输入输出流,对象序列化,transient关键字

[javaSE] IO流(FIle对象递归文件列表)

Java-011-Java流(Stream)文件(File)和IO

Java全栈JavaSE:25.File类和IO流

JavaSE复习File类与IO流