詳細なJavaファイルクラス

Javaでは、Fileクラスjava.ioパッケージには、あなたのプログラム内のファイルやディレクトリを操作したい場合は、それはFileクラスを介して行うことが可能であること、ディスクファイルそのものを表している唯一のオブジェクトです。Fileクラスには、このような、リネームファイルやディレクトリを作成、削除などのファイルを、操作するためのいくつかの方法を定義します。

あなたは、ファイル自体の内容にアクセスする必要がある場合はFileクラスは、ファイル自体の内容にアクセスすることはできません、あなたは、入力/出力ストリームを使用する必要があります。

Fileクラスは、コンストラクタ次の3つの形態を提供します。

	File(String path):如果 path 是实际存在的路径,则该 File 对象表示的是目录;如果 path 是文件名,则该 File 对象表示的是文件。
	
	File(String path, String name):path 是路径名,name 是文件名。
	
	File(File dir, String name):dir 是路径对象,name 是文件名。

コンストラクタのいずれかを使用すると、ファイル操作を提供してメソッドを呼び出した後、Fileオブジェクトを作成することができます。

Fileクラスの一般的な方法

メソッド名 説明
ブールcanRead() 読書のための指定されたファイルからアプリケーションかどうかをテストします
ブールcanWrite() アプリケーションは、現在のファイルを書き込むことができるかどうかをテスト
削除ブール値() 電流を削除するファイルを指定します。
ブール値が存在します() このファイルがあるかどうかをテスト
文字列getAbsolutePath() このオブジェクトによって表されるファイルが絶対パス名で返します。
文字列のgetName() (それがパスで、そして最終的にサブパス名が返された場合)、オブジェクトの現在のファイル名やパス名を返します。
文字列のgetParent() 現在のディレクトリに対応するFileオブジェクト(最後のサブディレクトリ)親ディレクトリ名を返します。
ブールisAbsolute() 現在のファイルのファイル・オブジェクトは、絶対パス名を表しているかどうかをテストします。この方法は、異なるプラットフォームの違いを排除し、それが直接ファイルを絶対パスにオブジェクトかどうかを判断することができます。パス名の先頭にスラッシュであればUNIX / Linuxの/ BSDシステムでは、/、それは絶対パスにFileオブジェクトが対応することを示し、Windowsシステムでは、パスはドライブ文字で始まる場合、それは絶対パスです。
ブールisDirectory() 現在のファイルのファイル・オブジェクトがパスを表すかどうかをテスト
ブールISFILE() 現在のファイルのFileオブジェクトは、「通常の」ファイルを表しているかどうかをテスト
長いLASTMODIFIED() 現在のファイルのFileオブジェクトは最終修正時刻を表す返します
長い長さ() Fileオブジェクトのファイルの長さは電流を表し返します。
文字列[]リスト() 戻り値このFileオブジェクトのリストは、ファイルへのパスを指定します
文字列[]リスト(FilenameFilter) Fileオブジェクトは、指定されたフィルタの基準を満たす、現在のディレクトリに指定されたファイルのリストを返します。
ブールMKDIR() そのパス名このFileオブジェクトで指定されたディレクトリを作成します。
ブールmkdirs() そのパス名このFileオブジェクトで指定されたディレクトリを作成します。
ブールrenameTo(ファイル) 現在のファイルが指定されたパラメータファイルに指定した名前を変更したファイルオブジェクトは、パス名を指定しています

Fileクラスには、次の2つの一般的に使用される定数があります。

	public static final String pathSeparator:指的是分隔连续多个路径字符串的分隔符,Windows 下指;。例如 java -cp test.jar;abc.jar HelloWorld。
	
	public static final String separator:用来分隔同一个路径字符串中的目录的,Windows 下指/。例如 D:/Software/Common Files。

注:あなたは、定数名は、すべて大文字ではありません標準の命名規則を満たしていないFileクラスで定義された名前の定数を参照することができ、かなりの期間後のJavaの開発、命名規則が進化している間に、Fileクラスの出現理由以前、これらは、Javaの歴史によって残さ問題で、命名規則の厳格な要件を持っていませんでした。

	Windows 的路径分隔符使用反斜线“\”,而 Java 程序中的反斜线表示转义字符,所以如果需要在
	
	Windows 的路径下包括反斜线,则应该使用两条反斜线或直接使用斜线“/”也可以。Java 程序支持将斜线当成平台无关的路径分隔符。

/javaspace/hello.javaまたはD:\ javaspace \ hello.javaパスの線に沿って\ javaspace \ hello.java、Javaで使用され、Dする必要があります:あなたは、WindowsオペレーティングシステムD内のファイルがあるとします。

ファイルの属性を取得します。

Javaでファイルの属性情報を取得する最初のステップは、既存のファイルへのファイル・クラス・オブジェクトとポイントを作成し、操作された表1のメソッドを呼び出すことです。

\ WINDOWS \ notepad.exeを:Cにあるファイルがあります。取得するためのJavaプログラムを書くと、ファイルの長さが書き込み可能である最終更新日を表示し、ファイルの属性情報パス。コードは以下の通りであります:

