File类常用操作 - 极悦

JavaSE教程_进阶

全部教程

×

File类常用操作

boolean:createNewFile() 创建一个新的文件

boolean:delete() 删除File对象

boolean:exists() 判断当前File对象是否存在

File:getAbsoluteFile() 返回File对象的绝对路径形式

String:getAbsolutePath()返回File对象的绝对路径

long:getFreeSpace() 返回指定盘符空闲空间的大小

String:getName() 返回File对象的名称

String:getParent() 返回上一级目录

File:getParentFile()返回上一级目录

String:getPath() 返回路径

long:getTotalSpace() 返回指定盘符总的大小

long:getUsableSpace()返回指定盘符可用空间的大小

boolean:isAbsolute() 判断是否为绝对路径

boolean:isDirectory() 判断是否为文件夹

boolean:isFile() 判断是否为文件

boolean:isHidden() 判断是否为隐藏

long:lastModified() 最后一次修改的时间,是从1970-1-1 00:00:00经过的毫秒数

long:length() 文件长度

String[]:list() 列出文件夹中的内容

String[]:list(FilenameFilter filter) 列出文件夹中的内容,指定文件过滤器

File[]:listFiles()列出文件夹中的内容

File[]:listFiles(FileFilter filter) 列出文件夹中的内容

File[]:listFiles(FilenameFilter filter) 列出文件夹中的内容

staticFile[]:listRoots() 列出根目录

boolean:mkdir() 创建文件夹.如果上一级目录不存在,则文件夹创建失败

boolean:mkdirs()创建文件夹. 如果上一级目录不存在,先创建上一级目录,再创建当前文件夹

boolean:renameTo(File dest) 重命名,如果dest对象和当前File对象不在同一个目录中,相当于文件移动

Path:toPath()

String:toString()

URI:toURI()

package com.wkcto.chapter06.file;

import java.io.File;
import java.io.IOException;
import java.util.Date;

/**
 * 演示文件的相关属性
 * @author 蛙课网
 *
 */
public class Test03 {

	public static void main(String[] args) throws IOException {
//		File f1 = new File("D:\\JavaSE\\video\\5-24 Map集合概述.avi");  		//绝对路径 
		File f1 = new File("hehe.txt");			//相对路径 
		f1.createNewFile();
		
		System.out.println( f1.getAbsolutePath() );
		System.out.println( f1.getPath());
		System.out.println( f1.getParent());
		System.out.println( f1.getName());
		System.out.println( f1.isDirectory());
		System.out.println( f1.isFile());
		System.out.println( f1.length());
		System.out.println( f1.lastModified());
		System.out.println( new Date(f1.lastModified()));
	}

}
package com.wkcto.chapter06.file;

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

/**
 * 演示文件夹的相关操作
 * @author 蛙课网
 *
 */
public class Test04 {

	public static void main(String[] args) {
		String folder = "d:/java1"	;
		
		//显示指定文件夹的内容
		listsubDir( folder );  
	}

	//显示指定文件夹的内容, 只显示.txt文本文件
	private static void listsubDir(String folder) {		
		File  dir = new File(folder);
		//列出指定文件夹的内容
		File[] listFiles = dir.listFiles(new FilenameFilter() {
			//在匿名内部类对象中重写抽象方法
			@Override
			public boolean accept(File dir, String name) {
				return name.endsWith(".txt") || name.endsWith(".java");
			}
		}) ;

		for (File file : listFiles) {
			System.out.println( file.getAbsolutePath() );
		}	
	}
	//显示指定文件夹的内容
	private static void listsubDir2(String folder) {		
		File  dir = new File(folder);
		//列出指定文件夹的内容
		File[] listFiles = dir.listFiles();
		for (File file : listFiles) {
			System.out.println( file.getAbsolutePath() );
		}	
	}
	//显示指定文件夹的内容
	private static void listsubDir1(String folder) {		
		File  dir = new File(folder);
		//列出指定文件夹的内容
		String[] subdirs = dir.list();
		for (String string : subdirs) {
			System.out.println( string );
		}
	}

}
package com.wkcto.chapter06.file;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
 * 演示文件夹操作的递归调用
 * @author 蛙课网
 *
 */
public class Test05 {

	public static void main(String[] args) {
		String folder = "d:/java1";

		// 显示指定文件夹的内容
//		listsubDir(folder);
		
		//文件夹的复制
		copyDir( folder , "d:/java22");
	}

	//创建方法, 把srcfolder文件夹的内容复制到destFolder文件夹中, 包括子文件夹的内容
	private static void copyDir(String srcFolder, String destFolder) {
		//判断目标文件夹是否存在,如果不目标文件夹不存在,需要创建一个新的文件夹
		File dest = new File(destFolder);
		if ( !dest.exists() ) {
			dest.mkdirs();
		}
		//遍历srcFolder源文件夹的内容, 复制到destFolder目录中
		File src = new File(srcFolder);
		File[] listFiles = src.listFiles();
		for (File file : listFiles) {
			if (file.isFile()) {
//				直接复制文件 , 需要先构建目标文件
				File destFile = new File(destFolder, file.getName());
				copyFile( file, destFile); 		//复制文件
			}else{
				//file是文件夹, 先在destFolder文件夹下创建一个与file同名的文件夹
				File destSubDir = new File(destFolder, file.getName() );
//				destSubDir.mkdir();
				
				//再把file文件夹的内容复制到destFoler/file目录下
				copyDir(file.getAbsolutePath(), destSubDir.getAbsolutePath());
			}
		}
		
	}
	
	//文件复制
	private static void copyFile(File srcfile, File destFile) {
		try(
				FileInputStream fis = new FileInputStream(srcfile);
				FileOutputStream fos = new FileOutputStream(destFile);
				) {
			byte [] bytes = new byte[1024];
			int len = fis.read(bytes);
			while ( len != -1){
				fos.write(bytes, 0, len);
				 len = fis.read(bytes);
			}
			
		} catch (Exception e) {
			// TODO: handle exception
		}
	}

	// 显示指定文件夹的内容, 包括子文件夹的内容
	private static void listsubDir(String folder) {
		File dir = new File(folder);
		// 列出指定文件夹的内容
		File[] listFiles = dir.listFiles();
		for (File file : listFiles) {
			System.out.println(file.getAbsolutePath());
			//判断file对象如果是文件夹, 把file子文件夹的内容也显示出来
			if (file.isDirectory() ) {
				listsubDir( file.getAbsolutePath() );  		//递归调用
			}
		}
	}

}

总结:

必须掌握FileInputStrea/FileOutputStream字节流实现文件的读写

掌握FileReader/FileWriter字符流实现文件的读写

理解对象序列化与反序列化

技术文档推荐

更多>>

视频教程推荐

更多>>