Java文件的读写操作

File类概述

Java语言中File类是唯一表示文件对象和目录对象的数据类型。在Java语言中文件路径分隔符使用‘/’或‘\\’(‘\\’中两个斜线分别代表转译字符和分隔符)
文件可以存储字节或字符;目录不能直接存储字节或字符,只能存储文件后子目录。
文件可以被读取和写入,而目录不能执行读写操作,只能建立,删除及获取其中包含的子目录及文件。
对于文件 和目录通常要严格区分,File类提供方法可以判断此File对象是文件还是目录。

File类对象的创建(创建文件对象)

  • File(File dir,String child):根据parent抽象路径名和child路径名字符串创建一个新File实例
  • File(String pathName):通过将给定路径字符串转换为抽象路径名来创建一个新的File实例(仅可创建文件对象,若目录不存在不会创建目录)
  • File(String parent,String child):根据parent路径名字符串和child路径名字符串创建一个 新File实例(与第一个类似,区别在于第一个需要给定一个File的实例对象作为参数)
  • File(URL uri):通过给定的file:URI转化为一个抽象路径名来创建一个新的File实例(URI是Java已有的类,该对象表示一个文件路径)
    抽象路径可以由自己创建的路径名,可以存在也可以不存在,如果不存在在创建文件时需要 先调用mkdir否则系统找不到指定路径
		/*
		 * 通过将给定路径字符串转换为抽象路径名来创建文件对象
		 */
		String pathName = "d:/one.txt";
		File file = new File(pathName);
		System.out.println(file == null);//无论给定的文件虚拟路径是否存在,file一定不是空的。创建文件对象!=该文件在硬盘中存储
		/*
		 * 根据parent抽象路径名和child路径名字符串创建一个新File实例
		 */
		File file2 = new File(new File("d:/"),"two.txt");
		
		/*
		 * 根据parent路径名字符串和child路径名字符串创建一个 新File实例
		 */
		File file3 = new File("d:/","three.txt");
		
		/*
		 * 通过给定的file:URI转化为一个抽象路径名来创建一个新的File实例
		 */
		URI uri = URI.create("file:/d:/four.txt");//创建URI对象时,路径前需要加上file:/
		File file4 = new File(uri);

File类常用方法

  • public boolean canWrite():判断是否能修改该文件
  • public boolean canRead():判断是否能读取该文件
  • public boolean createNewFile() throws IOException():创建一个新文件,判断是否创建成功
  • public boolean delete():删除此文件,并判断是否删除成功
  • public boolean exist():判断文件是否存在(在硬盘上存储,而非该对象是否存在)
		/*
		 * 创建文件对象
		 */
		String path = "d:/one.txt";
		File file = new File(path);
		
		/*
		 * 判断文件是否存在
		 */
		System.out.println(file.exists());//输出结果为false,因为仅仅创建了文件对象,并没有在硬盘上存储该文件
		
		/*
		 * 创建一个新文件
		 */
		try {
			file.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
		System.out.println(file.exists());//此时输出结果为true
		
		/*
		 * 判断文件能否修改与读取
		 */
		System.out.println(file.canRead());//判断文件是否能正常读取
		System.out.println(file.canWrite());//判断文件是否能正常修改
		
		/*
		 * 删除文件
		 */
		file.delete();
		System.out.println(file.exists());//删除后输出为false
  • public String getAbsolutePath():获取整个文件的绝对路径
  • public String getName():获取文件名
  • public String getParent():获取文件的父目录
  • public String getPath():获取构造文件时的路径
  • public bolean isDirectory():判断是否是目录
  • public boolean isFile():判断是否是文件
  • public File[] listFiles():获取当前目录下所有文件组成的File数组
  • public boolean mkdir():创建目录并判断是否创建成功,只能创建一级目录
  • public boolean mkdirs():创建目录并返回i是否创建成功,可以创建一级或多级目录
		/*
		 * 创建文件对象
		 */
		String pathName = "d:/one.txt";
		File file = new File(pathName);
		
		/*
		 * 创建一个新文件
		 */
		try {
			file.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		/*
		 * 获取文件路径
		 */
		String absolutePath = file.getAbsolutePath();//默认绝对路径,从磁盘名到文件名的全路径
		String path = file.getPath();//默认相对路径,得到的是构造file时的路径
		
		/*
		 * 获取文件名
		 */
		String name = file.getName();//结果:one.txt
		
		/*
		 * 获取父目录
		 */
		String parent = file.getParent();//结果:d:/
		
		/*
		 * 判断是目录还是文件
		 */
		file.isFile();//结果:true
		file.isDirectory();//结果:false
		
		/*
		 * 创建目录
		 */
		File file2 = new File("d:/one");
		file2.mkdir();//返回true
		File file3 = new File("d:/1/2");
		file3.mkdir();//返回false
		file3.mkdirs();//返回true
		
		/*
		 * 获取目录下所有文件名
		 */
		File file4 = new File("d:/a");
		file4.mkdir();
		for(int i=1;i<=10;i++) {
			File file5 = new File("d:/a/"+i);
			try {
				file5.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}//以上为创建即将提取的目录
		File []files = file4.listFiles();//获取文件数组
		for(File f:files) {
			System.out.print(f.getName()+" ");
		}

文中相似方法对比简析

  1. 构造器File(File dir,String child)与File(String parent,String child):区别在于后者父路经以字符串为参数转换而前者是已存的File对象的抽象路径
  2. 获取文件路径方法public String getPath()与public String getAbsolutePath():区别在于前者获取的是构造对象的文件路径,如果构造对象的路径为全路径则得到全路径,即默认相对路径;而后者任何情况都获取全路径,及默认绝对路径
  3. 创建目录方法public boolean mkdir()与public boolean mkdirs():区别在于前者只能创建一级目录,在创建多级目录时返回值为false,而后者可以创建一级或者多级目录
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值