javaseday22补充(file file的常见方法 遍历文件夹 后缀过滤器 )

来源:互联网 发布:mysql分32位和64位吗 编辑:程序博客网 时间:2024/05/15 15:11

File类

用来将文件或者文件夹封装成对象

方便对文件与文件夹的属性信息进行操作

File 对象可以作为参数传递给流的构造函数

了解File类中的常用方法 把文件变成对象 便于操作而且可以用方法

//可以将一个已存在的或者不存在的文件或者目录封装成File对象
File f1 = new File("D:\\java work\\com.IODay02\\u8-1.txt");//无法在UNIX中使用 UNIX只认/


File f2 = new File("c:\\","a.txt");


File f = new File("c:\\");


File f3 = new File(f,"a.txt");//需要哪种就封装哪种
File f4 = new File("c:"+File.separator+"abc"+File.separator+"a.txt");//不同的系统平台都能用
//File.pathSeparator  windows就是; 环境变量中的分隔符

public static void main(String[] args) throws IOException {
/*
* File对象的常见方法
* 1、获取
* 获取文件名称
* 获取文件路径
* 获取文件大小
* 获取文件修改时间
*
* 2、创建与删除
* boolean
* 3、判断
* 4、重命名
*
*/
// getDemo();
// createAndDeleteDemo();
// isDemo();
// renameDemo();
listRootsDemo();
}
private static void listRootsDemo() {
File file = new File("d:\\");
System.out.println("getFreeSpace:"+file.getFreeSpace());//
System.out.println("getTotalSpace:"+file.getTotalSpace());
System.out.println("getUsableSpace:"+file.getUsableSpace());


// File[] files = File.listRoots();//获取磁盘根目录
// for(File file :files){
// System.out.println(file);
// }
}
private static void renameDemo() {
File f1 = new File("b.txt");


File f2 = new File("d:\\cc.txt");//还能剪切对象
f1.renameTo(f2);
}
private static void isDemo() throws IOException {
// File f= new File("a.txt");
// f.mkdir();//可以以带扩展名作为 文件夹
File f = new File("aa");
f.createNewFile(); //可以不带扩展名的文件
// boolean b = f.exists();
// System.out.println("b="+b);
//最好先判断是否
System.out.println(f.isDirectory());
System.out.println(f.isFile());//如果不存在就啥都不是
}
private static void createAndDeleteDemo() throws IOException {
File dir = new File("abb\\q\\q\\e\\e");//多级目录
/*
* 和输出流不一样 如果文件不存在 则创建 如果文件存在则不创建
* 输出流不管存不存在直接覆盖
*/
// dir 对象是最里面的那个
// boolean b = file.createNewFile();
// boolean b = file.delete();
boolean b = dir.mkdir();//创个文件夹
System.out.println(dir.delete());//有内容就不能删除 windows的删除机制 先删完里面  而且要慎用 不走回收站
System.out.println("b="+b);
// file.deleteOnExit();//在退出的时候帮你删除
}


public static void getDemo(){
File file = new File("a.txt");//一种相对路径在哪就那
String name = file.getName();
//绝对路径 无论如何操作都是一样的 D:\java work\com.IODay02\a.txt
String path = file.getAbsolutePath();//获取绝对路径(完整路径)
String path1 = file.getPath();//相对路径 相对于别人而言
long len = file.length();
long time = file.lastModified();//这个很强 程序正在运行 然后读取其他文件的数据  可是我已经改写了 然后通过检测最后修改时间 重新读取文件
Date date = new Date(time);//专门开一条线程检测时间 如果发现时间不同就启动流 修改文件 重新载入
DateFormat dateformat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
String str_time = dateformat.format(date);
System.out.println("parent:"+file.getParent());//如果是绝对路径还能获得盘符 相对路径直接空
System.out.println("name:"+name);
System.out.println("path:"+path);
System.out.println("path1:"+path1);
System.out.println("len:"+len);
System.out.println("time:"+time);
System.out.println("str_time:"+str_time);
}

public class FileDemo02 {
public static void main(String[] args) {
listDemo();
// listDemo1();
}


private static void listDemo1() {
File dir = new File("c:\\");
File[] files = dir.listFiles(new myFilterByHidden());
for(File a :files){//显示路径和文件
System.out.println(a);
}
}


private static void listDemo() {
File file = new File("c:\\");//数组根本就没有创建成功无法遍历
/*
* 有些文件加了权限限制 java无法访问
* 获取当前目录狭隘的文件以及文件夹的名称 包含隐藏文件
* 调用list方法的File对象 封装的必须是目录
* 否则会发生 空指针异常NoPointerException
* 如果访问的是系统级目录也会发生异常 不让你访问
* 如果目录存在但是没有内容 会返回一个数组但是长度为0
*/


String[] list = file.list(new SuffixFilter(".txt"));
for(String a:list){//过滤器先通过list 拿到所有文件  然后通过条件进行过滤
System.out.println(a);
}
}
}
class myFilter implements FilenameFilter{


@Override
public boolean accept(File dir, String name) {


return name.endsWith(".txt");
}


}
class myFilterByHidden implements FileFilter{


@Override
public boolean accept(File pathname) {


return !pathname.isHidden();
}


}

public class SuffixFilter implements FilenameFilter{
private String suffix;


public SuffixFilter(String suffix) {
super();
this.suffix = suffix;
}


@Override
public boolean accept(File dir, String name) {


return name.endsWith(suffix);
}


}




原创粉丝点击