public class Test {
    public static void main(String[] args) {
        String path = "C:/windows/"; // 指定文件所在的目录
        File f = new File(path, "notepad.exe"); // 建立File变量,并设定由f变量引用
        System.out.println("C:\\windows\\notepad.exe文件信息如下:");
        System.out.println("============================================");
        System.out.println("文件长度:" + f.length() + "字节");
        System.out.println("文件或者目录:" + (f.isFile() ? "是文件" : "不是文件"));
        System.out.println("文件或者目录:" + (f.isDirectory() ? "是目录" : "不是目录"));
        System.out.println("是否可读:" + (f.canRead() ? "可读取" : "不可读取"));
        System.out.println("是否可写:" + (f.canWrite() ? "可写入" : "不可写入"));
        System.out.println("是否隐藏:" + (f.isHidden() ? "是隐藏文件" : "不是隐藏文件"));
        System.out.println("最后修改日期:" + new Date(f.lastModified()));
        System.out.println("文件名称:" + f.getName());
        System.out.println("文件路径:" + f.getPath());
        System.out.println("绝对路径:" + f.getAbsolutePath());
    }
}

本明細書で使用されるファイル・クラスのコンストラクタ上記のコードの最初のパラメータは、ファイルの場所を指定し、C:/ファイルの実際のパスとして、第二の引数を指定したファイル名。作成されたファイル・クラス・オブジェクトは、最終的な業績に示すように、対応する方法属性を呼び出すことによって取得次いでF、Fです。

C:\windows\notepad.exe文件信息如下:
============================================
文件长度:193536字节
文件或者目录:是文件
文件或者目录:不是目录
是否可读:可读取
是否可写:可写入
是否隐藏:不是隐藏文件
最后修改日期:Mon Dec 28 02:55:19 CST 2016
文件名称:notepad.exe
文件路径:C:\windows\notepad.exe
绝对路径:C:\windows\notepad.exe

ファイルの作成と削除

ファイルの種類は、既知のファイルのプロパティ情報を取得することができるだけでなく、あなたはまた、指定したパスにファイルを作成し、ファイルを削除することができますでCreateNewFile()メソッド、あなたがdelete()メソッドを呼び出す必要があり、削除ファイルと呼ばれるファイルのニーズを作成します。作成または削除するかどうかのファイルは、通常、最初の呼び出しは、ファイルが存在するかどうかを判断するために()メソッドが存在するです。

それが作成し、それを削除し、存在する場合は、プログラムが起動は、それが存在しない場合は作成されたときにファイルが存在するかどうかをCで作成されたことは、検出をtest.txtというファイルをドライブ。

次のようにコードは次のとおりです。

public class Test {
    public static void main(String[] args) throws IOException {
        File f = new File("C:\\test.txt"); // 创建指向文件的File对象
        if (f.exists()) // 判断文件是否存在
        {
            f.delete(); // 存在则先删除
        }
        f.createNewFile(); // 再创建
    }
}

プログラムを実行した後にCディスクで見つけることができtest.txtというファイルを作成されています。しかしながら、異なるオペレーティングシステム、パス区切り文字は、例えば、同じではありません。

	Windows 中使用反斜杠\表示目录的分隔符。
	
	Linux 中使用正斜杠/表示目录的分隔符。

まあ、Javaプログラム自体ポータビリティ機能するので、書き込み時の最適なパスを自動的に移植の目的を達成するように、上のオペレーティングシステムが存在するに従って、セパレータの要件に合わせてローカルのオペレーティングシステムを使用することができます。この機能を実現するには、クラスが提供するファイルで2つの定数を使用する必要があります。

次のようにコードを変更します。

public static void main(String[] args) throws IOException {
    String path = "C:" + File.separator + "test.txt"; // 拼凑出可以适应操作系统的路径
    File f = new File(path);
    if (f.exists()) // 判断文件是否存在
    {
        f.delete(); // 存在则先删除
    }
    f.createNewFile(); // 再创建
}

プログラムと同じ先行プログラムの結果を実行するが、この場合、プログラムは、任意のオペレーティングシステムを使用することができます。

ご注意ください:操作のファイルで区切りを表すFile.separatorを使用する必要があります。プログラムの開発では、多くの場合、使いやすい、より開発ツールを、サポートするために、Windowsオペレーティングシステムであるため、Windowsの開発環境を使用しますが、プログラムがリリースされたとき、多くの場合、直接のであれば、その後、Linuxや他のオペレーティングシステム上で展開File.separatorを使用しない、プログラムが実行され、問題がある可能性があります。

作成および削除ディレクトリ

ファイルの作成と削除に加えて、Fileクラスに、あなたはまた、ディレクトリを作成および削除することができます方法)あなたは(削除呼び出す必要がありますディレクトリを削除するには、mkdir()メソッドを呼び出すためのディレクトリの必要性を作成します。作成または呼び出すことができるディレクトリを削除して存在するかどうか()メソッドは、ディレクトリが存在するかどうかを決定します。

現在、削除して作成した場合Cのルートディレクトリの下に設定ディレクトリが存在するかどうかを確認します。次のようにコードは次のとおりです。

public class Test {
    public static void main(String[] args) {
        String path = "C:/config/"; // 指定目录位置
        File f = new File(path); // 创建File对象
        if (f.exists()) {
            f.delete();
        }
        f.mkdir(); // 创建目录
    }
}

ディレクトリトラバーサル

ディレクトリトラバーサルは、指定されたディレクトリ内のファイルを見つけることができる、またはすべてのファイルのリストを表示しますリストファイルのクラス()メソッドは、次のメソッドは、2つのオーバーロードがあり、ディレクトリトラバーサル機能を提供します。
1.文字列[]リスト()
コールはディレクトリファイルオブジェクトでない場合、すべてのディレクトリ内のファイルとファイルオブジェクトからなるサブディレクトリ名の配列を表す文字列を返すメソッドは、nullが返されます。

プロンプト:配列リスト()メソッドは、ファイルのみを含み、パスが含まれていないの名前を返します。しかし、それは結果の配列内の同じ文字列を保証するものではありません、彼らはアルファベット順に表示されていること、特に、特定の順序で表示されます。

2. String []型のリスト(FilenameFilterフィルタ
) 機能と同じリストの方法()メソッドは、配列が返さことを除いて、フィルタがnullの場合、フィルタに沿ってフィルタの唯一のファイルとディレクトリが含まれ、その後、すべての名前を受け入れます。

Cのルートディレクトリにあるすべてのファイルとディレクトリを、ファイルやディレクトリの名前、種類、サイズが表示されます。コードのリスト()メソッドを使用して、次の通りであります:

public class Test {
    public static void main(String[] args) {
        File f = new File("C:/"); // 建立File变量,并设定由f变量变数引用
        System.out.println("文件名称\t\t文件类型\t\t文件大小");
        System.out.println("===================================================");
        String fileList[] = f.list(); // 调用不带参数的list()方法
        for (int i = 0; i < fileList.length; i++) { // 遍历返回的字符数组
            System.out.print(fileList[i] + "\t\t");
            System.out.print((new File("C:/", fileList[i])).isFile() ? "文件" + "\t\t" : "文件夹" + "\t\t");
            System.out.println((new File("C:/", fileList[i])).length() + "字节");
        }
    }
}

文字列リスト()メソッドが返すファイル名のみが含まれているので、そのファイルの種類とサイズを得るためには、Fileオブジェクトに変換する必要があり、その後、そのメソッドを呼び出します。動作結果を例に以下に示します。

文件名称  文件类型  文件大小
===================================================
$Recycle.Bin  文件夹  4056字节
Documents and Settings  文件夹  0字节
Download  文件夹  12976326字节
DRIVERS  文件夹  0字节
FibocomLog  文件夹  67842字节
Gateface  文件夹  0字节
GFPageCache  文件夹  0字节
hiberfil.sys  文件  3375026176字节
Intel  文件夹  6782234字节
KuGou  文件夹  0字节
logs  文件夹  0字节
msdia80.dll  文件  904704字节
MSOCache  文件夹  0字节
MyDownloads  文件夹  0字节
MyDrivers  文件夹  946882字节
news.template  文件  417字节
NVIDIA  文件夹  0字节
OneDriveTemp  文件夹  7834345字节
opt  文件夹  0字节
pagefile.sys  文件  644250944字节
PerfLogs  文件夹  0字节
Program Files  文件夹  12288字节
Program Files (x86)  文件夹  8192字节
ProgramData  文件夹  12588字节
QMDownload  文件夹  0字节
Recovery  文件夹  1289字节
swapfile.sys  文件  268435456字节
System Volume Information  文件夹  12288字节
Users  文件夹  4096字节
Windows  文件夹  16784字节

私はいくつかのリスト()メソッドのフィルタパラメータで呼び出す必要があるディレクトリ内のファイルのリストにしたいです。最初のファイルフィルターを作成し、フィルタはjava.io.FilenameFilterインタフェースを実装し、指定されたファイルタイプ()メソッドを受け入れることができなければなりません。

SYS、フィルタおよびBAK TXTファイル形式の実装コードを許可します:

public class ImageFilter implements FilenameFilter {
    // 实现 FilenameFilter 接口
    @Override
    public boolean accept(File dir, String name) {
        // 指定允许的文件类型
        return name.endsWith(".sys") || name.endsWith(".txt") || name.endsWith(".bak");
    }
}

フィルタ名は、フィルタファイルを実装するために、リスト()メソッドに、上記のコードのImageFilterのためにのみ、次の名前を作成しました。

String fileList[] = f.list(new ImageFilter());

次のような結果を通じて、もう一度プログラムを実行します。

文件名称        文件类型        文件大小
===================================================
offline_FtnInfo.txt        文件        236字节
pagefile.sys        文件        84365940字节
发布了457 篇原创文章 · 获赞 94 · 访问量 1万+

おすすめ

転載: blog.csdn.net/weixin_45743799/article/details/104709205