8.1JavaI/O流之File对象

文件操作:

Java提供了File对象来操作文件:

File f = new File("C:\\Windows\\notepad.exe");

在传入文件路径时,可以传入的是绝对路径和相对路径
绝对路径:是以根目录为开头的完整路径。
(window使用\作为文件分隔符,java中使用需要\\。Linux平台需要使用/作为分隔符。)
相对路径:是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。

// 假设当前目录是C:\Docs
File f1 = new File("sub\\javac"); // 绝对路径是C:\Docs\sub\javac
File f3 = new File(".\\sub\\javac"); // 绝对路径是C:\Docs\sub\javac
File f3 = new File("..\\sub\\javac"); // 绝对路径是C:\sub\javac
System.out.println(File.separator); // 根据当前平台打印"\"或"/"
文件和目录

File对象创建时不会出错,因为没有进行磁盘操作,只有在调用File方法时才会出错。
用File获取到一个文件时,可以判断文件的权限和大小:

boolean canRead():是否可读;
boolean canWrite():是否可写;
boolean canExecute():是否可执行;
long length():文件字节大小。

判断是否是目录还是文件用:

boolean isFile();//判断是否是文件
boolean isDirectory();//判断是否是目录
创建和删除文件:

当File对象表示一个文件时,可以用createNewFile()创建一个新文件(在当前目录下创建),用delete()删除文件:

File file = new File("1.txt");//file表示test.txt文件
		//exists()方法返回boolean类型,检验file是否存在
		
		file.createNewFile();
		
		if(file.exists()) {
			System.out.println("创建成功");
			file.delete();//做删除操作
			if(!file.exists()) {
				System.out.println("删除成功");
			}
		}else {
			System.out.println("创建失败");
		}

创建临时文件
createTempFile()和deleteOnExit(),后者是在JVM退出时调用,自动删除

遍历文件和目录

使用list()和listFiles()方法列出目录下的文件和子目录名。

public static void main(String[] args) throws IOException {
		File file = new File("C:\\");//获取C盘根目录
		File[] files = file.listFiles();//获取C盘根目录下的子文件和子目录
		for (File file2 : files) {
			System.out.println(file2);//打印files
		}
	}

和文件操作类似,File对象如果表示一个目录,可以通过以下方法创建和删除目录:

  • boolean mkdir():创建当前File对象表示的目录;
  • boolean mkdirs():创建当前File对象表示的目录,并在必要时将不存在的父目录也创建出来;
  • boolean delete():删除当前File对象表示的目录,当前目录必须为空才能删除成功。

Path对象

Path对象和File对象相似

public class Main {
    public static void main(String[] args) throws IOException {
        Path p1 = Paths.get(".", "project", "study"); // 构造一个Path对象
        System.out.println(p1);
        Path p2 = p1.toAbsolutePath(); // 转换为绝对路径
        System.out.println(p2);
        Path p3 = p2.normalize(); // 转换为规范路径
        System.out.println(p3);
        File f = p3.toFile(); // 转换为File对象
        System.out.println(f);
        for (Path p : Paths.get("..").toAbsolutePath()) { // 可以直接遍历Path
            System.out.println("  " + p);
        }
    }
}

练习:输出一个目录中所有的目录和文件(递归)

public class FileTest {
	public static void main(String[] args) throws IOException {
		File file = new File("C:\\Users\\pc-20171123\\Desktop\\Document");//获取指定目录
		System.out.println(file);
		File[] files = file.listFiles();
		String space = "    ";
		printDirectory(files, space);
	}
	public static void printDirectory(File[] files,String space) {
		space +="    ";
		for (File file : files) {
			if(file.isDirectory()) {
				File[] files2 = file.listFiles();
				System.out.println(space+file);
				printDirectory(files2,space);
			}else {
				System.out.println(space+file);
			}
		}
	}
}

输出:
C:\Users\pc-20171123\Desktop\Document
        C:\Users\pc-20171123\Desktop\Document\other
        C:\Users\pc-20171123\Desktop\Document\ppt
        C:\Users\pc-20171123\Desktop\Document\word
            C:\Users\pc-20171123\Desktop\Document\word\1.wps
            C:\Users\pc-20171123\Desktop\Document\word\2.wps
            C:\Users\pc-20171123\Desktop\Document\word\work
                C:\Users\pc-20171123\Desktop\Document\word\work\abc.wps
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值