首页 > 其他分享 >第15章_File类与IO流 1

第15章_File类与IO流 1

时间:2023-09-06 12:22:41浏览次数:34  
标签:文件目录 File IO file println 15 public out

第15章_File类与IO流 1

1.File类的理解

  • File类位于java.io包下,本章中涉及到的相关流也都声明在java.io包下。
  • File类的一个对象,对应与操作系统下的一个文件或一个文件目录(或文件夹)
  • File类中声明了新建、删除、获取名称、重命名等方法,并没有涉及到文件内容的读写操作。要想实现文件内容的读写,我们就需要使用io流。
  • File类的对象,通常是作为io流操作的文件的端点出现的。
    • 代码层面,将File类的对象作为参数传递到IO流相关类的构造器中。

1.2构造器

  • public File(String pathname) : 以pathname为路径创建File对象,可以是绝对路径或者相对路径,如果pathname是相对路径,则默认的当前路径在系统属性user.dir中存储。
  • public File(String parent,String child): 以parent为父路径,child为子路径创建File对象。
  • public File(File parent,String child)︰根据一个父File对象和子文件路径创建File对象
    /*
    文件的路径表示方式:
        方式1:绝对路径:以windows操作系统为例,包括盘符在内的文件或文件目录的完整路径。
        方式2:相对路径:相对于某一个文件目录来讲的相对的位置。
        在IDEA中,如果使用单元测试方法:相对于当前的module来讲
        如果使用main(()方法:相对于当前的project来讲

     */
    public void test1(){
    //public File(String pathname)
        File file1 = new File("d:/io/hello.txt");
        File file2 = new File("abc");
        System.out.println(file2.getAbsoluteFile());

    }
    //public File(String parent,String child)
    public void test2(){
        //参数1:一定是一个文件目录
        //参数2:可以是一个文件,也可以是一个文件目录
        File file = new File("d:\\io", "abc.txt");
        File file1 = new File("abc", "a12");

    // public File(File parent,String child)
    //参数1:一定是一个文件目录
    //参数2:可以是一个文件,也可以是一个文件目录
        File file2 = new File(file1, "ab12");
    }

1.3常用方法

1、获取文件和目录基本信息

  • public String getName():获取名称
  • public String getPath():获取路径
  • public String getAbsolutePath():获取绝对路径.
  • public File getAbsoluteFile():获取绝对路径表示的文件
  • public String getParent():获取上层文件目录路径。若无,返回null
  • public long length():获取文件长度(即:字节数)。不能获取目录的长度。
  • public long lastModified():获取最后一次的修改时间,毫秒值
    public void test3(){
        File file = new File("hello.txt");
        System.out.println(file.getName());//hello.txt
        System.out.println(file.getPath());//hello.txt
        System.out.println(file.getAbsolutePath());//F:\科技为你\Java\尚硅谷Java入门\code\JavaSE2\jichuyufa\hello.txt
        System.out.println(file.getAbsoluteFile());//F:\科技为你\Java\尚硅谷Java入门\code\JavaSE2\jichuyufa\hello.txt
        System.out.println(file.getParent());//null
        System.out.println(file.getAbsoluteFile().getParent());//F:\科技为你\Java\尚硅谷Java入门\code\JavaSE2\jichuyufa

        System.out.println(file.length());//0
        System.out.println(file.lastModified());//0
    }

2、列出目录的下一级

  • public String] list()∶返回一个string数组,表示该File目录中的所有子文件或目录。
  • public File[] listFiles():返回一个File数组,表示该File目录中的所有的子文件或目录
    public void test4(){
        File file = new File("F:\\科技为你\\Java\\尚硅谷Java入门");
        String[] listArr = file.list();
        for (String s : listArr) {
            System.out.println(s);//code
        }

        System.out.println();
        File[] files = file.listFiles();
        for (File file1 : files) {
            System.out.println(file1);//F:\科技为你\Java\尚硅谷Java入门\code
        }
    }

3、File类的重命名功能

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

 public void test5(){
        File file = new File("hello.txt");
        File file1 = new File("aaa.txt");
       // File file1 = new File("d:/aaa.txt");

        /*
        举例:
file1.renameTo(file2)∶要想此方法执行完,返回true。要求:
file1必须存在,且file2必须不存在,且file2所在的文件目录需要存在。

         */
        boolean rename = file.renameTo(file1);
        System.out.println(rename?"重命名成功":"重命名失败");
    }

4、判断功能的方法

  • public boolean exists() :此File表示的文件或目录是否实际存在。
  • public boolean isDirectory() :此File表示的是否为目录。
  • public boolean isFile() :此File表示的是否为文件。
  • public boolean canRead():判断是否可读
  • public boolean canWrite():判断是否可写.
  • public boolean isHidden():判断是否隐藏
  public void test6(){
        File file1 = new File("aaa.txt");
        System.out.println(file1.exists());//true
        System.out.println(file1.isDirectory());//false
        System.out.println(file1.isFile());//true
        System.out.println(file1.canRead());//true
        System.out.println(file1.canWrite());//true
        System.out.println(file1.isHidden());//false
    }

5.创建、删除功能

  • public boolean createNewFile():创建文件。若文件存在,则不创建,返回false。
  • public boolean mkdir():创建文件目录。如果此文件目录存在,就不创建了。如果此文件目录的上层目录不存在,也不创建。
  • public boolean mkdirs():创建文件目录。如果上层文件目录不存在,一并创建。
  • public boolean delete():删除文件或者文件夹
    删除注意事项:①Java中的删除不走回收站。②要删除一个文件目录,请注意该文件目录内不能包含文件或者文件目录。
    public void test7() throws IOException {
        File file = new File("F:\\io\\hello/xx.txt");
        //测试文件的创建、删除

        if (!file.exists()){
            boolean isnewFile = file.createNewFile();
            if (isnewFile){
                System.out.println("创建成功");
            }
        }else {
            System.out.println("此文件已经存在");
        }

        System.out.println(file.delete()?"文件删除成功":"文件删除失败");
    }

    public void test8(){
        File file = new File("F:\\io\\hi");
        System.out.println(file.mkdir()?"创建文件目录成功":"创建文件目录失败");
        //前提: f :/io文件目录存在,hi目录是不存在的。

    }

    public void test9(){
        File file = new File("F:\\io\\uu/yy");
        System.out.println(file.mkdir()?"创建文件目录成功":"创建文件目录失败");
        //前提: f :/io文件目录存在,hi目录是不存在的。

        File file1 = new File("F:\\io\\oo/pp");
        System.out.println(file1.mkdirs()?"创建文件目录成功":"创建文件目录失败");
    }

判断指定目录下是否有后缀名为.jpg的文件

public class Exer02 {
/*
*判断指定目录下是否有后缀名为.jpg的文件,如果有,就输出该文件名称**/

public void test1(){
File dir = new File( pathname: "F:1110-图片");
String[] listFiles = dir.list();
for(String s : listFiles){
if(s.endsWith(".jpg")){
system.out.println(s);
	}
}
}
===========
    //方式2:
/ / public String[] list(FilenameFilter filter)
String[ ] listFiles = dir.list(new FilenameFilter() {
Override
public boolean accept(File dir,String name) {//name:即为子文件或子文件目录的名称
//if( name.endsWith( ".jpg")){
//return true;
//}else{
//return false;
//}
return name. endswith( " .jpg" );
}
});

练习;
遍历指定文件目录下的所有文件的名称,包括子文件目录中的文件。
public void printFileName(File file)//file可能是文件,也可能是文件目录

public void printFileName(File file){
if(file.isFile()){
system.out.println(file.getName() );
}else if(file.isDirectory(){
File[] files = file.listFiles();
    for(File f : files){
printFileName(f);//递归
}
}
}

标签:文件目录,File,IO,file,println,15,public,out
From: https://www.cnblogs.com/xin-zhi-suo-xiang/p/17682001.html

相关文章

  • CMake生成Visual Studio工程
    CMake–生成VisualStudio工程C/C++项目经常使用CMake构建工具。CMake项目文件(例如CMakeLists.txt)可以直接由VisualStudio使用。本文要说明的是如何将CMake项目转换到VisualStudio解决方案(.sln)或项目(.vcxproj)开发环境为了生成VisualStudio解决方案,必须安装以下内......
  • 黑客利用 MinIO 存储系统漏洞危害服务器
    据观察,未知威胁行为者利用MinIO高性能对象存储系统中的高严重性安全漏洞进行武器化,以在受影响的服务器上实现未经授权的代码执行。国际知名白帽黑客、东方联盟创始人郭盛华表示,此次入侵利用了公开可用的漏洞利用链对MinIO实例进行后门处理,其中包括CVE-2023-28432(CVSS分数:7.5......
  • Gym102354I From Modular to Rational
    问两个相乘不会炸\(\rmlong\long\)的质数,用CRT合并,得到\(\frac{p}{q}\equivr\\pmodM\)。其中\(M\)是大于\(10^{18}\)的数。由于这个\(M\)太大了,不存在\(\frac{p}{q}\equiv\frac{a}{b}\pmodM\)且\(p,q,a,b\leq10^9\),所以我们只需找到一个\(\frac{p}{......
  • 第一节上机课(Visio 2016)
    今天是开学以来的第一节实验上机课 老师给我们布置了三个作业第一个是要写一篇自己的博客第二个就是安装visio第三个就是写教材第19页的习题三个任务完成的都比较顺利我正好也有visio2016的安装包也是非常的幸运安装好自己电脑的visio后还给几个同学提供了安装包和包安......
  • 【ICML2022】Understanding The Robustness in Vision Transformers
    来自NUS&NVIDIA文章地址:[2204.12451]UnderstandingTheRobustnessinVisionTransformers(arxiv.org)项目地址:https://github.com/NVlabs/FAN一、MotivationCNN使用滑动窗的策略来处理输入,ViT将输入划分成一系列的补丁,随后使用自注意力层来聚合补丁并产生他们的表示,ViT的......
  • 论文精读:带有源标签自适应的半监督域适应(Semi-Supervised Domain Adaptation with Sou
    Semi-SupervisedDomainAdaptationwithSourceLabelAdaptation具有源标签适应的半监督域适应原文链接Abstract文章指出当前的半监督域适应(Semi-SupervisedDomainAdaptation,SSDA)方法通常是通过特征空间映射和伪标签分配将目标数据与标记的源数据对齐,然而,这种面向源数......
  • Variovorax贪噬菌属
    贪噬菌属(学名:Variovorax)也称贪食菌属,为丛毛单胞菌科的一个属。菌株为呈杆状,革兰氏染色为阴性,繁殖方式为裂殖。该属的模式种为争论贪噬菌(Variovoraxparadoxus)。1、NEWBing的回答根际微生物群落中的Variovorax是一种革兰氏阴性的细菌属,属于拟杆菌门,广泛分布在土壤、水体和植......
  • 跨越2000公里,15岁少年的云上逐梦
    本文分享自华为云社区《【先锋开发者云上说】跨越2000公里,15岁少年的云上逐梦》,作者:华为云社区精选。10岁学Python,12岁学C++在数十场科技创新大赛中拔得头筹为解决一个技术难题独自一人从大连飞往东莞HDC.Cloud2023现场与华为云扫地僧面对面交流这就是少年开发者苏家祺......
  • Swagger常见注解@API、@ApiOperation、@ApiParam等
    Swagger2一些常用注解最近遇到了一个使用swagger来生成接口文档的项目,在controller看到了一些没用过的注解(@API、@ApiOperation等),遂记录一下@API使用在类上,表明是swagger资源,@API拥有两个属性:value、tags,源码如下//Iftagsisnotused,thisvaluewillbeusedtoset......
  • AIRIOT大学计划暑期训练营圆满结束,产教融合培养物联网产业人才
    ​ 为促进物联网产业的纵深发展和创新,推进教育链、产业链与创新链的有机衔接,提高学生理论、实践和创新能力,7月3日-7月28日,由航天科技控股集团股份有限公司(简称“航天科技”)开展AIRIOT大学计划第三期暑假训练营圆满收官。来自北京工业大学、浙江工业大学、安徽建筑大学、澳门城......