Java中的File类

1.File类的静态成员变量:java

1.static String pathSeparator 与系统有关的路径分隔符,为了方便,它被表示为一个字符串。
2.static char pathSeparatorChar 与系统有关的路径分隔符。
3.static String separator 与系统有关的默认名称分隔符,为了方便,它被表示为一个字符串。
4.static char separatorChar 与系统有关的默认名称分隔符。linux

复制代码
import java.io.File;数组

public class FileDemo {
public static void main(String[] args) {ide

String s1 = File.pathSeparator;
    System.out.println(s1);//打印结果为  ;  在linux中是:

    String s2 = File.separator;
    System.out.println(s2);//打印结果为  \   若是是Linux系统则为 /
}

}
复制代码
2.File类的构造方法:测试

在同一个案例中演示这三个构造方法:code

复制代码
import java.io.File;对象

public class FileDemo {
public static void main(String[] args) {继承

String pathName = "e:\\java_code\\day22e\\hello.java";
    File f1 = new File(pathName);//将Test22文件封装成File对象。注意;有能够封装不存在文件或者文件夹,变成对象。
    System.out.println(f1);

    File f2 = new File("e:\\java_code\\day22e","hello.java");
    System.out.println(f2);

    //将parent封装成file对象。
    File dir = new File("e:\\java_code\\day22e");
    File f3 = new File(dir,"hello.java");
    System.out.println(f3);

}

} //输出的都是e:\java_code\day22e\hello.java
复制代码
3.java API中介绍的方法:(经常使用的标上了颜色)接口

boolean canExecute()测试应用程序是否能够执行此抽象路径名表示的文件。
boolean canRead()测试应用程序是否能够读取此抽象路径名表示的文件。
boolean canWrite()测试应用程序是否能够修改此抽象路径名表示的文件。
int compareTo(File pathname)按字母顺序比较两个抽象路径名。
boolean createNewFile()当且仅当不存在具备此抽象路径名指定名称的文件时,不可分地建立一个新的空文件。
static File createTempFile(String prefix, String suffix)在默认临时文件目录中建立一个空文件,使用给定前缀和后缀生成其名称。
static File createTempFile(String prefix, String suffix, File directory)在指定目录中建立一个新的空文件,使用给定的前缀和后缀字符串生成其名称。
boolean delete()删除此抽象路径名表示的文件或目录。//注意:这个删除,不走回收站,直接删除,因此要当心使用。
void deleteOnExit()在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。
boolean equals(Object obj)测试此抽象路径名与给定对象是否相等。
boolean exists()测试此抽象路径名表示的文件或目录是否存在。
File getAbsoluteFile()返回此抽象路径名的绝对路径名形式。
String getAbsolutePath()返回此抽象路径名的绝对路径名字符串。
File getCanonicalFile()返回此抽象路径名的规范形式。
String getCanonicalPath()返回此抽象路径名的规范路径名字符串。
long getFreeSpace()返回此抽象路径名指定的分区中未分配的字节数。
String getName()返回由此抽象路径名表示的文件或目录的名称。
String getParent()返回此抽象路径名父目录的路径名字符串;若是此路径名没有指定父目录,则返回 null。
File getParentFile()返回此抽象路径名父目录的抽象路径名;若是此路径名没有指定父目录,则返回 null。
String getPath()将此抽象路径名转换为一个路径名字符串。
long getTotalSpace()返回此抽象路径名指定的分区大小。
long getUsableSpace()返回此抽象路径名指定的分区上可用于此虚拟机的字节数。
int hashCode()计算此抽象路径名的哈希码。
boolean isAbsolute()测试此抽象路径名是否为绝对路径名。
boolean isDirectory()测试此抽象路径名表示的文件是不是一个目录。
boolean isFile()测试此抽象路径名表示的文件是不是一个标准文件。
boolean isHidden()测试此抽象路径名指定的文件是不是一个隐藏文件。
long lastModified()返回此抽象路径名表示的文件最后一次被修改的时间。
long length()返回由此抽象路径名表示的文件的长度。字节数
String[] list()返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。//遍历目录返回的只有名字
String[] list(FilenameFilter filter)返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中知足指定过滤器的文件和目录。
File[] listFiles()返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。//返回路径全名 推荐
File[] listFiles(FileFilter filter)返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中知足指定过滤器的文件和目录。
File[] listFiles(FilenameFilter filter)返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中知足指定过滤器的文件和目录。
static File[] listRoots()列出可用的文件系统根。
boolean mkdir()建立此抽象路径名指定的目录。调用该方法时,File对象必须对应一个路径,而不是文件//只能建立一个目录
boolean mkdirs()建立此抽象路径名指定的目录,包括全部必需但不存在的父目录。//便可建立一个目录,也可建立多及目录,推荐
boolean renameTo(File dest)从新命名此抽象路径名表示的文件。
boolean setExecutable(boolean executable)设置此抽象路径名全部者执行权限的一个便捷方法。
boolean setExecutable(boolean executable, boolean ownerOnly)设置此抽象路径名的全部者或全部用户的执行权限。
boolean setLastModified(long time)设置此抽象路径名指定的文件或目录的最后一次修改时间。
boolean setReadable(boolean readable)设置此抽象路径名全部者读权限的一个便捷方法。
boolean setReadable(boolean readable, boolean ownerOnly)设置此抽象路径名的全部者或全部用户的读权限。
boolean setReadOnly()标记此抽象路径名指定的文件或目录,从而只能对其进行读操做。
boolean setWritable(boolean writable)设置此抽象路径名全部者写权限的一个便捷方法。
boolean setWritable(boolean writable, boolean ownerOnly)设置此抽象路径名的全部者或全部用户的写权限。
String toString()返回此抽象路径名的路径名字符串。
URI toURI()构造一个表示此抽象路径名的 file: URI。
URL toURL()已过期。 此方法不会自动转义 URL 中的非法字符。建议新的代码使用如下方式将抽象路径名转换为 URL:首先经过 toURI 方法将其转换为 URI,而后经过 URI.toURL 方法将 URI 装换为 URL。  
下面介绍几个经常使用的方法:字符串

复制代码
import java.io.File;

public class FileDemo {
public static void main(String[] args) {

//建立文件对象
            File file = new File("Test22.java");//建立文件对象,将其封装成file类对象,就能够调用file类的方法了

            String absPath1 = file.getAbsolutePath();//获取文件的绝对路径,即全路径 返回的是String对象
            File absPath2 = file.getAbsoluteFile();//获取文件的绝对路径,即全路径 返回的是File对象

            String path = file.getPath();//File中封装的路径是什么获取到的就是什么。

            String filename = file.getName();//获取文件名称

            long size = file.length();//获取文件大小

            System.out.println("absPath1="+absPath1);
            System.out.println("absPath2="+absPath2);
            System.out.println("path="+path);
            System.out.println("filename="+filename);
            System.out.println("size="+size);
}

}
复制代码
复制代码
import java.io.File;
import java.io.IOException;

public class FileDemo {
public static void main(String[] args) throws IOException {

File file = new File("d:\\file.java");
    boolean b = file.createNewFile();
    System.out.println(b);//输出为true,说明个人D盘下没有file.java文件 ,他已经自动帮我建立了一个以下图

}

}
复制代码

listFiles()方法介绍

复制代码
public class FileMethodDemo3 {
public static void main(String[] args) {
File dir = new File("e:\java_code");
//获取的是目录下的当前的文件以及文件夹的名称。
String[] names = dir.list();
for(String name : names){
System.out.println(name);
}
//获取目录下当前文件以及文件对象,只要拿到了文件对象,那么就能够获取其中想要的信息
File[] files = dir.listFiles();
for(File file : files){
System.out.println(file);
}
}
}
复制代码
注意:在获取指定目录下的文件或者文件夹时必须知足下面两个条件

1,指定的目录必须是存在的,

2,指定的必须是目录。不然容易引起返回数组为null,出现NullPointerException

4.文件过滤器

l 测试类

复制代码
public class FileDemo2 {
public static void main(String[] args) {
//获取扩展名为.java全部文件
//建立File对象
File file = new File("E:\code\day11_code");
//获取指定扩展名的文件,因为要对全部文件进行扩展名筛选,所以调用方法须要传递过滤器
File[] files = file.listFiles(new MyFileFilter());
//遍历获取到的全部符合条件的文件
for (File f : files) {
System.out.println(f);
}
}
}
复制代码
l 自定类继承FilenameFilter过滤器接口

//定义类实现文件名称FilenameFilter过滤器
class MyFileFilter implements FilenameFilter{
public boolean accept(File dir, String name) {
return name.endsWith(".java");
}
}
在查阅API时,咱们发现,在listFiles(FileFilter filter) 也能够接受一个FileFilter过滤器,它和咱们讲的FilenameFilter有啥区别呢?

FilenameFilter过滤器中的accept方法接受两个参数,一个当前文件或文件夹所在的路径,一个是当前文件或文件夹对象的名称。

FileFilter 过滤器中的accept方法接受一个参数,这个参数就当前文件或文件夹对象

当咱们须要过滤文件名称时就可使用FilenameFilter这个过滤器,当咱们想对当前文件或文件夹进行过滤,就可使用FileFilter ,好比须要当前目录下的全部文件夹,就可使用FileFilter 过滤器。

l 测试类

复制代码
public class FileDemo2 {
public static void main(String[] args) {
//获取扩展名为.java全部文件
//建立File对象
File file = new File("E:\code\day11_code");
//获取指定目录下的文件夹
File[] files = file.listFiles(new FileFileterByDir());
//遍历获取到的全部符合条件的文件
for (File f : files) {
System.out.println(f);
}
}
}
复制代码
复制代码
//自定义类继承FileFilter过滤器接口

//文件过滤器class FileFileterByDir implements FileFilter{public boolean accept(File pathname) {return pathname.isDirectory();}}

相关文章
相关标签/搜索