我的电脑——Java中的File类详解


创建


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()方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱睡觉的小馨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值