Heim  >  Artikel  >  Java  >  Wie verwende ich Dateiklassenmethoden in Java?

Wie verwende ich Dateiklassenmethoden in Java?

WBOY
WBOYnach vorne
2023-04-23 18:49:07991Durchsuche

Übersicht über die Dateiklasse

Die Dateiklasse repräsentiert plattformunabhängige Dateien und Verzeichnisse unter dem java.io-Paket. Die Datei kann Dateien und Verzeichnisse erstellen, löschen und umbenennen, aber nicht auf den Dateiinhalt selbst zugreifen. Wenn Sie auf den Inhalt zugreifen müssen, müssen Sie über den Eingabe-/Ausgabestream darauf zugreifen.

Die File-Klasse kann eine File-Instanz mithilfe einer Dateipfadzeichenfolge erstellen. Der Pfad kann entweder ein absoluter Pfad oder ein relativer Pfad sein. Im Allgemeinen wird der relative Pfad durch die Systemeigenschaft user.dir angegeben. Dabei handelt es sich um den Pfad, in dem sich die Java VM befindet.

Gemeinsame Konstruktoren der File-Klasse

    /**
     * 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);
    }

Gemeinsame Methoden der File-Klasse

  • public String getName(): Gibt den Dateinamen oder Verzeichnisnamen zurück, der durch die File-Objektsperre dargestellt wird (wenn es sich um ein Verzeichnis handelt, die letzte Ebene). Unterverzeichnis wird zurückgegeben).

  • public String getParent(): Gibt den Pfadnamen zurück, der diesem Dateiobjekt entspricht, und gibt den String-Typ zurück.

  • public File getParentFile(): Gibt das übergeordnete Verzeichnis dieses Dateiobjekts und den Dateityp zurück.

  • public String getPath(): Gibt den Pfadnamen zurück, der diesem Dateiobjekt entspricht, und gibt den String-Typ zurück.

  • public boolean isAbsolute(): Bestimmen Sie, ob die dem Dateiobjekt entsprechende Datei oder das Verzeichnis ein absoluter Pfad ist.

  • public String getAbsolutePath(): Gibt den absoluten Pfad zurück, der diesem Dateiobjekt entspricht, und gibt den String-Typ zurück.

  • public String getCanonicalPath() löst IOException aus:

  • public File getCanonicalFile() löst IOException aus:

  • public File getAbsoluteFile(): Gibt den absoluten Pfad zurück, der diesem Dateiobjekt entspricht, und gibt den Dateityp zurück.

  • public boolean canRead(): Bestimmen Sie, ob die diesem Dateiobjekt entsprechende Datei oder das Verzeichnis lesbar ist.

  • public boolean canWrite(): Bestimmen Sie, ob die diesem Dateiobjekt entsprechende Datei oder das Verzeichnis beschreibbar ist.

  • public boolean canExecute(): Bestimmen Sie, ob die diesem Dateiobjekt entsprechende Datei oder das Verzeichnis ausführbar ist.

  • öffentlicher boolescher Wert existiert (): Bestimmen Sie, ob die Datei oder das Verzeichnis, die diesem Dateiobjekt entsprechen, vorhanden ist.

  • public boolean isDirectory(): Bestimmen Sie, ob dieses Dateiobjekt ein Verzeichnis ist.

  • public boolean isFile(): Bestimmen Sie, ob dieses Dateiobjekt eine Datei ist.

  • public boolean isHidden(): Bestimmen Sie, ob dieses Dateiobjekt ausgeblendet ist.

  • public long lastModified(): Gibt den letzten geänderten Zeitstempel des Dateiobjekts zurück. Wir können ihn über SimpleDateFormat in eine Zeit- und Datumsanzeige formatieren. simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"). ; .

  • public boolean setLastModified(long time): Legt den Zeitstempel der letzten Änderung des File-Objekts fest.

  • public long length(): Gibt die Dateiinhaltslänge des File-Objekts zurück.

  • public boolean createNewFile() löst eine IOException aus: Wenn die Datei, die diesem Dateiobjekt entspricht, nicht vorhanden ist, erstellt diese Methode eine neue Datei, die durch das Dateiobjekt angegeben wird, andernfalls wird „true“ zurückgegeben. es wird false zurückgeben.

  • public boolean delete(): Löscht die dem Dateiobjekt entsprechende Datei oder das Verzeichnis. Wenn der Löschvorgang erfolgreich ist, wird „true“ zurückgegeben.

  • public void deleteOnExit(): Fordert an, dass die durch diesen abstrakten Pfadnamen gekennzeichnete Datei oder das Verzeichnis gelöscht wird, wenn die virtuelle Maschine beendet wird. Dies bedeutet, dass die Datei oder das Verzeichnis gelöscht wird, wenn die VM heruntergefahren wird, im Gegensatz zu delete(). Methode löschen. Es ist im Allgemeinen für temporäre Dateien geeignet.

  • public String[] list(): Listet alle Unterdateinamen und Pfadnamen des Dateiobjekts auf und gibt ein String-Array zurück.

  • public File[] listFiles(): Listet alle Unterdateien und Pfadnamen des File-Objekts auf und gibt ein File-Array zurück.

  • public boolean mkdir(): Erstellt ein Verzeichnis und kann nur Unterklassen unter der vorhandenen übergeordneten Klasse erstellen. Wenn die übergeordnete Klasse nicht vorhanden ist, können Sie keine Unterklasse erstellen.

  • public boolean mkdirs(): Es erstellt auch ein Verzeichnis und kann Unterordner erstellen, wenn der übergeordnete Ordner nicht vorhanden ist. Der übergeordnete Ordner wird übrigens auch rekursiv erstellt.

  • public boolean renameTo(File dest): Benennen Sie die Datei oder das Verzeichnis um, die diesem Dateiobjekt entsprechen. Wenn die Umbenennung erfolgreich ist, geben Sie true zurück, andernfalls geben Sie false zurück.

  • public boolean setReadOnly(): Setzt dieses Dateiobjekt auf schreibgeschützte Berechtigung.

  • public boolean setWritable(boolean writable, booleanownerOnly): Wenn writable wahr ist, ist Schreibzugriff erlaubt; wenn es false ist, ist Schreibzugriff nicht erlaubt. ownerOnly Wenn true, gilt der Schreibzugriff nur für den Eigentümer; andernfalls gilt er für alle.

  • public boolean setWritable(boolean writable): Die zugrunde liegende Implementierung ist: implementiert durch setWritable(writable, true), der Standardwert gilt nur für den Datei- oder Verzeichniseigentümer.

    public boolean setWritable(boolean writable) {
        return setWritable(writable, true);
    }
  • public boolean setReadable(boolean readable, booleanownerOnly): Wenn readable true ist, ist die Lesezugriffsberechtigung zulässig; wenn sie false ist, ist die Lesezugriffsberechtigung nicht zulässig. ownerOnly Wenn true, gilt der Lesezugriff nur für den Eigentümer; andernfalls gilt er für alle.

  • 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)文件长度以及修改时间

Wie verwende ich Dateiklassenmethoden in Java?

b)设置不可写后:

Wie verwende ich Dateiklassenmethoden in Java?

b)磁盘大小

Wie verwende ich Dateiklassenmethoden in Java?

c)user.dir路径

Wie verwende ich Dateiklassenmethoden in 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)默认临时文件存放地址:

Wie verwende ich Dateiklassenmethoden in Java?

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

Wie verwende ich Dateiklassenmethoden in 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)验证:

Wie verwende ich Dateiklassenmethoden in Java?

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

Das obige ist der detaillierte Inhalt vonWie verwende ich Dateiklassenmethoden in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen