File

 

File类对象可以代表一个路径, 此路径可以是文件也可以是文件夹, 该类方法可以对这个路径进行各种操作

File用来将文件或者文件夹封装成对象
方便对文件与文件夹的属性信息进行操作。
File对象可以作为参数传递给流的构造函数。

创建对象
给File类构造函数传一个String类型的路径就可以创建对象
路径分为两种: 绝对路径, 相对路径
绝对路径: 从盘符开始, 是一个固定的路径
相对路径: 不从盘符开始, 相对于某个位置. 在Eclipse中的Java工程如果使用相对路径, 那么就相对于工程根目录. cmd则相对应于当前目录.

常用方法
		boolean exists() 		判断是否存在
		boolean isAbsolute();	     是否是绝对路径
		boolean isDirectory();	     是否是文件夹
		boolean isFile();		是否是文件
		boolean isHidden();		是否是隐藏
		
		getAbsolutePath();		获取绝对路径
		getFreeSpace();			获取当前盘符剩余空间
		getTotalSpace();		获取当前盘符总空间
		getUsableSpace();		获取当前盘符可用空间
		getParent());			获取父级路径
		getName());			获取文件名
		
		setReadable(false);		设置是否可读
		setWritable(false);		设置是否可写
		setExecutable(false);	     设置是否可执行
		canRead();			是否可读
		canWrite();			是否可写
		canExecute();			是否可执行
		
		setLastModified();		设置文件的最后修改时间
		lastModified();			获取文件的最后修改时间
		
		createNewFile()			创建文件
		mkdir();			创建文件夹(仅一级)
		mkdirs();			创建文件夹(父级不存在也创建)
		
		renameTo();			改名, 可以移动文件
		delete()			删除, 文件可以直接删除, 文件夹只能删空的
		length()			文件大小
	
		String[] list() 
		File[] listFiles()  

String[] list

获取当前目录下的所有文件和文件目录,包括隐藏的,如果File封装的是一个文件,那么返回的数组为null,所以最好做一个判断
File[] listFiles();

获取的是当前目录下文件或者文件夹对应的对象
如果仅获取文件名称,就用list方法.如果还要获取文件的其他信息,最好使用listFiles.因为可以获取到文件对象,这样就可以通过文件对象的方法,获取到其他的内容,如文件大小,修改时间等

public class Test {

	/**
	 * 从键盘接收一个文件夹路径,把文件夹中的所有文件以及文件夹的名字按层级打印, 例如:
	 */
	public static void main(String[] args) {
		File dir = getDir();
		getLevelDir(dir,0);
	}

	public static File getDir() {
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入文件夹路径:");
		while(true) {
			String line = sc.nextLine();	//将录入的路径存储在line中
			File dir = new File(line);
			if(!dir.exists()) {
				System.out.println("您输入的文件夹路径不存在,请重新输入一个文件夹路径:");
			}else if(dir.isFile()) {
				System.out.println("您输入的是文件路径,请输入一个文件夹路径:");
			}else {
				return dir;
			}
		}
	
	public static void getLevelDir(File dir,int lev) {
		File[] subFiles = dir.listFiles();	
		for (File subFile : subFiles) {
			for(int x = 0; x < lev; x++) {	//定义层级目录,在根目录下的文件或文件夹加table键,多一级就多加一个table键
				System.out.print('	');
			}
			System.out.println(subFile);	//将该目录的所有文件和文件夹都打印
			if(subFile.isDirectory()) {		//只要是文件夹就继续调用自己,并把层级目录+1
				getLevelDir(subFile,lev + 1);
			}
		}
	}
}

总结:

字节流
  FileInputStream, FileOutputStream, 自定义数组拷贝文件
  BufferedInputStream, BufferedOutputStream, 内置缓冲区拷贝文件
字符流
  FileReader, FileWriter
  InputStreamReader, OutputStreamWriter
  BufferedReader, BufferedWriter

File

利用字符和字节流对文件进行操作

 

原文地址:https://www.cnblogs.com/sooper/p/3415986.html