Maison  >  Article  >  Java  >  Comment utiliser les méthodes de classe File en Java ?

Comment utiliser les méthodes de classe File en Java ?

WBOY
WBOYavant
2023-04-23 18:49:071036parcourir

Présentation de la classe File

La classe File représente les fichiers et répertoires indépendants de la plate-forme sous le package java.io. Le fichier peut créer, supprimer et renommer des fichiers et des répertoires, mais il ne peut pas accéder au contenu du fichier lui-même. Si vous devez accéder au contenu, vous devez y accéder via le flux d'entrée/sortie.

La classe File peut créer une instance File à l'aide d'une chaîne de chemin de fichier. Le chemin peut être soit un chemin absolu, soit un chemin relatif. Généralement, le chemin relatif est spécifié par la propriété système user.dir, qui est le chemin où se trouve la machine virtuelle Java.

Constructeurs communs de la classe File

    /**
     * Creates a new <code>File</code> instance by converting the given
     * pathname string into an abstract pathname.  If the given string is
     * the empty string, then the result is the empty abstract pathname.
     *
     * @param   pathname  A pathname string
     * @throws  NullPointerException
     *          If the <code>pathname</code> argument is <code>null</code>
     */
    public File(String pathname) {
        if (pathname == null) {
            throw new NullPointerException();
        }
        this.path = fs.normalize(pathname);
        this.prefixLength = fs.prefixLength(this.path);
    }

Méthodes communes de la classe File

  • public String getName() : Renvoie le nom du fichier ou du répertoire représenté par le verrou de l'objet File (s'il s'agit d'un répertoire, le dernier niveau le sous-répertoire est renvoyé).

  • public String getParent() : Renvoie le nom de chemin correspondant à cet objet File et renvoie le type String.

  • public File getParentFile() : renvoie le répertoire parent de cet objet File et renvoie le type de fichier.

  • public String getPath() : Renvoie le nom du chemin correspondant à cet objet File et renvoie le type String.

  • public boolean isAbsolute() : Détermine si le fichier ou le répertoire correspondant à l'objet File est un chemin absolu.

  • public String getAbsolutePath() : Renvoie le chemin absolu correspondant à cet objet File et renvoie le type String.

  • public String getCanonicalPath() lève IOException :

  • public File getCanonicalFile() lève IOException :

  • public File getAbsoluteFile() : renvoie le chemin absolu correspondant à cet objet File et renvoie le type de fichier.

  • public boolean canRead() : Détermine si le fichier ou le répertoire correspondant à cet objet File est lisible.

  • public boolean canWrite() : Détermine si le fichier ou le répertoire correspondant à cet objet File est accessible en écriture.

  • public boolean canExecute() : Détermine si le fichier ou le répertoire correspondant à cet objet File est exécutable.

  • public boolean exist() : Détermine si le fichier ou le répertoire correspondant à cet objet File existe.

  • public boolean isDirectory() : Déterminez si cet objet File est un répertoire.

  • public boolean isFile() : Détermine si cet objet File est un fichier.

  • public boolean isHidden() : Déterminez si cet objet File est masqué.

  • public long lastModified() : renvoie le dernier horodatage modifié de l'objet File. Nous pouvons le formater en affichage de l'heure et de la date via SimpleDateFormat simpleDateFormat = new SimpleDateFormat("aaaa-MM-jj HH:mm:ss"). ;

  • public boolean setLastModified(long time) : définit l'horodatage de la dernière modification de l'objet File.

  • public long length() : renvoie la longueur du contenu du fichier de l'objet File.

  • public boolean createNewFile() lance IOException : Lorsque le fichier correspondant à cet objet File n'existe pas, cette méthode créera un nouveau fichier spécifié par l'objet File. Si la création réussit, elle retournera true sinon, il reviendra faux.

  • public boolean delete() : Supprime le fichier ou le répertoire correspondant à l'objet File. Si la suppression réussit, elle renvoie true sinon, elle renvoie false ;

  • public void deleteOnExit() : demande que le fichier ou le répertoire désigné par ce chemin abstrait soit supprimé lorsque la machine virtuelle se termine. Cela signifie que le fichier ou le répertoire est supprimé lorsque la VM est arrêtée, contrairement à delete(). méthode Supprimer lorsqu’il est appelé. Il convient généralement aux fichiers temporaires.

  • public String[] list() : répertorie tous les noms de sous-fichiers et les noms de chemin de l'objet File et renvoie un tableau String.

  • public File[] listFiles() : répertorie tous les sous-fichiers et les noms de chemin de l'objet File et renvoie un tableau File.

  • public boolean mkdir() : crée un répertoire et ne peut créer des sous-classes que sous la classe parent existante. Si la classe parent n'existe pas, vous ne pouvez pas créer de sous-classe.

  • public boolean mkdirs() : Il crée également un répertoire, et peut créer des sous-dossiers lorsque le dossier parent n'existe pas. D'ailleurs, le dossier parent est également créé, de manière récursive.

  • public boolean renameTo(File dest) : Renommez le fichier ou le répertoire correspondant à cet objet File. Si le changement de nom réussit, retournez true sinon, retournez false.

  • public boolean setReadOnly() : définissez cet objet File sur une autorisation en lecture seule.

  • public boolean setWritable(boolean writable, booleanownerOnly) : paramètre d'autorisation d'écriture est vrai, l'accès en écriture est autorisé ; s'il est faux, l'accès en écriture n'est pas autorisé. OwnerOnly Si vrai, l'accès en écriture s'applique uniquement au propriétaire, sinon il s'applique à tout le monde.

  • public boolean setWritable(boolean writable) : L'implémentation sous-jacente est : implémentée via setWritable(writable, true), la valeur par défaut n'est applicable qu'au propriétaire du fichier ou du répertoire.

    public boolean setWritable(boolean writable) {
        return setWritable(writable, true);
    }
  • public boolean setReadable(boolean readable, booleanownerOnly) : paramètre d'autorisation de lecture si readable est vrai, l'autorisation d'accès en lecture est autorisée ; si elle est fausse, l'autorisation d'accès en lecture n'est pas autorisée. OwnerOnly Si vrai, l'accès en lecture s'applique uniquement au propriétaire, sinon il s'applique à tout le monde.

  • public boolean setReadable(boolean readable): 底层实现是:通过setReadable(readable, true)实现,默认是仅适用于文件或目录所有者。

    public boolean setReadable(boolean readable) {
        return setReadable(readable, true);
    }
  • public boolean setExecutable(boolean executable, boolean ownerOnly):执行权限设置,executable如果为true,允许执行访问权限;如果为false,执行访问权限是不允许的。ownerOnly如果为true,则执行访问权限仅适用于所有者;否则它适用于所有人。

  • public boolean setExecutable(boolean executable): 底层实现是:通过setExecutable(executable, true)实现,默认是仅适用于文件或目录所有者。

    public boolean setExecutable(boolean executable) {
        return setExecutable(executable, true);
    }
  • public static File[] listRoots():列出系统所有的根路径,可以直接通过File类进行调用。

  • public long getTotalSpace():返回总空间大小,默认单位为字节。

  • public long getFreeSpace():Returns the number of unallocated bytes in the partition,返回未被分配空间大小,默认单位为字节。

  • public long getUsableSpace():Returns the number of bytes available to this virtual machine on the partition,返回可用空间大小,默认单位为字节。

  • public Path toPath():返回该File对象的Path对象。

  • public static File createTempFile(String prefix, String suffix) throws IOException:在默认存放临时文件目录中,创建一个临时空文件。可以直接使用File类来调用,使用给定前缀、系统生成的随机数以及给定后缀作为文件名。prefix至少3字节长。如果suffix设置为null,则默认后缀为.tmp。

  • public static File createTempFile(String prefix, String suffix, File directory):在指定的临时文件目录directort中,创建一个临时空文件。可以直接使用File类来调用,使用给定前缀、系统生成的随机数以及给定后缀作为文件名。prefix至少3字节长。如果suffix设置为null,则默认后缀为.tmp。

常用方法示例

1)运行主类

package com.example.andya.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.nio.file.Path;
import java.text.SimpleDateFormat;

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) throws IOException {
        File file = new File("C:\\Users\\LIAOJIANYA\\Desktop\\filetest\\filedir02\\FileTest.txt");
        System.out.println("getName(): " + file.getName());
        System.out.println("getParent(): " + file.getParent());
        System.out.println("getParentFile(): " + file.getParentFile());
        System.out.println("getAbsolutePath(): " + file.getAbsolutePath());
        System.out.println("getAbsoluteFile(): " + file.getAbsoluteFile());
        System.out.println("getAbsoluteFile().getParent(): " + file.getAbsoluteFile().getParent());
        System.out.println("getPath(): " + file.getPath());
        System.out.println("isAbsolute(): " + file.isAbsolute());
        System.out.println("getCanonicalPath(): " + file.getCanonicalPath());
        System.out.println("getCanonicalFile(): " + file.getCanonicalFile());
        System.out.println("canRead(): " + file.canRead());
        System.out.println("canWrite(): " + file.canWrite());
        System.out.println("canExecute(): " + file.canExecute());
        System.out.println("exists(): " + file.exists());
        System.out.println("isDirectory(): " + file.isDirectory());
        System.out.println("isFile(): " + file.isFile());
        System.out.println("isHidden(): " + file.isHidden());
        System.out.println(file.setLastModified(1546275661));
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        System.out.println("lastModified(): " + simpleDateFormat.format(file.lastModified()));
        //在里面写了"123"这三个数字
        System.out.println("length(): " + file.length());
        File newFile01 = new File("C:\\Users\\LIAOJIANYA\\Desktop\\filetest\\filedir02\\FileTest1.txt");
        newFile01.createNewFile();
        newFile01.delete();

        File newDir1 = new File("C:\\Users\\LIAOJIANYA\\Desktop\\filetest\\filedir02\\dir1");
        System.out.println("mkdir(): " + newDir1.mkdir());

        File newDir2 = new File("C:\\Users\\LIAOJIANYA\\Desktop\\filetest\\filedir02\\dir2\\dir2-1");
        System.out.println("mkdirs(): " + newDir2.mkdirs());

        String[] fileList = file.getParentFile().list();
        System.out.println("========上一级目录下的所有文件和路径=========");
        for (String fileName : fileList) {
            System.out.println(fileName);
        }
        System.out.println("file重命名:" + file.renameTo(new File("C:\\Users\\LIAOJIANYA\\Desktop\\filetest\\filedir02\\FileTest.txt")));

        System.out.println("========上一级目录下的所有文件和目录=========");
        File[] files = file.getParentFile().listFiles();
        for (File fileName : files) {
            System.out.println(fileName.getName());
        }

        System.out.println("canRead(): " + file.canRead());

        //人为改为不可写
        System.out.println("setWritable(): " + file.setWritable(false, false));
        System.out.println("canWrite(): "  + file.canWrite());

        System.out.println("canExecute(): " + file.canExecute());

        System.out.println("========相对路径=========");
        //默认相对路径是user.dir即为当前工程所在位置
        System.out.println("user.dir:" + System.getProperty("user.dir"));
        File newFile = new File("test.txt");
        System.out.println("newFile文件是否存在:" + newFile.exists());
        newFile.createNewFile();
        System.out.println("新建newFile文件后是否存在:" + newFile.exists() + ", 路径为:" + newFile.getAbsolutePath());
        System.out.println("getName(): " + newFile.getName());
        System.out.println("getParent(): " + newFile.getParent());
        System.out.println("getParentFile(): " + newFile.getParentFile());
        System.out.println("getAbsolutePath(): " + newFile.getAbsolutePath());
        System.out.println("getAbsoluteFile(): " + newFile.getAbsoluteFile());
        System.out.println("getAbsoluteFile().getParent(): " + newFile.getAbsoluteFile().getParent());
        System.out.println("getPath(): " + newFile.getPath());
        System.out.println("isAbsolute(): " + newFile.isAbsolute());
        System.out.println("getCanonicalPath(): " + newFile.getCanonicalPath());
        System.out.println("getCanonicalFile(): " + newFile.getCanonicalFile());
        URI uri = newFile.toURI();
        System.out.println("URI:" + uri.toString());

        File[] listRoots = File.listRoots();
        System.out.println("========系统根目录下的所有文件和路径=========");
        for (File root : listRoots) {
            System.out.println(root);
        }

        System.out.println("getTotalSpace(): " + file.getTotalSpace()/1024/1024/1024 + " G");
        System.out.println("getFreeSpace(): " + file.getFreeSpace()/1024/1024/1024 + " G");
        System.out.println("getUsableSpace(): " + file.getUsableSpace()/1024/1024/1024 + " G");
        Path path = file.toPath();
        System.out.println("Path: " + path);
        SpringApplication.run(DemoApplication.class, args);
    }
}

2)运行结果:

getName(): FileTest.txt
getParent(): C:\Users\LIAOJIANYA\Desktop\filetest\filedir02
getParentFile(): C:\Users\LIAOJIANYA\Desktop\filetest\filedir02
getAbsolutePath(): C:\Users\LIAOJIANYA\Desktop\filetest\filedir02\FileTest.txt
getAbsoluteFile(): C:\Users\LIAOJIANYA\Desktop\filetest\filedir02\FileTest.txt
getAbsoluteFile().getParent(): C:\Users\LIAOJIANYA\Desktop\filetest\filedir02
getPath(): C:\Users\LIAOJIANYA\Desktop\filetest\filedir02\FileTest.txt
isAbsolute(): true
getCanonicalPath(): C:\Users\LIAOJIANYA\Desktop\filetest\filedir02\FileTest.txt
getCanonicalFile(): C:\Users\LIAOJIANYA\Desktop\filetest\filedir02\FileTest.txt
canRead(): true
canWrite(): false
canExecute(): true
exists(): true
isDirectory(): false
isFile(): true
isHidden(): false
true
lastModified(): 1970-01-19 05:31:15
length(): 3
mkdir(): false
mkdirs(): false
========上一级目录下的所有文件和路径=========
dir1
dir2
FileTest.txt
file重命名:true
========上一级目录下的所有文件和目录=========
dir1
dir2
FileTest.txt
canRead(): true
setWritable(): true
canWrite(): false
canExecute(): true
========相对路径=========
user.dir:C:\DATA\selfcode
newFile文件是否存在:true
新建newFile文件后是否存在:true, 路径为:C:\DATA\selfcode\test.txt
getName(): test.txt
getParent(): null
getParentFile(): null
getAbsolutePath(): C:\DATA\selfcode\test.txt
getAbsoluteFile(): C:\DATA\selfcode\test.txt
getAbsoluteFile().getParent(): C:\DATA\selfcode
getPath(): test.txt
isAbsolute(): false
getCanonicalPath(): C:\DATA\selfcode\test.txt
getCanonicalFile(): C:\DATA\selfcode\test.txt
URI:file:/C:/DATA/selfcode/test.txt
========系统根目录下的所有文件和路径=========
C:\
getTotalSpace(): 237 G
getFreeSpace(): 41 G
getUsableSpace(): 41 G
Path: C:\Users\LIAOJIANYA\Desktop\filetest\filedir02\FileTest.txt

3)结果的一些验证: a)文件长度以及修改时间

Comment utiliser les méthodes de classe File en Java ?

b)设置不可写后:

Comment utiliser les méthodes de classe File en Java ?

b)磁盘大小

Comment utiliser les méthodes de classe File en Java ?

c)user.dir路径

Comment utiliser les méthodes de classe File en Java ?

createTempFile临时文件创建示例

1)运行主类

        File file2 = new File("C:\\Users\\LIAOJIANYA\\Desktop\\filetest\\filedir01");
        File tmp01 = file2.createTempFile("tmp01", ".tmp");
        File tmp02 = file2.createTempFile("tmp02", ".tmp", file2);
        tmp02.deleteOnExit();

        File tmp03 = File.createTempFile("tmp03", null);
        System.out.println("tmp01: " + tmp01.getAbsolutePath());
        System.out.println("tmp02: " + tmp02.getAbsolutePath());
        System.out.println("tmp03: " + tmp03.getAbsolutePath());

2)运行结果

tmp01: C:\Users\LIAOJI~1\AppData\Local\Temp\tmp01870328708927314810.tmp
tmp02: C:\Users\LIAOJIANYA\Desktop\filetest\filedir01\tmp023046960943790159256.tmp
tmp03: C:\Users\LIAOJI~1\AppData\Local\Temp\tmp032224782289258299121.tmp

3)查看结果:

a)默认临时文件存放地址:

Comment utiliser les méthodes de classe File en Java ?

b)指定临时文件存放地址:

Comment utiliser les méthodes de classe File en Java ?

其中,如果需求中需要创建一个临时文件,这个临时文件可能作为存储使用,但在程序运行结束后需要删除文件,可以使用deleteOnExit()方法。

FilenameFilter文件过滤器示例

public String[] list(FilenameFilter filter)方法的使用。 1)运行主类

public class DemoApplication {

    public static void main(String[] args) {
        File file = new File("C:\\Users\\LIAOJIANYA\\Desktop\\filetest\\filedir02\\");
        String[] nameArr = file.list(((dir, name) -> name.endsWith(".doc")));
        for (String name : nameArr) {
            System.out.println(name);
        }   
    }
}

2)运行结果:

文件01.doc

3)验证:

Comment utiliser les méthodes de classe File en Java ?

其中,通过使用Lambda表达式,目标类型为FilenameFilter实现文件过滤,上面过滤了以.doc结尾的文件。

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer