Rumah  >  Artikel  >  Java  >  Bagaimana untuk menggunakan kaedah kelas Fail di Java?

Bagaimana untuk menggunakan kaedah kelas Fail di Java?

WBOY
WBOYke hadapan
2023-04-23 18:49:07990semak imbas

Gambaran keseluruhan kelas fail

Kelas Fail mewakili fail dan direktori bebas platform di bawah pakej java.io. Fail boleh membuat, memadam dan menamakan semula fail dan direktori, tetapi ia tidak boleh mengakses kandungan fail itu sendiri. Jika anda perlu mengakses kandungan, anda perlu mengaksesnya melalui aliran input/output.

Kelas Fail boleh mencipta contoh Fail menggunakan rentetan laluan fail Laluan boleh sama ada laluan mutlak atau laluan relatif. Secara amnya, laluan relatif ditentukan oleh user.dir harta sistem, iaitu laluan di mana Java VM berada.

Pembina biasa kelas fail

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

Kaedah biasa kelas fail

  • public String getName(): Mengembalikan nama fail yang diwakili oleh objek Fail kunci Atau nama direktori (jika ia adalah direktori, subdirektori peringkat terakhir dikembalikan).

  • public String getParent(): Mengembalikan nama laluan yang sepadan dengan objek Fail ini dan mengembalikan jenis String.

  • public File getParentFile(): Mengembalikan direktori induk bagi objek Fail ini dan mengembalikan jenis Fail.

  • public String getPath(): Mengembalikan nama laluan yang sepadan dengan objek Fail ini dan mengembalikan jenis String.

  • public boolean isAbsolute(): Tentukan sama ada fail atau direktori yang sepadan dengan objek Fail ialah laluan mutlak.

  • public String getAbsolutePath(): Mengembalikan laluan mutlak yang sepadan dengan objek Fail ini dan mengembalikan jenis String.

  • awam String getCanonicalPath() membuang IOException:

  • public File getCanonicalFile() membuang IOException:

  • public File getAbsoluteFile(): Mengembalikan laluan mutlak yang sepadan dengan objek Fail ini dan mengembalikan jenis Fail.

  • public boolean canRead(): Tentukan sama ada fail atau direktori yang sepadan dengan objek Fail ini boleh dibaca.

  • public boolean canWrite(): Tentukan sama ada fail atau direktori yang sepadan dengan objek Fail ini boleh ditulis.

  • public boolean canExecute(): Tentukan sama ada fail atau direktori yang sepadan dengan objek Fail ini boleh laku.

  • public boolean exists(): Tentukan sama ada fail atau direktori yang sepadan dengan objek Fail ini wujud.

  • public boolean isDirectory(): Tentukan sama ada objek Fail ini ialah direktori.

  • public boolean isFile(): Tentukan sama ada objek Fail ini ialah fail.

  • public boolean isHidden(): Tentukan sama ada objek Fail ini tersembunyi.

  • public long lastModified(): Mengembalikan cap waktu terakhir yang diubah suai bagi objek Fail Kita boleh menggunakan SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"). ;Format untuk paparan masa dan tarikh.

  • set boolean awamLastModified(lama): Tetapkan cap waktu pengubahsuaian terakhir objek Fail.

  • panjang panjang awam(): Mengembalikan panjang kandungan fail objek Fail.

  • public boolean createNewFile() membuang IOException: Apabila fail yang sepadan dengan objek Fail ini tidak wujud, kaedah ini akan mencipta fail baharu yang ditentukan oleh objek Fail Jika penciptaan berjaya , Mengembalikan benar; jika tidak, mengembalikan palsu.

  • public boolean delete(): Padamkan fail atau direktori yang sepadan dengan objek Fail Jika pemadaman berjaya, ia akan mengembalikan true.

  • public void deleteOnExit(): Meminta agar fail atau direktori yang dilambangkan dengan nama laluan abstrak ini dipadamkan apabila mesin maya ditamatkan Ini bermakna fail atau direktori dipadamkan apabila VM berada shut down , tidak seperti kaedah delete() yang dipadamkan sebaik sahaja ia dipanggil. Ia biasanya sesuai untuk fail sementara.

  • public String[] list(): Menyenaraikan semua nama subfail dan nama laluan objek Fail dan mengembalikan tatasusunan String.

  • public File[] listFiles(): Menyenaraikan semua sub-fail dan nama laluan objek Fail dan mengembalikan tatasusunan Fail.

  • public boolean mkdir(): Cipta direktori, dan hanya boleh mencipta subkelas di bawah kelas induk sedia ada Jika kelas induk tidak wujud, maka anda tidak boleh mencipta subkelas.

  • public boolean mkdirs(): Ia juga mencipta direktori, dan boleh mencipta subfolder apabila folder induk tidak wujud, folder induk juga dibuat secara rekursif.

  • public boolean renameTo(File dest): Namakan semula fail atau direktori yang sepadan dengan objek Fail ini Jika nama semula berjaya, kembalikan benar;

  • public boolean setReadOnly(): Tetapkan objek Fail ini kepada kebenaran baca sahaja.

  • set boolean awam Boleh Ditulis(Boolean boleh ditulis, pemilik boolean Sahaja): Tulis tetapan kebenaran Jika boleh ditulis adalah benar, akses tulis dibenarkan jika ia palsu, akses tulis tidak dibenarkan. ownerOnly Jika benar, akses tulis hanya terpakai kepada pemilik, sebaliknya ia terpakai kepada semua orang.

  • public boolean setWritable(boolean writable): Pelaksanaan asas ialah: melalui setWritable(writable, true), lalai hanya terpakai kepada pemilik fail atau direktori.

    public boolean setWritable(boolean writable) {
        return setWritable(writable, true);
    }
  • set boolean awam BolehBaca(boleh dibaca boolean, pemilik boolean Sahaja): Tetapan kebenaran baca, jika boleh dibaca adalah benar, kebenaran akses baca dibenarkan; palsu, Akses Baca tidak dibenarkan. pemilikSahaja Jika benar, akses baca hanya terpakai kepada pemilik jika tidak, ia terpakai kepada semua orang.

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

Bagaimana untuk menggunakan kaedah kelas Fail di Java?

b)设置不可写后:

Bagaimana untuk menggunakan kaedah kelas Fail di Java?

b)磁盘大小

Bagaimana untuk menggunakan kaedah kelas Fail di Java?

c)user.dir路径

Bagaimana untuk menggunakan kaedah kelas Fail di 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)默认临时文件存放地址:

Bagaimana untuk menggunakan kaedah kelas Fail di Java?

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

Bagaimana untuk menggunakan kaedah kelas Fail di 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)验证:

Bagaimana untuk menggunakan kaedah kelas Fail di Java?

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

Atas ialah kandungan terperinci Bagaimana untuk menggunakan kaedah kelas Fail di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam