java.io.file用来对文件进行操作
一、常用方法的实现
先了解一下构造方法
构造器 | 描述 |
| 从父抽象路径名和子路径名字符串创建新的File 实例。 |
---|---|
File(String pathname) | 通过将给定的路径名字符串转换为抽象路径名来创建新的 File 实例。 |
File(String parent, String child) | 从父路径名字符串和子路径名字符串创建新的 File 实例 |
File(URI uri) | 通过将给定的 file: URI转换为抽象路径名来创建新的 File 实例 |
现在我们用对象file用第二行的构造方法创建一个对象file(路径为d盘,因为我的电脑装了360,所以c盘有权限,拒绝访问)
File file = new File("d://1.txt"); //存的路径为d盘,文件名为1.txt
创建一个文件:createNewFile
File file = new File("d://1.txt"); //存的路径为d盘,文件名为1.txt
boolean b1 = file.createNewFile(); //返回的是布尔值
System.out.println(b1?"创建成功":"创建失败");
删除一个文件:delete
(删除应小心,删除没有回收站什么的,删了就真的删了!!)
boolean b2 = file.delete();
System.out.println(b2?"删除成功":"无此文件,删除失败!");
创建一个文件夹:mkdir
File file = new File("d://2.txt");
file.mkdir(); //返回值仍然为布尔型
如果想要在一个文件夹中创建一个子文件,那么就应该用构造方法1或3。
File file = new File("d://哈哈");
file.mkdir(); //创建完后记得注释掉,不用二次创建
File file1 = new File(file,"我是哈哈文件夹里的嘻嘻"); //用构造方法3,
创建一个file1对象,父类为file
file1.createNewFile(); //用file1对象来调创建文件的方法
File file2 = new File("d://哈哈","我是哈哈文件夹中的呜呜");
//用构造方法1,创建一个file2对象,父类为file
file2.createNewFile(); //用file2对象来调创建文件的方法
删除文件:delete
file1.delete();
file2.delete();
创建多层文件:mkdirs
File file = new File("d://哈哈/嘻嘻/呜呜"); //哈哈文件夹中的嘻嘻文件夹里的呜呜文件
file.mkdirs();
还有部分不重要的方法,在下面以代码段形式展示!!
/**
* 返回此抽象路径名的规范路径名字符串。:
*/
System.out.println(file1.getAbsolutePath());
System.out.println(file1.getAbsoluteFile());
System.out.println(file1.getPath());
/**
*返回此抽象路径名表示的文件或目录的名称:getName()
*/
System.out.println(file1.getName());
/**
* 获取文件长度
*/
System.out.println(file1.length());
/**
* 判断文件是否存在 :exists(),返回布尔类型
*/
boolean b = file1.exists();
System.out.println("file1存在:"+b);
file1.delete();
boolean b2 = file1.exists();
System.out.println("file1存在:"+b2);
/**
* 判断是否是文件 isFile
*/
boolean b3 = file2.isFile();
System.out.println("file2是文件:"+b3);
方法很多,还有很多不常用的。想了解请移步jdk!
二、实现遍历文件,用文件后缀来限制输出内容
/**
* 文件遍历案例
*/
public static void main(String[] args) throws IOException {
File e = new File("E://"); //对象在e盘中
File [] files1 = e.listFiles(); //遍历出e盘中的所有文件给数组files1
listFile(files1); //将数组files1传入listFile方法
}
/**
* 文件遍历方法
* @param files
*/
public static void listFile(File[]files) {
if(files != null && files.length !=0){ //判断数组是否为空
for (File data:files) { //遍历数组,数组里的元素叫data
if(data.isFile()){ //判断data是否为文件
//文件
if(data.getName().endsWith(".png")){ //判断该文件的最后是不是.png
System.out.println("这是一张图片,放在"+data.getAbsolutePath());
}
}
else{
//文件夹
File[] data2 = data.listFiles();
//遍历出data文件夹中的// 所有元素存入数组data2
listFile(data2); //递归调用遍历data2
}
}
}
}
}
实现遍历文件,用文件大小来限制输出内容
只需把“//文件”下面的if语句内容换成:
if(data.length()>100*1024*1024){ //100为b,然后kb,然后m。所以此为大于100m
System.out.println("这是一张图片,放在"+data.getAbsolutePath());
}
即可!
三、相对路径和绝对路径
绝对路径:从盘符开始,是一个完整的路径。eg:c://a.txt
相对路径:在Java代码中,是相对于项目目录路径,这是一个便捷路径,在java开发中很常用。eg:a.txt(比如在idea的此代码的路径为C:\Users\YUYU\IdeaProjects\IO。所以在代码段中实现的,如下图)
{
File file = new File("c://a.txt"); //绝对路径
File file1 = new File("a.txt1"); //相对路径
System.out.println("file的路径:"+file.getAbsolutePath());
System.out.println("file1的路径:"+file1.getAbsolutePath());
}
运行结果: