11_IO(File类)


File类的常见方法:
1.创建
   boolean createNewFile();在指定位置创建文件,如果该文件已经存在,则不创建,返回false
   和输出流不一样,输出流对象一建立就创建文件,而且文件已经存在,会覆盖
   boolean mkdir();创建文件夹
   boolean  mkdirs();创建多级文件夹
   2.删除
   boolean delete();删除失败返回false
   void deleteOnExit();在程序退出时删除指定文件
   3.判断
   boolean exists();文件是否存在
   isFile();
   isDirectory();
    isHidden();
   isAbsolute();
   4.获取信息
   getName();
    getPath();
    getParent();
 
   getAbsolutePath();
   lastModified();
   length();
 方法操作的例子:
import java.io.File;
import java.io.IOException;

public class FileDemo {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		
		method_5();
	}

	public static void method_5() {
		File f1=new File("D:\\a\\a.txt");
		File f2=new File("D:\\b\\haha.txt");
		System.out.println("remover:::"+f1.renameTo(f2));
	}

	public static void method() {
		//将a.txt封装成file对象,可以将已有的和未出现的文件或者文件夹封装成对象
		File f=new File("D:\\a\\a.txt");
		
		File f1=new File("D:\\a","b.txt");
		
		File d=new File("D:\\a");
		//分隔符跨平台
		File d1=new File("D:"+File.separator+"abc.txt");
		
		File f2=new File(d,"c.txt");
		
		System.out.println(f+"..."+f1+"..."+f2+"..."+d+"..."+d1);
	}

	public static void method_1() throws IOException{
		File f=new File("D:\\b\\chen.txt");
		f.deleteOnExit();
//		boolean b=f.createNewFile();
//		System.out.println(b);
		System.out.println(f.delete());
	}
	
	public static void method_2(){
		File f=new File("D:\\a\\c.txt");
//		System.out.println(f.canExecute());
		System.out.println(f.exists());
		
		File dir=new File("D:\\b\\dir");
		System.out.println("dir:::"+dir.mkdir());;
	}
	
	public static void method_3() throws IOException{
		File f=new File("D:\\a\\ooo.txt");

		f.mkdir();
		//在判断文件对象是否是文件或者是目录时,必须要先判断该文件对象封装的内容是否存在
		//通过exists()判断
		System.out.println("dir:::"+f.isDirectory());
		System.out.println("fle:::"+f.isFile());
		System.out.println("absolute:::"+f.isAbsolute());
	}
	
	public static void method_4(){
		File f=new File("a.txt");
		
		System.out.println("paht:"+f.getPath());
		System.out.println("absolute:"+f.getAbsolutePath());
		System.out.println("parent:"+f.getParent());//该方法返回的是绝对路径中的父目录。如果获取的是相对路径,返回null
													//如果相对路径中有上一层目录那么该目录就是返回结果
	}
	
}


 遍历某个目录下面的所有文件,并将文件名输出
import java.io.File;

public class FileDemo3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File dir=new File("E:\\My_JAVA\\");
		showDir(dir);
	}
	static StringBuilder sb=new StringBuilder("|--");
	public static void showDir(File dir){
		System.out.println(sb.toString()+""+dir);
		//获取文件夹下的所有文件
		File []files=dir.listFiles();
		for(int x=0;x<files.length;x++)
		{
			//如果是目录,递归调用此方法
			if(files[x].isDirectory())
			{
				sb.insert(0, ' ');
				showDir(files[x]);
			}
			else//如果不是目录输出文件名
				System.out.println(files[x]);
		}
	}
}

 删除一个带内容的目录
删除原理:
在window中,删除目录从里面往外面删除的

既然从里往外删,就需要用到递归
import java.io.File;

/*删除一个带内容的目录
删除原理:
在window中,删除目录从里面往外面删除的


既然从里往外删,就需要用到递归
*
*/
public class RemoveDir {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File dir=new File("E:\\a");
		removeDir(dir);
	}
	
	public static void removeDir(File dir){
		//获取文件夹下的所有文件
		File [] files=dir.listFiles();
		for(int i=0;i<files.length;i++){
			//如果是目录递归调用此方法
			if(files[i].isDirectory())
				removeDir(files[i]);
			else//如果是文件,删除文件,并输出删除的信息
				System.out.println(files[i].toString()+"::"+files[i].delete());
		}
		//删除文件
		System.out.println(dir+"---dir::"+dir.delete());
	}

}
练习:
   将一个指定目录下的java文件的绝对路径,存储到一个文本文件中
  建立一个java文件列表文件
 
 思路:
  1.对指定目录进行递归
  2.获取递归过程中所有的java文件的路径
  3.将这些集合存储到集合中
  4.将集合中的数据写入到一个文件中
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class JavaFileList {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		File dir=new File("E:\\a");
		//创建集合对象
		List<File> list=new ArrayList<File>();
		fileToList(dir,list);
//		System.out.println(list.size());
		writeToFile(list,"E:\\a\\list.txt");
	}

	public static void fileToList(File dir,List<File> list){
		File[] files=dir.listFiles();
		for(File f:files)
		{
			if(f.isDirectory())
			{
				fileToList(f,list);
			}
			else{
				if(f.getName().endsWith(".java"))
					list.add(f);
			}
		}
	}
	
	public static void writeToFile(List<File> list,String javalist) throws IOException
	{
		BufferedWriter bufw=new BufferedWriter(new FileWriter(javalist));
		for(File f:list)
		{
			String path=f.getAbsolutePath();
			bufw.write(path);
			bufw.newLine();
			bufw.flush();
		}
		bufw.close();
	}
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值