詳細なJavaベースのファイルクラス
作成は簡単ではありません。このブログがお役に立てば、メッセージを残してください+いいね!
Java.io.Fileクラスは、ファイルとディレクトリのパス名の抽象表現であり、主にファイルとディレクトリの作成、検索、削除などの操作に使用されます。Fileクラスのインスタンスは不変です。つまり、一度作成されると、Fileオブジェクトによって表される抽象パス名は変更されません。
覚えておくべき3つの重要な単語があります:ファイル(ファイル)、ディレクトリ(フォルダ)、パス(パス)
工法
工法概要 |
ファイル(ファイルの親、文字列の子) 親抽象パス名と子パス名の文字列に基づいて、新しいファイルインスタンスを作成します。 |
ファイル(文字列パス名) 指定されたパス名文字列を抽象パス名に変換して、新しいファイルインスタンスを作成します。 |
ファイル(文字列の親、文字列の子) 親パス名の文字列と子パス名の文字列に基づいて、新しいファイルインスタンスを作成します。 |
//File类的构造函数--练习
private static void show02(){
File file= new File("F:\\04Java\\19java","Hello.java");
System.out.println(file);
}
private static void show01(){
File f1= new File("F:\\04Java\\19java");
System.out.println(f1);//重写了ToString()方法
File f3= new File("b.txt");
System.out.println(f3);
}
private static void show03(){
File file=new File("F:\\04Java\\19ava");
File newFile = new File(file,"Hello.java");
System.out.println(newFile);
}
メインメンバー方式
入手方法
メソッドの概要 | |
---|---|
String |
getAbsolutePath() この抽象パス名の絶対パス名文字列を返します。 |
String |
getName() この抽象パス名で表されるファイルまたはディレクトリの名前を返します。 |
String |
getPath() この抽象パス名をパス名文字列に変換します。 |
long |
length() この抽象パス名で表されるファイルの長さを返します。 |
//获取文件绝对路径
private static void show04() {
File file=new File("F:\\04Java\\19java");
File absoluteFile=file.getAbsoluteFile();//返回File对象的绝对路径
System.out.println(absoluteFile);
File file2=new File("a.txt");
File absoluteFile2=file2.getAbsoluteFile();//返回File对象的绝对路径
System.out.println(absoluteFile2);
System.out.println("____________________________");
}
//file1.getName() 获取最后一个路径名
private static void show02(){
File file=new File("F:\\04Java\\19java");
String name=file.getName();//最后的路径名
System.out.println(name);
File file1=new File("F:\\04Java\\19java\\小小张自由");
String name1=file1.getName();//最后的路径名
System.out.println(name1);
}
//file.getPath() 构造函数中传递什么值,就返回什么值
private static void show01(){
File file=new File("F:\\04Java\\19java");
String path=file.getPath();//传递的参数是什么,返回值就是什么
System.out.println(path);
File file1=new File("b.txt");
String path1=file1.getPath();
System.out.println(path1);
}
//file.length() 获取文件的大小
private static void show03(){
File file=new File("F:\\迅雷下载\\AirtestIDE-win-1.2.6.zip");
long length=file.length();//文件名的大小,路径错误则为0
System.out.println(length);//单位字节
}
判定方法
メソッドの概要 | |
---|---|
boolean |
exists() この抽象パス名で表されるファイルまたはディレクトリが存在するかどうかをテストします |
boolean |
isDirectory() この抽象パス名で表されるファイルがディレクトリであるかどうかをテストします。 |
boolean |
isFile() この抽象パス名で示されるファイルが標準ファイルであるかどうかをテストします。 |
//用于判断构造函数中给定的路径是否为目录、文件
public static void main(String[] args){
File file = new File("F:\\04Java\\19java");
System.out.println(file.exists());//判断文件名是否存在
System.out.println(file.isDirectory());//判断是否以文件夹结尾
System.out.println(file.isFile());//判断是否以文件结尾
}
メソッドの作成と削除
メソッドの概要 | |
---|---|
boolean |
createNewFile() この抽象パス名で指定された名前のファイルがない場合にのみ、新しい空のファイルが分割できないように作成されます。 |
boolean |
delete() この抽象パス名で示されたファイルまたはディレクトリを削除します。 |
boolean |
mkdir() この抽象パス名で指定されたディレクトリを作成します。 |
boolean |
mkdirs() この抽象パス名で指定されたディレクトリを作成します。これには、必要であるが存在しないすべての親ディレクトリが含まれます。 |
//File类中CreateNewFile()方法只能新建文件,创建成功true
private static void show01()throws IOException{
File file=new File("F:\\04Java\\19java\\99.txt");
boolean newFile=file.createNewFile();//只能新建文件,创建成功true
System.out.println(newFile);
}
//File类中Delete()方法
private static void show03(){
File file=new File("F:\\04Java\\19java\\HelloJava");
boolean delete=file.delete();//可以删除文件夹只能是空文件夹
System.out.println(delete);
File file1=new File("F:\\04Java\\19java\\99.txt");
boolean delete1=file1.delete();//可以删除文件
System.out.println(delete1);
}
//File类中mkdir()和mkdirs()的方法创建单级、多级目录
private static void show02(){
File file=new File("F:\\04Java\\19java\\HelloJava");
boolean mkdir=file.mkdir();//创建单级目录
System.out.println(mkdir);
File file1=new File("F:\\04Java\\19java\\Hello\\Java");
boolean mkdirs=file1.mkdirs();//创建多级目录
System.out.println(mkdirs);
}
ディレクトリトラバーサル
メソッドの概要 | |
---|---|
String[] |
list() この抽象パス名で表されるディレクトリ内のファイルとディレクトリを指定する文字列の配列を返します。 |
File[] |
listFiles() この抽象パス名で示されるディレクトリ内のファイルを表す抽象パス名の配列を返します。 |
//file.listFiles();方法返回值是一个File[]
private static void show02(){
File file=new File("F:\\04Java\\19java");
File[]files=file.listFiles();
for(File file1:files){
System.out.println(file1);
}
}
//file.list();方法返回值是一个String[]
private static void show01(){
File file=new File("F:\\04Java\\19java");
String[] list=file.list();
System.out.println(list);//地址值
for(String i:list){
System.out.println(i);
}
}
ケースファイル検索
1.拡張子が.pdfのファイルを検索します
2.ディレクトリ検索では、ディレクトリのレベル数を判断できないため、再帰を使用してすべてのディレクトリをトラバースします。
3.ディレクトリをトラバースするときに、取得したサブファイルは、ファイル名によって条件を満たしているかどうかが判断されます。
public class DiGuiDemo3 {
public static void main(String[] args) {
// 创建File对象
File dir = new File("E:\\书籍");
// 调用打印目录方法
printDir(dir);
}
public static void printDir(File dir) {
// 获取子文件和目录
File[] files = dir.listFiles();
// 循环打印
for (File file : files) {
if (file.isFile()) {
// 是文件,判断文件名并输出文件绝对路径
if (file.getName().endsWith(".PDF")) {
System.out.println("文件名:" + file.getAbsolutePath());
}
}else{
// 是目录,继续遍历,形成递归
printDir(file);
}
}
}
}
ケースファイル検索(高度なゲームプレイ)
FileFilterインターフェースまたはFilenameFilterインターフェースを 使用します。これはファイルフィルターです。このインターフェイスメソッドのパラメータは、FIleクラスのオブジェクトです。インターフェイスにはメソッドが1つだけあります。
//Sun公司封装的两个文件过滤的接口
public interface FilenameFilter {
boolean accept(File dir, String name);
}
public interface FileFilter {
boolean accept(File pathname);
}
ファイル検索機能は、次のいずれかの方法で実現できます。最初の方法はFileFilterインターフェースを使用し 、2番目の方法はFilenameFilterインターフェースを使用します。
次の3つの再生方法のいずれかは、インターフェイスの実装クラスを使用し、1つはLambda式を使用し、もう1つは匿名内部クラスを使用します。
public static void main(String[] args) {
File file=new File("E:\\书籍");
//System.out.println(file);
getAllFile(file);
}
//以下是三种玩法
public static void getAllFile(File file) {
//方式一、使用FIleFilter接口的实现类
File[] files = file.listFiles(new Demo09FileFilterImpl());//实现了FIleFilter接口
//方式1. 使用Lambda表达式
File[] files = file.listFiles((pathname)->{
return pathname.getName().toLowerCase().endsWith(".pdf");//
});
//方式二、使用FilenameFilter
File[] files =file.listFiles(new FilenameFilter() {
@Override //两个路径
public boolean accept(File dir, String name) {
return new File(dir,name).isDirectory()|| name.toLowerCase().endsWith("pdf");
}
});
}
创作不易,如果本篇博客对您有一定的帮助,大家记得留言+点赞哦。