Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。
File类提供了专门创建File对象的构造方法:
File(String pathname) //通过指定的一个字符串类型的文件路径创建一个新的File对象
File(String parent,String child)//根据指定的一个字符串类型的父路径和一个字符串类型的子路径(包含文件名称)创建一个File对象。
File(File parent,String child)//根据指定的File类的父路径和字符串类型的子路径(包括文件名称)创建一个File对象
1. 常用方法:
exists() //判断文件或目录是否存在
delete() //删除文件,删除成功返回true,删除失败返回false
getParentFile() //返回对象的父路径,返回的是File对象
createNewFile() //创建文件,不存在则创建文件,创建成功返回true(需要有对应的文件夹,没有文件夹会报异常),存在则返回false
getName() //返回file对象表示的文件或文件夹名称。
getPath() //返回对象对应的路径
getAbsoluteFile() //返回对象的绝对路径
canRead() //判断文件或目录是否可读
canWrite() //判断是否可写
isFile() //判断是否是文件
isDirectory() //判断是否是文件夹
isAbsolute() //判断是否是绝对路径
lastModified() //返回修改时间戳,1970年1月1日0时0分0秒到最后被修改的毫秒值。
length() //返回文件长度
list() //列出指定目录全部内容
listFiles() //返回一个包含了File对象所有子文件和子目录的File数组。
String path = "F:\java_IO\";
String file = path + "a.txt";
String path1 = "src\a.txt";
//绝对路径构建File对象
File file1 = new File(file);
//File file1 = new File("D:/java_IO/a.txt");
//相对路径创建
File file2 = new File(path1);
//判断文件或目录是否存在
System.out.println("file1目录判断:" + file1.exists());
//删除文件,删除成功返回true,删除失败返回false
System.out.println("删除file1:" + file1.delete());
//返回对象的父路径,返回的是File对象
File f1 = file1.getParentFile();
System.out.println("file1父路径:" + f1);//
System.out.println("file2父路径:" + file2.getParentFile());
if (!f1.exists()){//如果该文件夹不存在
f1.mkdir();//创建目录
}
//创建文件,不存在则创建文件,创建成功返回true(需要有对应的文件夹,没有文件夹会报异常),存在则返回false
System.out.println("创建file1:" + file1.createNewFile());
System.out.println("创建file2:" + file2.createNewFile());
//返回file对象表示的文件或文件夹名称。
System.out.println("文件名称:" + file1.getName());
//返回对象对应的路径
System.out.println("file1路径:" + file1.getPath());
System.out.println("file2路径:" + file2.getPath());
//返回对象的绝对路径
System.out.println("file1绝对路径:" + file1.getAbsoluteFile());
System.out.println("file2绝对路径:" + file2.getAbsoluteFile());
//判断文件或目录是否可读
System.out.println("可读:" + f1.canRead());
//判断是否可写
System.out.println("可写:" + f1.canWrite());
//判断是否是文件
System.out.println("文件:"+f1.isFile());
System.out.println("文件:"+file1.isFile());
//判断是否是文件夹
System.out.println("文件夹:" + f1.isDirectory());
System.out.println("文件夹:" + file1.isDirectory());
//判断是否是绝对路径
System.out.println("绝对路径:" + file1.isAbsolute());
System.out.println("绝对路径:" + file2.isAbsolute());
//返回修改时间戳,1970年1月1日0时0分0秒到最后被修改的毫秒值。
System.out.println(file1.lastModified());
//返回文件长度
System.out.println(file1.length());
File[] l1 = file3.listFiles();//返回一个包含了File对象所有子文件和子目录的File数组。
for (File f : l1) {
System.out.println(f);
}
2. 创建临时文件
在某些情况下,程序需要读写一些临时文件,File对象提供了静态方法createTempFile()用于创建临时文件,及deleteOnExit()在Jvm退出时删除该文件。
使用案例:
//创建临时文件,参数1:临时文件前缀,参数2:临时文件后缀。
File f = File.createTempFile("tmp1-",".txt");
f.deleteOnExit();//JVM推出时删除文件
Thread t1 = new Thread();
t1.sleep(5000);//线程睡眠,方便查看效果
System.out.println(f.isFile());
System.out.println(f.getPath());
3. 遍历目录文件
①常规调用
String path = "F:\java_IO\";
File file = new File(path);
if (file.exists()){ //file必须时文件夹才允许调用,否则会出现异常
String[] s1 = file.list();//列出指定目录全部内容
for (String s : s1) {
System.out.println(s);
}
}
②过滤器使用
String path = "F:\java_IO\";
File file = new File(path);
//FilenameFilter匿名内部类对象
FilenameFilter filter = new FilenameFilter(){
@Override
public boolean accept(File dir, String name) {
//过滤以java结尾文件
//if (name.endsWith(".java")){
// return true;
//}
File currFile = new File(dir, name);
if (currFile.isFile() && name.endsWith(".java")){
return true;
}else {
return false;
}
}
};
if (file.exists()){ //file必须时文件夹才允许调用,否则会出现异常
String[] lists = file.list(filter);
System.out.println("lists:" + lists);
for (String list : lists) {
System.out.println(list);
}
}
③获取某目录下所有的文件(使用递归遍历)。
public static void main(String[] args) {
//获取某目录下所有的文件绝对路径
File file = new File("F:\java_IO\");
fileDir(file);
}
//获取某目录下所有文件的绝对路径
public static void fileDir(File dir){
File[] fs = dir.listFiles();
for (File f : fs) {
if (f.isDirectory()){//如果时文件夹
fileDir(f);
}
System.out.println(f.getAbsoluteFile());//输出文件绝对路径
}
}
4. 删除文件。
删除文件:
File file = new File("F:\java_IO\a.txt");
System.out.println(file.delete());//删除时不会放到回收站,直接删除
//文件夹下没有文件可删除成功,有文件会删除失败,可以通过递归的方式进行删除
File file1 = new File("F:\java_IO\test");
System.out.println(file1.delete());
删除文件夹下所有文件:
//删除文件夹
public static void main(String[] args) {
File file = new File("F:\java_IO\test");
deleteDir(file);
}
//递归删除方法
public static void deleteDir(File dir){
if (dir.exists()){
File[] files = dir.listFiles();
for (File file : files) {
if (file.isDirectory()){
deleteDir(file);
}
file.delete();//如果是文件则删除。
}
//删除完文件后删除文件夹
dir.delete();
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)