一、File几种常见用法:
File path=new File("D:\\睿思");
String[] list=path.list();
System.out.println(Arrays.toString(list));
// TODO Auto-generated method stub
File file1=new File("D:\\eclipse project\\ThinkingInJava\\java IO文件夹及文件创建\\me\\file1.txt");
//创建文件需要加异常处理
try {
file1.createNewFile();
} catch (IOException e) {
System.out.println("文件路径不存在");
}
File file2=new File("D:\\eclipse project\\ThinkingInJava\\java IO文件夹及文件创建\\file2");
boolean b=file1.mkdir();
System.out.println(b);
file1.mkdirs();//可以创建多层文件夹,都是返回boolean类型
file2.mkdir();//只能创建最后一层文件夹,若前面的不存在,则无法创建成功
总结几种方法:
常用方法,创建文件或者文件夹,如果没有写盘符路径,默认在项目路径里面创建
public boolean createNewFile() throws IOException,当File对象不存在时,创建一个File对象(File对象的路径下)的文件,返回true,当File对象对应的文件存在时,不创建,返回false
public boolean mkdir() 创建File对象的抽象路径名指定的目录文件夹,只创建路径最后的那个文件夹,比如"I:\\hello\world"。如果hello文件夹不存再,则不会创建world文件夹,hello文件夹存在,world才能创建.
public boolean mkdirs()创建此抽象路径名指定的目录,包括创建必需但不存在的父目录。这两个方法只能创建目录,不管File对象的路径名以什么结尾,比如"I:\\hello\\world.doc",会创建多层文件夹,最后一层文件夹的名字是world.doc,注意不是word文档
重命名或者删除文件/文件夹
public boolean renameTo(File dest)对文见的抽象路径名进行重命名,参数是File对象,而不是字符串,如果两个File对象的路径不相同,则会将被修改的文件进行剪切,然后再重命名放到新的路径里面
public boolean delete()删除File对象对应的文件或者文件夹,删除时不会放入回收站,当File对象是文件夹时,要确保被删除的文件夹里面没有其他文件才可以进行删除成功
判断方法:
public boolean isDirectory():判断File对象是否是目录
public boolean isFile():判断File对象是否是文件
public boolean exists():判断File对象是否存在
public boolean isHidden():判断File对象是否被隐藏
其他常用方法
public String getName()返回文件或目录的名称,如果创建File对象时传入的路径有多级路径,只显示最后一层
public String getPath()获取File对象的路径名组成的字符串,即创建对象时传入的路径(绝对路径或者相对路径)
public String getAbsolutePath():获取File对象的绝对路径
public long length():获取File对象对应文件的大小。返回字节数
public long lastModified():获取最后一次的修改时间,毫秒值,可格式化成时间
public String[] list():获取文件路径(同一层级目录)下所有文件名)
public String[] list(FilenameFilter filter)获取文件路径(同一层级目录)下的通过满足指定过滤器的文件名/文件夹名组成的字符串数组
public File[] listFiles():获取文件路径下同级文件的File对象数组
public File[] listFiles(FileFilter filter)获取文件路径下同级文件的满足特定过滤器的File对象数组
获取当前目录
//得到当前目录方法一
String curDir=System.getProperty("user.dir");
System.out.println(curDir);
//得到当前目录方法二,记得dir.getCanonicalPath()要添加异常处理
File dir=new File(".");
System.out.println(dir.getAbsolutePath());
try {
System.out.println(dir.getCanonicalPath());
} catch (IOException e) {
System.out.println("未找到相对路径");
}
File directory = new File("");//设定为当前文件夹
System.out.println(directory.getAbsolutePath());
try {
System.out.println(directory.getCanonicalPath());
} catch (IOException e) {
System.out.println("未找到相对路径");
}
结果:
D:\eclipse project\ThinkingInJava\.
D:\eclipse project\ThinkingInJava
D:\eclipse project\ThinkingInJava
D:\eclipse project\ThinkingInJava
二、FilenameFlilter和FileFilter,两个用法如下
public String[] list(FilenameFilter filter)
public File[] listFiles(FileFilter filter)
过滤当前文件夹,找到.java文件类型的文件。使用匿名内部类,代码如下
File path1=new File("D:\\eclipse project\\ThinkingInJava\\src");
String[] list1=path1.list(new FilenameFilter() {
public boolean accept(File dir,String name) {
File file=new File(dir,name);
if(file.isFile()&&file.getName().endsWith(".java"))
return true;
return false;
}
});
Arrays.sort(list,String.CASE_INSENSITIVE_ORDER);
for(String dirItem:list1)
System.out.println(dirItem);