java基础:文件IO *** 作、File类的使用。

java基础:文件IO *** 作、File类的使用。,第1张

IO基础:File类的使用

  Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。

File类提供了专门创建File对象的构造方法:
  File(String pathname) //通过指定的一个字符串类型的文件路径创建一个新的File对象
  File(String parent,String child)//根据指定的一个字符串类型的父路径和一个字符串类型的子路径(包含文件名称)创建一个File对象。
  File(File parent,String child)//根据指定的File类的父路径和字符串类型的子路径(包括文件名称)创建一个File对象

1. 常用方法:
  exists() //判断文件或目录是否存在
  delete() //删除文件,删除成功返回true,删除失败返回false
  getParentFile() //返回对象的父路径,返回的是File对象
  createNewFile() //创建文件,不存在则创建文件,创建成功返回true(需要有对应的文件夹,没有文件夹会报异常),存在则返回false
  getName() //返回file对象表示的文件或文件夹名称。
  getPath() //返回对象对应的路径
  getAbsoluteFile() //返回对象的绝对路径
  canRead() //判断文件或目录是否可读
  canWrite() //判断是否可写
  isFile() //判断是否是文件
  isDirectory() //判断是否是文件夹
  isAbsolute() //判断是否是绝对路径
  lastModified() //返回修改时间戳,1970年1月1日0时0分0秒到最后被修改的毫秒值。
  length() //返回文件长度
  list() //列出指定目录全部内容
  listFiles() //返回一个包含了File对象所有子文件和子目录的File数组。

    String path = "F:\java_IO\";
    String file = path + "a.txt";
    String path1 = "src\a.txt";
    
    //绝对路径构建File对象
    File file1 = new File(file);
    //File file1 = new File("D:/java_IO/a.txt");
    
	//相对路径创建
    File file2 = new File(path1);
    
	//判断文件或目录是否存在
    System.out.println("file1目录判断:" + file1.exists());
    
	//删除文件,删除成功返回true,删除失败返回false
    System.out.println("删除file1:" + file1.delete());

	//返回对象的父路径,返回的是File对象
    File f1 = file1.getParentFile();
    System.out.println("file1父路径:" + f1);//
    System.out.println("file2父路径:" + file2.getParentFile());

    if (!f1.exists()){//如果该文件夹不存在
        f1.mkdir();//创建目录
    }
    
	//创建文件,不存在则创建文件,创建成功返回true(需要有对应的文件夹,没有文件夹会报异常),存在则返回false
    System.out.println("创建file1:" + file1.createNewFile());
    System.out.println("创建file2:" + file2.createNewFile());

	//返回file对象表示的文件或文件夹名称。
    System.out.println("文件名称:" + file1.getName());

	//返回对象对应的路径
    System.out.println("file1路径:" + file1.getPath());
    System.out.println("file2路径:" + file2.getPath());

	//返回对象的绝对路径
    System.out.println("file1绝对路径:" + file1.getAbsoluteFile());
    System.out.println("file2绝对路径:" + file2.getAbsoluteFile());

	//判断文件或目录是否可读
    System.out.println("可读:" + f1.canRead());

	//判断是否可写
    System.out.println("可写:" + f1.canWrite());

	//判断是否是文件
    System.out.println("文件:"+f1.isFile());
    System.out.println("文件:"+file1.isFile());
    
	//判断是否是文件夹
    System.out.println("文件夹:" + f1.isDirectory());
    System.out.println("文件夹:" + file1.isDirectory());

	//判断是否是绝对路径
    System.out.println("绝对路径:" + file1.isAbsolute());
    System.out.println("绝对路径:" + file2.isAbsolute());
    
	//返回修改时间戳,1970年1月1日0时0分0秒到最后被修改的毫秒值。
    System.out.println(file1.lastModified());
    
	//返回文件长度
    System.out.println(file1.length());
    

    
    File[] l1 = file3.listFiles();//返回一个包含了File对象所有子文件和子目录的File数组。
    for (File f : l1) {
        System.out.println(f);
    }

2. 创建临时文件
  在某些情况下,程序需要读写一些临时文件,File对象提供了静态方法createTempFile()用于创建临时文件,及deleteOnExit()在Jvm退出时删除该文件。
使用案例:

	//创建临时文件,参数1:临时文件前缀,参数2:临时文件后缀。
	File f = File.createTempFile("tmp1-",".txt");
	
	f.deleteOnExit();//JVM推出时删除文件
	
	Thread t1 = new Thread();
	t1.sleep(5000);//线程睡眠,方便查看效果
	
	System.out.println(f.isFile());
	System.out.println(f.getPath());

3. 遍历目录文件
①常规调用

        String path = "F:\java_IO\";
        File file = new File(path);
        
        if (file.exists()){    //file必须时文件夹才允许调用,否则会出现异常
            String[] s1 = file.list();//列出指定目录全部内容
            for (String s : s1) {
               System.out.println(s);
            }
        }

②过滤器使用

        String path = "F:\java_IO\";
        File file = new File(path);
        //FilenameFilter匿名内部类对象
        FilenameFilter filter = new FilenameFilter(){
            @Override
            public boolean accept(File dir, String name) {
            	//过滤以java结尾文件
                //if (name.endsWith(".java")){
                //    return true;
                //}
                File currFile = new File(dir, name);
                if (currFile.isFile() && name.endsWith(".java")){
                    return true;
                }else {
                    return false;
                }
            }
        };
        
        if (file.exists()){    //file必须时文件夹才允许调用,否则会出现异常
            String[] lists = file.list(filter);
            System.out.println("lists:" + lists);
            for (String list : lists) {
                System.out.println(list);
            }
        }

③获取某目录下所有的文件(使用递归遍历)。

	public static void main(String[] args) {
	//获取某目录下所有的文件绝对路径
	    File file = new File("F:\java_IO\");
	    fileDir(file);
	}
	//获取某目录下所有文件的绝对路径
	public static void fileDir(File dir){
	   File[] fs = dir.listFiles();
	    for (File f : fs) {
	        if (f.isDirectory()){//如果时文件夹
	            fileDir(f);
	        }
	        System.out.println(f.getAbsoluteFile());//输出文件绝对路径
	    }
	}

4. 删除文件。
  删除文件:

	File file = new File("F:\java_IO\a.txt");
	System.out.println(file.delete());//删除时不会放到回收站,直接删除
	
	//文件夹下没有文件可删除成功,有文件会删除失败,可以通过递归的方式进行删除
	File file1 = new File("F:\java_IO\test");
	System.out.println(file1.delete());

  删除文件夹下所有文件:

//删除文件夹
public static void main(String[] args) {
    File file = new File("F:\java_IO\test");
    deleteDir(file);
}
//递归删除方法
public static void deleteDir(File dir){
    if (dir.exists()){
        File[] files = dir.listFiles();
        for (File file : files) {
            if (file.isDirectory()){
                deleteDir(file);
            }
            file.delete();//如果是文件则删除。
        }
        //删除完文件后删除文件夹
        dir.delete();
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/905896.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-15
下一篇 2022-05-15

发表评论

登录后才能评论

评论列表(0条)

保存