创建
package liu;
import java.io.*;
public class FIle_Domo {
public static void main(String[] args) throws IOException {
File f = new File("c:\\javasss\\Domo\\abcd\\a.txt");//扩展名一定不能省略
// File f = new File("c:"+File.separator+"javasss"+File.separator+"Domo"+File.separator+"a.txt");//该输出语句与上面的输出语句功能相同即将\\用File.separator代替分割
//文件对象就是封装一个路径,但不管你有没有这个目录。 文件对象不判断是否有文件或目录
System.out.println(f.getParent());//父目录(除最后一项之前的目录)----返回的是String类型
System.out.println(f.getParentFile());//父目录-------返回的是File类的对象
if(!f.getParentFile().exists()) {
// f.getParentFile().mkdir();//创建一个文件夹的方法,而且该方法只创建一层目录
f.getParentFile().mkdirs();//能够创建多层目录
}
if(f.exists())//如果电脑中该目录下有该文件或目录,则删除,否则,创建新的文件或目录
f.delete();
else
f.createNewFile();
System.out.println(f.isFile());//判断是不是一个文件
System.out.println(f.isDirectory());//判断是不是一个目录
}
}
再次运行:
根据上面的代码,先不运行,根据自己电脑的文件夹与目录可自行调试
首先在上面的路径下并不存在\Domo\abcd\a.txt该路径
然后运行上面已经写好的代码
在上面的图片中可以看出,当运行完一次代码之后系统会帮你自动进行了创建,而且会把Domo后面的路径都自行创建,如下图:
上面目录的创建是由那几行代码来进行的呢?
上面的代码运行结果第三行的结果会随着运行的次数发生变化,一直会以true、false而发生变化,此处变化的因素是什么,这个地方是判断是不是一个文件,而代码每运行一次就会修改一次路径
上面这个代码就是如果有a.txt那么就将其删除,如果没有就增加,成其为一个文件
当上面的文件夹中没有a.txt的时候,运行一下Java程序,那么a.txt就会被创建
再次运行,a.txt就会被删除
===============================================
分割线
===============================================
遍历
学会了创建,那么应该怎么遍历出路径或者某一个路径下的内容或特有的内容?下面我们开始进入学习。
list() 返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件---String[]
listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。-----File[]
package liu;
import java.io.*;
public class File_BianLi {
public static void main(String[] args) {
File f = new File ("c:\\javasss");
String []str = f.list();
for(String e : str)
System.out.println(e);
System.out.println("========================================");
File []file = f.listFiles();
for(File e : file)
System.out.println(e);
System.out.println("========================================");
//只想显示某一种类型的文件
File []files = f.listFiles(new MyFilter());
for(File e : files)
System.out.println(e);
System.out.println("========================================");
File []filess = f.listFiles((dis,name)->name.endsWith(".txt")==true);
for(File e : filess)
System.out.println(e);
}
}
class MyFilter implements FilenameFilter{
@Override
public boolean accept(File dir, String name) {
// TODO 自动生成的方法存根
if(name.endsWith(".txt"))
return true;
else
return false;
}
}
***
文件过滤器
这一行代码的意思是遍历javasss文件夹下的所有文件
上面的代码列出了多种求路径遍历的方法
有只求该路径下所有文件的文件名的
有求整条目录的
有用Lambda表达式求的
有用自己的编译器求的
可以针对自己本人的需要去使用不同的遍历方法
File类的小小练习
lastModified() 返回此抽象路径名表示的文件最后一次被修改的时间-----long
package liu;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;
public class File_Text {
public static void main(String[] args) throws IOException {
File f = new File ("c:\\javasss\\Domo\\abcd\\a.txt");
File f2 = new File ("b.txt");
f.createNewFile();
System.out.println(f.length());//返回类型是long类型,长度是以字节为单位的(Java中一个字母就是一个字节)
//就是看a.txt中文字的内容有多少字节(空格也算是一个字节)
System.out.println(f.getName());
Date d = new Date(f.lastModified());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//月份使用MM,分钟使用mm
System.out.println(sdf.format(d));
System.out.println(f.getAbsolutePath());//真实的绝对路径
System.out.println(f.getPath());//相对路径,把上面写的路径以字符串的形式返回
System.out.println("========================================================");
System.out.println(f2.getAbsolutePath());//真实的绝对路径
System.out.println(f2.getPath());//相对路径,把上面写的路径以字符串的形式返回
//绝对路径:windows从盘符开始的
//相对路径:从当前路径开始
}
}
该方法是计算该目录下a.txt记事本中内容的字节数
我们输出来的结果是9
是因为:
File类的常见方法总结:
关于创建的问题:
boolean createNewFile(); //创建文件
boolean mkdir();创建文件夹
boolean mkdirs();创建多级文件夹。
关于删除的问题:
boolean delete();
void deleteOnExit();在程序退出时删除文件
关于判断的问题:
boolean canExcute(); 判断是否可执行
boolean exists(); 文件事是否存在。
isFile();是否是一个文件
isDirectory();是否是一个文件夹
isHidden();//java能得到文件中的隐藏文件但是对隐藏文件时不能访问的
isAbsolute();//绝对路径即时不存在也能得到。
关于信息的获取:
getName();//获取文件名
getPath();//获取相对路径
getParent();//获取父路径
file.getAbsolutePath():得到文件/文件夹的绝对路径
关于文件的创建:
File file = new File("c:\\...");//文件/文件夹路径对象
File file = new File("..." ,""...);//父目录绝对路径 + 子目录名称
File file = new File("...","...");//父目录File对象 + 子目录名称
注意:
file.String():同样是得到文件/文件夹的绝对路径等于file.getAbsolutePath()
file.getParent():得到父目录的绝对路径String 不可以调用可以调用mkdir()方法
file.getParentFile():得到父目录的绝对路径的返回值是File型可以调用mkdir()方法