File类个别属性的介绍与使用

Android 专栏收录该内容
4 篇文章 0 订阅

1、File对象代表文件路径 

 File类的对象可以代表一个具体的文件路径,在实际代表时,可以使用绝对路径也可以使用相对路径。  

下面是创建的文件对象示例。   public File(String pathname) 

 该示例中使用一个文件路径表示一个File类的对象,例如:   

File f1 = new File(d\\test\\1.txt);   

File f2 = new File(1.txt);   

File f3 = new File(e\\abc); 

 这里的f1f2对象分别代表一个文件,f1是绝对路径,而f2是相对路径,f3则代表一个文件夹,文件夹也是文件路径的一种。   

public File(String parent String child) 

 也可以使用父路径和子路径结合,实现代表文件路径,例如:   

File f4 = new File(d\\test\\”,“1.txt);

这样代表的文件路径是:d\test\1.txt.   

2File类常用方法 

 File类中包含了很多获得文件或文件夹属性的方法,使用起来比较方便,下面将常见的方法介绍如下:   

acreateNewFile方法 

public boolean createNewFile() throws IOException 

该方法的作用是创建指定的文件。该方法只能用于创建文件,不能用于创建文件夹,且文件路径中包含的文件夹必须存在。   

bdelect方法 

public boolean delete()

该方法的作用是删除当前文件或文件夹。如果删除的是文件夹,则该文件夹必须为空。如果需要删除一个非空的文件夹,则需要首先删除该文件夹内部的每个文件和文件夹,然后在可以删除,这个需要书写一定的逻辑代码实现。   

cexists方法 

public boolean exists() 

该方法的作用是判断当前文件或文件夹是否存在。   

dgetAbsolutePath方法 

public String getAbsolutePath() 

该方法的作用是获得当前文件或文件夹的绝对路径。例如c\test\1.t则返回c\test\1.t.   

egetName方法 

public String getName()

该方法的作用是获得当前文件或文件夹的名称。例如c\test\1.t,则返回1.t. 

  fgetParent方法 

  public String getParent() 

  该方法的作用是获得当前路径中的父路径。例如c\test\1.t则返回c\test. 

  gisDirectory方法 

  public boolean isDirectory() 

  该方法的作用是判断当前File对象是否是目录。   hisFile方法 

  public boolean isFile() 

  该方法的作用是判断当前File对象是否是文件。

ilength方法   public long length() 

  该方法的作用是返回文件存储时占用的字节数。该数值获得的是文件的实际大小,而不是文件在存储时占用的空间数。   

jlist方法 

  public String[] list() 

  该方法的作用是返回当前文件夹下所有的文件名和文件夹名称。说明,该名称不是绝对路径。

klistFiles方法 public File[] listFiles() 

  该方法的作用是返回当前文件夹下所有的文件对象。   

lmkdir方法 

  public boolean mkdir() 

  该方法的作用是创建当前文件文件夹,而不创建该路径中的其它文件夹。假设d盘下只有一个test文件夹,则创建d\test\abc文件夹则 成功,如果创建d\a\b文件夹则创建失败,因为该路径中d\a文件夹不存在。如果创建成功则返回true,否则返回false.   

mmkdirs方法 

  public boolean mkdirs() 

  该方法的作用是创建文件夹,如果当前路径中包含的父目录不存在时,也会自动根据需要创建。

nrenameTo方法 

  public boolean renameTo(File dest) 

  该方法的作用是修改文件名。在修改文件名时不能改变文件路径,如果该路径下已有该文件,则会修改失败。   

osetReadOnly方法 

  public boolean setReadOnly() 

  该方法的作用是设置当前文件或文件夹为只读。   

3File类基本示例 

  以上各方法实现的测试代码如下:

import java.io.File;

/**
 * File类使用示例
 */
public class FileDemo {
	public static void main(String[] args) {
		// 创建File对象
		File f1 = new File("d:\\test");
		File f2 = new File("1.txt");
		File f3 = new File("e:\\file.txt");
		File f4 = new File("d:\\", "1.txt");
		// 创建文件
		try {
			boolean b = f3.createNewFile();
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 判断文件是否存在
		System.out.println(f4.exists()); // 获得文件的绝对路径
		System.out.println(f3.getAbsolutePath()); // 获得文件名
		System.out.println(f3.getName());
		// 获得父路径
		System.out.println(f3.getParent());
		// 判断是否是目录
		System.out.println(f1.isDirectory());
		// 判断是否是文件
		System.out.println(f3.isFile());
		// 获得文件长度
		System.out.println(f3.length());
		// 获得当前文件夹下所有文件和文件夹名称
		String[] s = f1.list();
		for (int i = 0; i < s.length; i++) {
			System.out.println(s[i]);
		}
		// 获得文件对象
		File[] f5 = f1.listFiles();
		for (int i = 0; i < f5.length; i++) {
			System.out.println(f5[i]);
		}
		// 创建文件夹
		File f6 = new File("e:\\test\\abc");
		boolean b1 = f6.mkdir();
		System.out.println(b1);
		b1 = f6.mkdirs();
		System.out.println(b1);
		// 修改文件名
		File f7 = new File("e:\\a.txt");
		boolean b2 = f3.renameTo(f7);
		System.out.println(b2);
		// 设置文件为只读
		f7.setReadOnly();
	}
}


4File类综合示例 

  下面以两个示例演示File类的综合使用。第一个示例是显示某个文件夹下的所有文件和文件夹,原理是输出当前名称,然后判断当前File对象是 文件还是文件夹,如果则获得该文件夹下的所有子文件和子文件夹,并递归调用该方法实现。第二个示例是删除某个文件夹下的所有文件和文件夹,原理是判断是否 是文件,如果是文件则直接删除,如果是文件夹,则获得该文件夹下所有的子文件和子文件夹,然后递归调用该方法处理所有子文件和子文件夹,然后将空文件夹删 除。则测试时谨慎使用第二个方法,以免删除自己有用的数据文件。示例代码如下: 

  

import java.io.File;

/**
 * 文件综合使用示例
 */
public class AdvanceFileDemo {
	public static void main(String[] args) {
		File f = new File("e:\\Book");
		printAllFile(f);
		File f1 = new File("e:\\test");
		deleteAll(f1);
	}

	/**
	 * 打印f路径下所有的文件和文件夹
	 * 
	 * @param f
	 *            文件对象
	 */
	public static void printAllFile(File f) {
		// 打印当前文件名
		System.out.println(f.getName());
		// 是否是文件夹
		if (f.isDirectory()) {
			// 获得该文件夹下所有子文件和子文件夹
			File[] f1 = f.listFiles();
			// 循环处理每个对象
			int len = f1.length;
			for (int i = 0; i < len; i++) {
				// 递归调用,处理每个文件对象
				printAllFile(f1[i]);
			}
		}
	}

	/**
	 * 删除对象f下的所有文件和文件夹
	 * 
	 * @param f
	 *            文件路径
	 */
	public static void deleteAll(File f) {
		// 文件
		if (f.isFile()) {
			f.delete();
		} else {
			// 文件夹
			// 获得当前文件夹下的所有子文件和子文件夹
			File f1[] = f.listFiles();
			// 循环处理每个对象
			int len = f1.length;
			for (int i = 0; i < len; i++) {
				// 递归调用,处理每个文件对象
				deleteAll(f1[i]);
			}
			// 删除当前文件夹
			f.delete();
		}
	}
}

  关于File类其它的方法和使用时需要注意的问题还需要多进行练习和实际使用。

注:文件写入权限

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE" />

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值