Java--IO流:File

File类

I:iuput(输入流)
O:output(输入流)

此文写的类都在io包下

File类的使用
1,File类的一个对象,代表一个文件或一个文件目录(文件夹)
2,File类声明在java.io包下
3,常用构造器

了解一些知识

相对路径:相较于某个路径下指明的路径
绝对路径:包含盘符在内的文件或文件目录的路径(完整的写完)

路径分隔符和系统有关
–》windows和DOS系统默认使用“\”来表示(java用两个“\”是因为,java一个“\”有转义的意思)
–》UNIX和URL使用“/”来表示
(java中用“/”也是可以的)

Java支持跨平台运行,因此分隔符要慎用
为了解决这种隐患,File类提供了一个常量去识别操作系统,动态的提供分隔符

public static final String separator

比如:

File file=new File("D:\\abc\\hello.text");
File file=new File("D:"+File.separatorabc+"abc"+File.separatorabc+"hello.text");

File常用的构造器

public File(String pathname);
public File(String parent,String child);
public File(File parent,String child);
static class FileTest{
        public void test1(){
            /**
             * 构造器1
             */
            File file=new File("hello.text");//相对路径
            File file1=new File("C:\\Users\\87627\\Desktop\\java project\\IOText\\Hello.text");//绝对路径

            System.out.println(file);

            /**
             * 构造器2
             */
            File file2=new File("C:\\Users\\87627\\Desktop\\java project","IOText");
            //指定child这个文件目录(当然也可以是文件)
            
            /**
             * 构造器3
             */
            File file3=new File(file2,"Hello.text");
            //指定child这个文件
        }
    }

运行上面代码,会输出文件路径,即使对应的文件夹里没有对应文件,也不会报异常,它还不需要对应硬盘中的文件,此时仅仅只是内存层面中的对象,因为还没有涉及到对文件中数据的操作。


File的使用:常用方法

File类的获取功能
      public String getAbsolutePath() 获取绝对路径
      public String getPath() 获取路径
      public String getName() 获取名称
      public String getParent() 获取上层文件目录路径,若无,返回null
      public loog Length() 获取长度(即字节数),不能获得目录长度
      public loog lastModifind() 获取最后一次修改的时间,毫秒值

(下面相应的文件并没有创建)

 public void method(){
        File f1=new File("hello.txt");
        File f2=new File("D:\\io\\hi.txt");

        System.out.println(f1.getAbsolutePath());
        System.out.println(f1.getPath());
        System.out.println(f1.getName());
        System.out.println(f1.getParent());
        System.out.println(f1.length());
        System.out.println(f1.lastModified());

        System.out.println();

        System.out.println(f2.getAbsolutePath());
        System.out.println(f2.getPath());
        System.out.println(f2.getName());
        System.out.println(f2.getParent());
        System.out.println(f2.length());
        System.out.println(f1.lastModified());
    }

在这里插入图片描述
(运行后打印结果如上图所示,这时候都是内存层面上得,并不涉及硬件上的。)
首先有几个点要注意下,首先,按理来说,f1得上级文件应该是“C:\Users\87627\Desktop\java project\”。但却输入null; 还有就是,因为我们的文件并不存在,所以长度及最后一次操作时间都是“0”。

之后去创建对应得文件(里面内容随便输入):

在这里插入图片描述
可以看到,用相对路径得上级文件目录依旧为null
最后操作时间为毫秒值,如果我们要看到具体时间可以修改为:

System.out.println(new Date(f1.lastModified()));

之后,在介绍两个方法:

如下两个方法设用于文件目录

public String[] list() //获取指定目录下所有文件或者文件目录得名称数组
public Filep[] listFiles() //获取指定目录下所有文件或文件目录得File数组
     File file1=new File("D:\\");
        String[] list=file1.list();
        for(String s:list){
            System.out.println(s);
        }

for(String s:list) 的意思是:

for(int i=0;i< lists.size();i++)
{
   String s=list.get(i);
}

(遍历数组,依次赋值给s)

第二个方法也是同样的方式

File[] files=file1.listFiles();
        for(File f:files){
            System.out.println(f);
        }

不同的点在于:第二个方法打印的是绝对路径,包含后缀也会打印出来。


File类的重命名

常用方法:

public boolean renameTo(File dest); 把文件重命名为指定的文件路径

这个方法意思是:将一个文件改名后,放到别的路径下,之后返回一个布尔值,如果是true表示成功,false表示失败。

public void method(){
        File file1=new File("hello.txt");
        File file2=new File("D:\\io\\hi.txt");

        boolean t=file1.renameTo(file2);
        System.out.println(t);
    }

如果要返回true的话,要关注几个问题:
1,要被重命名的文件在硬盘中 必须要存在
2,转移后的目录下,不能出现重命名一样的文件

以上任意一条未达成都会返回false。


File类的判断功能
 public boolean isDirectory() 判断是否是文件目录
 public boolean isFile() 判断是否是文件
 public boolean exists() 判断是否存在
 public boolean canRead() 判断是否可读
 public boolean canWrite() 判断是否可写
 public boolean isHidden() 判断是否隐藏

以一个存在的文件为例:

    public void method(){
        File file=new File("D:\\io\\hi.txt");
        System.out.println(file.isDirectory());
        System.out.println(file.isFile());
        System.out.println(file.exists());
        System.out.println(file.canRead());
        System.out.println(file.canWrite());
        System.out.println(file.isHidden());

        file.isDirectory();
        file.isFile();
        file.exists();
        file.canRead();
        file.canWrite();
        file.isHidden();
    }

在这里插入图片描述


File的创建及删除功能
 public boolean creatNewFile() 创建文件,若文件存在,则不创建,返回false
 public boolean mkdirs() 创建文件目录,如果上层文件不存在,一并创建
 public boolean medir() 创建文件目录,如果存在,则不创建。如果上层文件村在,不创建
 
 public boolean delete() 删除文件或文件夹
 注意事项:java删除不走回收站
public void method() throws IOException {
        File file1=new File("hi.txt");
        File file2=new File("D:\\io\\hi2");

        if(file1.exists()) {
            file1.delete();
            System.out.println("删除成功");
        }else{
            file1.createNewFile();
            System.out.println("创建成功");
        }

        System.out.println(file2.mkdir());
    }

public boolean creatNewFile():如果没有后缀,会生成一个未知格式的文件,而不会生成一个文件目录。

小知识

假设有两个文件分别为:file1.txt,file2.txt。
其中实际硬盘洪存在的只有file1.txt
其中file1.txt很多属性都是具有的,
而内存中的file2.txt很多属性都是默认值。

如果需要读写文件内容,必须使用到IO流来完成;
File类的对象常会作为参数传递到流的构造器中,指明读取或写入的“终点”

发布了49 篇原创文章 · 获赞 0 · 访问量 1435

猜你喜欢

转载自blog.csdn.net/qq_43616001/article/details/103991404