File文件的操作过滤

来源:互联网 发布:node js 内网代理 编辑:程序博客网 时间:2024/05/17 14:17

了解文件操作的过程中我们先来了解下字符编码,在做项目的过程中经常会用到几种编码格式UTF-8 GBK UTF-16BE 等 我们本地的电脑默认的是GBK编码  如我们在本地新建一个txt文档这个时候它默认的就是GBK编码  GBK编码一个中文占两个字节 一个英文占一个字节  而UTF-8一个中文占3个字节 一个英文占一个字节  所以我们在做项目的过程中尝尝与遇到乱码的问题就是在转换的过程中出现的问题,我们项目采用的是什么编码 我们读取文件的时候就得以什么样的编码去读取,不然就会出现乱码性的问题

      文件中常用的方法

   这个我们可以自己打开JDK API去看到有四中构造方法

构造方法摘要File(File parent, String child)
根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。File(String pathname)
通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。File(String parent, String child)
根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。File(URI uri)
通过将给定的 file: URI 转换为一个抽象路径名来创建一个新的File 实例。常用的方法

方法摘要booleancanExecute()
测试应用程序是否可以执行此抽象路径名表示的文件。booleancanRead()
测试应用程序是否可以读取此抽象路径名表示的文件。booleancanWrite()
测试应用程序是否可以修改此抽象路径名表示的文件。intcompareTo(File pathname)
按字母顺序比较两个抽象路径名。booleancreateNewFile()
当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。static FilecreateTempFile(String prefix,String suffix)
在默认临时文件目录中创建一个空文件,使用给定前缀和后缀生成其名称。static FilecreateTempFile(String prefix,String suffix,File directory)
在指定目录中创建一个新的空文件,使用给定的前缀和后缀字符串生成其名称。booleandelete()
删除此抽象路径名表示的文件或目录。voiddeleteOnExit()
在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。booleanequals(Object obj)
测试此抽象路径名与给定对象是否相等。booleanexists()
测试此抽象路径名表示的文件或目录是否存在。FilegetAbsoluteFile()
返回此抽象路径名的绝对路径名形式。StringgetAbsolutePath()
返回此抽象路径名的绝对路径名字符串。FilegetCanonicalFile()
返回此抽象路径名的规范形式。StringgetCanonicalPath()
返回此抽象路径名的规范路径名字符串。longgetFreeSpace()
返回此抽象路径名指定的分区中未分配的字节数。StringgetName()
返回由此抽象路径名表示的文件或目录的名称。StringgetParent()
返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 nullFilegetParentFile()
返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 nullStringgetPath()
将此抽象路径名转换为一个路径名字符串。longgetTotalSpace()
返回此抽象路径名指定的分区大小。longgetUsableSpace()
返回此抽象路径名指定的分区上可用于此虚拟机的字节数。inthashCode()
计算此抽象路径名的哈希码。booleanisAbsolute()
测试此抽象路径名是否为绝对路径名。booleanisDirectory()
测试此抽象路径名表示的文件是否是一个目录。booleanisFile()
测试此抽象路径名表示的文件是否是一个标准文件。booleanisHidden()
测试此抽象路径名指定的文件是否是一个隐藏文件。longlastModified()
返回此抽象路径名表示的文件最后一次被修改的时间。longlength()
返回由此抽象路径名表示的文件的长度。String[]list()
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。String[]list(FilenameFilter filter)
返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。File[]listFiles()
返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。File[]listFiles(FileFilter filter)
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。File[]listFiles(FilenameFilter filter)
返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。static File[]listRoots()
列出可用的文件系统根。booleanmkdir()
创建此抽象路径名指定的目录。booleanmkdirs()
创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。booleanrenameTo(File dest)
重新命名此抽象路径名表示的文件。booleansetExecutable(boolean executable)
设置此抽象路径名所有者执行权限的一个便捷方法。booleansetExecutable(boolean executable, boolean ownerOnly)
设置此抽象路径名的所有者或所有用户的执行权限。booleansetLastModified(long time)
设置此抽象路径名指定的文件或目录的最后一次修改时间。booleansetReadable(boolean readable)
设置此抽象路径名所有者读权限的一个便捷方法。booleansetReadable(boolean readable, boolean ownerOnly)
设置此抽象路径名的所有者或所有用户的读权限。booleansetReadOnly()
标记此抽象路径名指定的文件或目录,从而只能对其进行读操作。booleansetWritable(boolean writable)
设置此抽象路径名所有者写权限的一个便捷方法。booleansetWritable(boolean writable, boolean ownerOnly)
设置此抽象路径名的所有者或所有用户的写权限。StringtoString()
返回此抽象路径名的路径名字符串。URItoURI()
构造一个表示此抽象路径名的 file: URI。URLtoURL()
已过时。 此方法不会自动转义 URL 中的非法字符。建议新的代码使用以下方式将抽象路径名转换为 URL:首先通过 toURI 方法将其转换为 URI,然后通过 URI.toURL 方法将 URI 装换为 URL。现在我们就开始编写实例

