java关于文件操作

java关于文件(File)操作

1 作用
在Java程序中对磁盘件进行描述的类。文件和目录路径名的抽象表 示形式。

常用的构造方法:
File(File parent ,String child);
从父抽象路径名和子路径名字符串创建新的 File实例。
File(String pathname);
给定一个字符串路径创建新的File实列(字符串路径可以是绝对或相对路径)。
File(String parent, String child)
从父路径名字符串和子路径名字符串创建新的 File实例。
File(URI uri) 。
通过将给定的 file: URI转换为抽象路径名来创建新的 File实例。

一些常用属性

static String pathSeparator:与系统有关的路径分隔符,为了方便,它被表示为一个字符串(;)。
static char pathSeparatorChar:; static String Separator:与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串(\)。
一些常用的方法
创建文件夹和文件

	boolean mkdir() 创建抽象路径名指定的目录(父目录需要存在);
	boolean mkdirs() 创建~~~~~~~~指定的目录(父目录可以不存在); 
	boolean createNewFile() 当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建个新的空 文件。(就是创建文件);

判断

boolean exists() 测试此抽象路径名表示的文件或目录是否存在。  
boolean isDirectory() 测试此抽象路径名表示的文件是否是一个目录。
boolean isFile() 测试此抽象路径名表示的文件是否是一个标准文件。
boolean isHidden() 测试此抽象路径名指定的文件是否是一个隐藏文件。
boolean canExecute() 测试应用程序是否可以执行此抽象路径名表示的文件。
 boolean canRead() 测试应用程序是否可以读取此抽象路径名表示的文件。
 boolean canWrite() 测试			应用程序是否可以修改此抽象路径名表示的文件。

int compareTo(File) 按字母顺序比较两个抽象路径名。

删除文件及文件夹

boolean delete() 删除此抽象路径名表示的文件或目录。
void deleteOnExit() 请求在虚拟机终止时删除由此抽象路径名表示的文件或目录。  

获取文件的一些属性

  File   getAbsoluteFile() 返回此抽象路径名的绝对路径名形式。
  String getAbsolutePath() 返回此抽象路径名的绝对路径名字符串。
  File   getCanonicalFile() 返回此抽象路径名的规范形式。
 String  getCanonicalPath() 返回此抽象路径名的规范路径名字符串。
 String  getName() 返回由此抽象路径名表示的文件或目录的名称。 
  String  getParent() 返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
   File getParentFile() 返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录则返回 null。

String getPath() 将此抽象路径名转换为一个路径名字符串。

文件夹文件的列表操作

String[] list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。
File[] listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。

文件重命名操作(剪切操作!)

boolean renameTo(File dest) 重新命名此抽象路径名表示的文件。
列入:
把E:盘下的Helloworld.txt  移动到盘下E:\\FilellText\\Helloworld.txt
    File file = new File("e:\\Helloworld.txt");
    File file1 = new File("e:\\FilellText\\Helloworld.txt"); //指定文件名(可以从命名)
    boolean b2 =file.renameTo(file1);
    System.out.println("移动是否成功:"+b2); //true

设计一个方法,在某个文件的相同目录下创建出一个新文件(新建文本文档.txt)

/** 分析: * 返回值:不需要 * 参数:一个File对象 * getParent方法 * createNewFile方法 * 构造方法 */ 			
public static void fun(File file) throws IOException {
 //获取父路径
  String parent = file.getParent(); 
  //创建	File对象 
  File f = new File(parent, "新建文本文档.txt");
   //创建新文件
    f.createNewFile(); 
   		
   	 }

//需求一:列出指定目录下所有子文件夹以及子文件还有特殊格式的文件

	先热身:
	public static void method1(String path) {
	File file = new File(path);
	//子文件或者子文件夹的名称
	String[] arr = file.list();
	for(String str:arr) {
		System.out.println(str);
	}
}
方法一(重点)
 public static void demo1(){
    File f2 = new File("D:\\cn");
    String [] arr = f2.list();

    File [] ListFiles = f2.listFiles();
    System.out.println(Arrays.toString(ListFiles));//打印一下
        String [] file2 = f2.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                    if(name.endsWith(".class")){
                        return true;
                    }
                    return false;
            }

        });
    System.out.println(Arrays.toString(file2));
}

方法二:
 public static void demo2(){
        File f2 = new File("D:\\cn");
        String [] arr = f2.list();
    System.out.println(Arrays.toString(arr));
        String [] arr2 = new String [arr.length];

        int temp=0;
    for (int i =0;i<arr.length;i++) {
        if(arr[i].endsWith(".class")){
            arr2[temp]=arr[i];
            temp++;
        }
    }
    for (String s : arr2) {
        if(s!=null){
            System.out.println(s);
        }else {
            break;
        }
    }
}

需求二:(1)(递归)列出文件夹中所有的子文件夹和文件,包括子文件夹中文件和文件夹

public class FIleTest02 {
	 public static void main(String[] args) {
        File  f = new File("d:/");
        ListDir(f,0);
}
 public static void ListDir(File dir,int valve){
    File  [] arr = dir.listFiles();
    valve++;
    if(arr!=null&&arr.length>0){
        for (File file : arr) {
            if(file.isDirectory()){
                ListDir(file,valve);
            }else{
                System.out.println(getSeparator(valve)+file.toString());
            }
        }
    }

}
  //添加空格
public static  String getSeparator(int level){
    StringBuilder sb = new StringBuilder();
    sb.append("|");
    for(int i =0;i<level;i++){
        sb.append("--");
    }
    return sb.toString();
}

(2)递归删除文件夹

	deleteFile(new File("E:\\c"));  // 新建一个测试目录(不可传入重要文件目录)

  public static void deleteFile(File dir){
    File[] files = dir.listFiles();
    if(files!=null&&files.length>0){
        for (File file : files) {
            if(file.isDirectory()){
                deleteFile(file);
            }else {
                System.out.println(file.toString()+"-------"+file.delete()); //删除文件
            }

        }

    }
    System.out.println(dir.toString()+"============"+dir.delete()); //删除目录
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值