Java I/O -- File

File类

  • 一个File类的对象,表示了磁盘上的文件或目录
  • File类提供了与平台无关的方法来对磁盘上的文件或目录进行操作
  • File类直接处理文件和文件系统
  • File类没有指定信息怎样从文件读取或向文件存储
  • File类描述了文件本身的属性
  • File对象用来获取或处理与磁盘文件相关的信息,例如权限,时间,日期和目录路径
  • File类还可以浏览子目录层次结构
  • java.io包中的File类提供了与具体平台无关的方式来描述目录和文件对象的属性功能。其中包含大量的方法可用来获取路径、目录和文件的相关信息,并对它们进行创建、删除、改名等管理工作。因为不同的系统平台,对文件路径的描述不尽相同。为做到平台无关,在Java语言中,使用抽象路径等概念。Java自动进行不同系统平台的文件路径描述与抽象文件路径之间的转换。
  • File类的直接父类是Object类

File类常用方法

– String getName() 返回文件名

– String getPath()

– String getAbsolutePath()

– String getParent() 返回父目录名

– boolean renameTo( File newName)

– long length()

– boolean delete()

– boolean mkdir() 根据抽象路径名创建目录

– String[] list() 返回抽象路径名表示路径中的文件名和目录名

– boolean exists() 在文件存在的情况下返回true,反之返回false

– boolean canWrite()

– boolean canRead()

– boolean isFile()

– boolean isDirectory()

 

 

示例程序

FileTest1.java

package com.fairy.io;

import java.io.File;
import java.io.IOException;

public class FileTest1 {
	public static void main(String[] args) {
		File file1 = new File("C:\\text1.txt");
		File file2 = new File("C:/text2.txt");
		File file3 = new File("C:" + File.separator + "text3.txt");

		try {
			System.out.println(file1.createNewFile());
			System.out.println(file2.createNewFile());
			System.out.println(file3.createNewFile());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

FileTest2.java

package com.fairy.io;

import java.io.File;
import java.io.IOException;

public class FileTest2 {
	public static void main(String[] args) {
		File file = new File("C:/abc/xyz");

		File file2 = new File(file, "text.txt");
		
		File file3 = new File("C:/abc/xyz", "text2.txt");

		try {
			file2.createNewFile();
			file3.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

 

FileTest3.java

package com.fairy.io;

import java.io.File;

public class FileTest3 {
	public static void main(String[] args) {
		File file = new File("C:/abc/xyz/hello");

		System.out.println(file.mkdir());
		System.out.println(file.isDirectory());
		System.out.println(file.isFile());

		File file1 = new File("C:/abc/abc/abc");

		System.out.println(file1.mkdir());
		System.out.println(file1.mkdirs());
	}
}

 

FileTest4.java

package com.fairy.io;

import java.io.File;

public class FileTest4 {
	public static void main(String[] args) {
		File file = new File("D:/Util");

		String[] names = file.list();

		for (String name : names) {
			System.out.println(name);
		}
		
		System.out.println();
		
		File[] files = file.listFiles();
		
		for (File f : files) {
			System.out.println(f.getName());
		}
	}
}

 

FileTest5.java

package com.fairy.io;

import java.io.File;

public class FileTest5 {
	public static void main(String[] args) {
		File file = new File("C:/abc/xyz");

		String[] names = file.list();

		for (String name : names) {
			if (name.endsWith(".java")) {
				System.out.println(name);
			} 
		}
	}
}

 

使用FilenameFilter

– 希望能够限制由list( )方法返回的文件数目,使它仅返回那些与一定的文件名方式或者过滤(filter)相匹配的文件。为达到这样的目的,必须使用list( )的第二种形式 (方法重载

String[ ] list(FilenameFilter FFObj)

– 该形式中,FFObj是一个实现FilenameFilter接口的类的对象 

FilenameFilter仅定义了一个方法,accept( )。该方法被列表中的每个文件调用一次。它的通常

形式如下:

boolean accept(File directory, String filename)

当被directory 指定的目录中的文件(也就是说,那些与filename 参数匹配的文件)包含在列表中时,accept( )方法返回true ,当这些文件没有包括在列表中时,accept( )返回false 

FileTest6.java

package com.fairy.io;

import java.io.File;
import java.io.FilenameFilter;

public class FileTest6 {
	public static void main(String[] args) {
		File file = new File("C:/abc/xyz");

		String[] names = file.list(new FilenameFilter() {

			@Override
			public boolean accept(File dir, String name) {
				if (name.endsWith(".java")) {
					return true;
				}
				
				return false;
			}
		});
		
		for (String name : names) {
			System.out.println(name);
		}
	}
}
 

你可能感兴趣的:(Java I/O -- File)