File相关类总结

File是java中的与文件相关的类,可以对进行创建、删除、列出目录下的文件,判断文件或者目录。其位于java.io包中。在windows下的路径格式,例如某个桌面目录路径""。但是在java中“\”视为转译字符,因此在在使用该类是我们会将路径名写成“C:\Users\admin\Desktop”或者“C://Users//admin//Desktop”.

相对路径:指不以文件路径名开头的文件路径

绝对路径:指以文件根目录开头的路径

当前目录:指相对于程序运行时的相对路径

File中常用的方法: 列出根目录:File[]listRoot(),在windows下所列出的根目录是将计算机上的逻辑驱动器用数组返回,通俗的讲,返回的就是盘的数量,比如在我的电脑上运行下列代码,打印器器返回的结果为,“第0个目录C:\+第1个目录D:\+第2个目录E:\+第3个目录F:\+第4个目录G:\”

代码节选如下,

/**

	 * 列出机器上的根目录
	 */
	public void listRoots() {
		// 直接调用File类的static方法
		File[] lf = File.listRoots();
		// 输出File对象指向的文件的长度,以byte及,如指向目录,则返回的是0
		//System.out.println("磁盘上目录个数是:" + lf.length);
		// 返回抽象路径名的绝对路径名串符
		for (int i = 0; i < lf.length; i++) {
			System.out.println("第" + i + "个目录" + lf[i].getAbsolutePath());
		}
	}
 

boolean exist(): 判断File对象是否存在,存在则返回true反之则为false

boolean isFile(): 判断File是否是对文件,是则返回true反之则为false

boolean isDirectory(): 判断File对象是否是目录,是则返回true反之则为false

File getAbsolutePath(): 返回文件的绝对路径

boolean creatNewFile(): 创建个一个新的文件,成功创建则返回true反之则为false。该方法可能会抛出异常,因此需要对异常进行处理(异常请转至http://raidyue.iteye.com/blog/1584943)

boolean delete(): 删除File对象的抽象路径名表示的文件或者目录。若此路径名表示的是目录,则需要目录为空才能删除,删除成功则返回的是true,反之是false

以上几个方法的使用实列:判断是文件是否存在,删除文件,创建文件

public void testCreatAndDelete(String filename) {

		// 通过传入的文件名构造File对象
		File temFile = new File(filename);
		// 判断文件是否存在
		if (temFile.exists()) {
			// 判断File指向的文件是否是真是的文件
			if (temFile.isDirectory()) {
				// 输出其路径
				System.out.println("这是一个目录:" + temFile.getAbsolutePath());
			}
		}
		// 判断File对象指向的文件是否是真实的文件
		if (temFile.isFile()) {
			// 打印文件长度
			printFileAttr(temFile);
			// 删除文件
			temFile.delete();
			String theName = temFile.getName();
			String absPath = temFile.getAbsolutePath();
			System.out.println("文件已删除,名字是:" + theName + "绝对路径是:" + absPath);
		}else{
			try{
				temFile.createNewFile();
				System.out.println("文件已创立"+temFile.getAbsolutePath());
				//打印文件长度
				printFileAttr(temFile);
			}catch(Exception ef){
				System.out.println("创建文件失败");
			}
		}	
	}
 

递归:

简单说的说递归就是方法自己调用自己的过程,递归最需注意的就是递归结束的判断,如果没有跳出判断,就会陷入死循环。例如,我们用递归求出斐波那契数列的项,一下是代码实列

//求斐波那契数列

	public int Recursion(int i) {
		int f = 0;
		if (i == 1) {
			f = 1;
		}
		if (i == 2) {
			f = 1;
		}
		if(i>2){
		f = Recursion(i - 1) + Recursion(i - 2);
		}
		return f;
	}
 

当我们求第五项,f5= Recursion(4)+Recursion(3);

 =Recursion(3)+Recursion(2)+Recursion(2)+Recursion(1)

 =Recursion(2)+Recursion(1)+Recursion(2)+Recursion(2)+Recursion(1)

 =5

   现在我们知道了递归的方法,我们就能用递归找出某个目录下的所有文件,代码示例如下

   public int listDir(String dirName) {

		int fileCount = 0;
		File dirFile = new File(dirName);
		File[] subFile = dirFile.listFiles();
		//我们在这里判断跳出递归的条件
		if (subFile == null || subFile.length == 0) {
			return 0;
		}
		for (int i = 0; i < subFile.length; i++) {
			if (subFile[i].isDirectory()) {
				String subDir = subFile[i].getAbsolutePath();
				System.out.println("目录:" + subDir);
				txt_area.append(subDir + "\n");
				//这是个目录,所以我们以这个目录为起点,重新调用这个方法
				fileCount += listDir(subDir);
			}
			if (subFile[i].isFile()) {
				boolean mate = false;
				fileCount++;、
				//这是个文件,我们就获取文件的绝对路径,输出文件的绝对路径
				String filePath = subFile[i].getAbsolutePath();
				System.out.println("文件" + filePath);

				mate = readFile(filePath, keyWord);
				if (mate == true || filePath.contains(keyWord)) {
					txt_area.append(filePath + "\n");
				}
			}

		}

		return fileCount;

	}

猜你喜欢

转载自raidyue.iteye.com/blog/1595687