public static void FileDemo1() throws IOException{
        //常用的几种构造方式  和常用的方法
        File file=new File("d:\\test\\abc.txt");
        File file1=new File("d:\\test\\","abc.txt");
        File file2=new File("d:\\test");
        File file3=new File(file2,"abc.txt");
        System.out.println("测试是否是一个文件:"+file.isFile());
        System.out.println("测试是否是一个目录:"+file.isDirectory());
        System.out.println("测试是否该文件和目录存在:"+file.exists());
        System.out.println("创建此抽象的路径名目录:"+file.mkdir());
        System.out.println("创建此抽象的路径名目录,包括所有必须但不存在的目录:"+file.mkdirs());
        System.out.println("获取文件的名称:"+file.getName());
        System.out.println("获取文件的长度:"+file.length());
        System.out.println("当文件不存在时创建该文件:"+file.createNewFile());
        System.out.println("得到该抽象路径名的路径得到的是一个String类型的字符:"+file.getAbsolutePath());
        System.out.println("得到该抽象路径名的路径,得到的是一个File类型的文件对象:"+file.getAbsoluteFile());
        System.out.println("删除此文件:"+file.delete());
        System.out.println("与系统有关的默认名称分隔符:"+File.separator);
    }
    public static void FileDemo2(){
        //该目录下的文件是否存在  存在就删除  不存在就创建
        File file=new File("D:\\data\\abc.txt");
        if(!file.exists())
            file.mkdirs();
        else
            file.delete();
    }
    public static void FileDemo3(){
        File file=new File("D:\\data");
        for(String str:file.list()){
            System.out.println(str);
        }
        System.out.println("=============================");
        for(File f:file.listFiles()){
            System.out.println(f);
        }
    }
    public static void FileDemo4(File file){
        //遍历得到该目录下包括子目录下面的所有的文件
        File[] files=file.listFiles();
        for(File f:files){
            if(f.isFile()){
                System.out.println(f);
            }else{
                FileDemo4(f);
            }
        }
    }
    public static void FileDemo5(File file){
        //遍历得到该目录包括子目录下面的所有的文件中的.java文件
        //pathname代表该目录下面的所有的目录和文件对象  return true代表返回 false 不返回
        File [] files=file.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                if(pathname.isDirectory()){
                    FileDemo5(pathname);
                }
                return pathname.getName().endsWith(".java");
            }
        });
        for(File f:files){
            System.out.println(f);
        }
    }
    public static void FileDemo6(File file){
        //dir:得到的是该抽象路径的文件对象   name该抽象路径下的所有的文件和目录
        String [] strs=file.list(new FilenameFilter() {    
            @Override
            public boolean accept(File dir, String name) {
                System.out.println(dir+"======"+name);
                return true;
            }
        });
    }
    public static void FileDemo7(File file){
        //dir:得到的是该抽象路径的文件对象,name该抽象路径下的所有的文件和目录
        file.listFiles(new FilenameFilter() {
            
            @Override
            public boolean accept(File dir, String name) {
                System.out.println(dir+"====="+name);
                return false;
            }
        });
    }