📜  获取文件属性的Java程序(1)

📅  最后修改于: 2023-12-03 14:57:15.783000             🧑  作者: Mango

获取文件属性的Java程序

在Java中,我们可以轻松地获取文件的属性,同时也可以实现自定义的属性获取。

以下是一个获取文件属性的示例程序:

import java.io.File;
import java.nio.file.Files;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.FileTime;

public class FileAttributes {
    public static void main(String[] args) {
        File file = new File("example.txt");
        try {
            BasicFileAttributes attributes = Files.readAttributes(file.toPath(), BasicFileAttributes.class);
            FileTime creationTime = attributes.creationTime();
            FileTime lastAccessTime = attributes.lastAccessTime();
            FileTime lastModifiedTime = attributes.lastModifiedTime();
            long size = attributes.size();
            boolean isDirectory = attributes.isDirectory();
            boolean isRegularFile = attributes.isRegularFile();
            boolean isOther = attributes.isOther();
            System.out.println("Creation Time: " + creationTime);
            System.out.println("Last Access Time: " + lastAccessTime);
            System.out.println("Last Modified Time: " + lastModifiedTime);
            System.out.println("Size: " + size);
            System.out.println("Is Directory: " + isDirectory);
            System.out.println("Is Regular File: " + isRegularFile);
            System.out.println("Is Other: " + isOther);
        } catch (Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

上述代码中,我们使用了Java的NIO API,通过Files.readAttributes()方法获取文件的基本属性,然后调用属性对象的方法获取文件的各种属性。

值得注意的是,我们需要处理异常,因为文件操作可能会抛出异常。

除此之外,我们还可以实现自定义的属性获取,例如对于MP3文件,我们可以获取其歌曲名、歌手名等属性信息。

下面是获取MP3属性的示例程序:

import java.io.File;
import java.io.IOException;
import java.util.Map;

import org.farng.mp3.MP3File;
import org.farng.mp3.TagException;
import org.farng.mp3.id3.ID3v1;
import org.farng.mp3.id3.ID3v2;

public class MP3Attributes {
    public static void main(String[] args) {
        File file = new File("example.mp3");
        try {
            MP3File mp3File = new MP3File(file);
            if (mp3File.hasID3v1Tag()) {
                ID3v1 id3v1 = mp3File.getID3v1Tag();
                System.out.println("Song Title: " + id3v1.getSongTitle());
                System.out.println("Artist: " + id3v1.getArtist());
                System.out.println("Album: " + id3v1.getAlbumTitle());
                System.out.println("Year: " + id3v1.getYear());
            }
            if (mp3File.hasID3v2Tag()) {
                ID3v2 id3v2 = mp3File.getID3v2Tag();
                Map<String, Object> frameMap = id3v2.frameMap;
                System.out.println("Frame Map: " + frameMap);
            }
        } catch (IOException | TagException e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}

上述代码中,我们使用了Farng的MP3库,通过MP3File类获取MP3文件的属性信息。

我们首先判断文件是否有ID3v1或ID3v2标签,然后分别获取其属性,例如歌曲名、歌手名、专辑名、年份等。

同时,我们还可以使用ID3v2对象的frameMap属性获取MP3文件的所有帧信息,例如文件的图片、评论等。

总之,Java提供了很多获取文件属性的工具类和库,我们可以按照需要选择使用。