JavaのFileクラスの使い方
概述
要学习Java中的File类,首先我们要知道,在Java的API中File类的定义,即文件和目录路径的抽象表现形式,不是文件本身。所以在File类中,所涉及到的操作都只是关于文件名称和目录路径的,而不是文件内容,如果想对文件内容进行操作,还得需要学习I/O流(输入/输出流)。
构造方法
基本介绍
只有构造了File类,我们后面才能对它进行操作。对于File类的构造下面介绍三种方法: 抽象表示的文件和目录的路径名:
public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。
public File(String parent, String child) :从父路径名字符串和子路径名字符串创建新的 File实例。
public File(File parent, String child) :从父抽象路径名和子路径名字符串创建新的 File实例。
第一个用的比较多,后面两个用的比较少
代码示例
import java.io.File; public class FileDemo1 { public static void main(String[] args) { //public File(String pathname) String pathname1 = "F:\\test1.txt"; File file1 = new File(pathname1); //public File(String pathname) String pathname2 = "F:\\test2\\test1.txt"; File file2 = new File(pathname2); //下面用的少 //public File(String parent, String child) String parent = "F:\\test3"; String child = "test1.txt"; File file3 = new File(parent,child); //public File(File parent, String child) File parentDir = new File("F:\\test"); String child1 = "test2.txt"; File file4 = new File(parentDir,child1); } }
常用方法
File类的操作还是非常重要的,所以它的常用方法有很多个,为了方便记忆,我把它分为:
获取文件和目录的基本信息
判断功能
创建和删除功能
目录遍历功能
下面对这些方法分别进行介绍,并举例说明
获取文件和目录的基本信息
public String getName() :返回由此File表示的文件或目录的名称。
public String getPath() :将此File转换为路径名字符串。
public String getParent() :获得父级路径
public String getAbsolutePath() :返回此File的绝对路径名字符串
代码示例
import java.io.File; public class FileDemo2 { public static void main(String[] args) { File file = new File("F:\\test1\\test2\\text.txt"); //将此File转换为路径名字符串。 System.out.println("文件路径:"+ file.getPath()); //返回由此File表示的文件或目录的名称 System.out.println("文件名称:"+ file.getName()); //获得父级路径 System.out.println("获得父级路径"+ file.getParent()); //返回此File的绝对路径名字符串 System.out.println("绝对路径名称" + file.getAbsolutePath()); } }
判断功能
public boolean exists() :此File表示的文件或目录是否实际存在。
public boolean isDirectory() :此File表示的是否为目录。
public boolean isFile() :此File表示的是否为文件。
public isAbsolute() :判断File对象对应的文件或目录是否是绝对路径
public boolean canRead() :判断File对象对应的文件或目录是否可读
public boolean canWrite() :判断File对象对应的文件或目录是否可写
public boolean isHidden() :判断File对象对应的文件或目录是否是否隐藏
如果文件或目录不存在,那么exists()、isFile()和isDirectory()都是返回true
代码示例
import java.io.File; public class FileDemo3 { public static void main(String[] args) { File file1 = new File("F:\\test\\test1\\test2.txt"); File file2 = new File("F:\\test"); //此File表示的文件或目录是否实际存在 boolean exists1 = file1.exists(); boolean exists2 = file2.exists(); System.out.println(exists1); System.out.println(exists2); //此File表示的是否为目录 boolean directory1 = file1.isDirectory(); boolean directory2 = file2.isDirectory(); System.out.println(directory1); System.out.println(directory2); //此File表示的是否为文件 boolean file1File = file1.isFile(); boolean file2File = file2.isFile(); System.out.println(file1File); System.out.println(file2File); //判断File对象对应的文件或目录是否是绝对路径 boolean absolute = file1.isAbsolute(); System.out.println(absolute); //判断File对象对应的文件或目录是否可读 boolean canRead = file1.canRead(); System.out.println(canRead); //判断File对象对应的文件或目录是否可写 boolean canWrite = file1.canWrite(); System.out.println(canWrite); //判断File对象对应的文件或目录是否是否隐藏 boolean hidden = file2.isHidden(); System.out.println(hidden); } }
创建和删除功能
public boolean createNewFile() :当且仅当具有该名称的文件尚不存在时,创建一个新的空文件。
public boolean delete() :删除由此File表示的文件或目录。只能删除空目录。
public boolean mkdir() :创建由此File表示的目录。
public boolean mkdirs() :创建由此File表示的目录,包括任何必需但不存在的父目录
API中说明:delete方法,如果此File表示目录,则目录必须为空才能删除。
代码示例
import java.io.File; import java.io.IOException; public class FileDemo4 { public static void main(String[] args) throws IOException { //创建文件 File file1 = new File("test.txt"); System.out.println("是否存在:"+ file1.exists());//false System.out.println("是否创建"+ file1.createNewFile());//需要抛出异常 System.out.println("是否存在:"+ file1.exists()); //true //创建目录(单个) File file2 = new File("F:\\test"); System.out.println("是否存在:"+ file2.exists());//false System.out.println("是否创建"+ file2.mkdir()); System.out.println("是否存在:"+ file2.exists()); //true //创建多级目录 File file3 = new File("F:\\test1\\test2"); System.out.println("是否存在:"+ file3.exists());//false System.out.println("是否创建"+ file3.mkdirs()); System.out.println("是否存在:"+ file3.exists()); //true //文件的删除 System.out.println(file1.delete()); //目录的删除 System.out.println(file2.delete()); System.out.println(file3.delete());//只能删除一级 } }
目录遍历功能
public String[] list() :返回一个String数组,表示该File目录中的所有子文件或目录
public File[] listFiles() :返回一个File数组,表示该File目录中的所有的子文件或目录
调用listFiles方法的File对象,表示的必须是实际存在的目录,否则返回null,无法进行遍历。
代码示例
import org.junit.Test; import java.io.File; import java.io.IOException; public class FileDemo5 { public static void main(String[] args) { File dir = new File("F:\\test"); dir.mkdirs(); System.out.println(dir.exists()); //File dir1 = new File("F:\\test"); //获取当前目录下的文件及文件夹的名称 String[] names = dir.list(); //遍历 for(String name : names){ System.out.println(name); } //获取当前目录下的文件以及文件夹对象,只要拿到了文件对象,那么就可以获取更多信息 File[] files = dir.listFiles(); for(File file : files){ System.out.println(file); } } }
但对于多级目录的遍历,我们需要使用递归方法
/* 多级目录的打印。遍历之前,无从知道到底有多少级目录,所以我们可以使用递归实现 */ import java.io.File; public class FileDemo6 { public static void main(String[] args) { File dir = new File("F:\\test1"); listSubFiles(dir); } private static void listSubFiles(File dir) { if(dir != null && dir.isDirectory()){ File[] listFiles = dir.listFiles(); if(dir != null){ for(File sub : listFiles){ listSubFiles(sub);//递归调用 } } } System.out.println(dir); } }
以上がJavaのFileクラスの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Java の Weka へのガイド。ここでは、weka java の概要、使い方、プラットフォームの種類、利点について例を交えて説明します。

この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。
