一、 File类的特点/记忆点

  1. 关于文件和缓冲区之间的IO操作,之前在编写shell的时候已经通过C++去体会过了。现在看看是不是使用java方便了许多
/*
实现cat函数
实现功能:对文件1.txt内容进行标准输出
用法:cat 1.txt 或 cat /home/zxf/1.txt
*/
void cat(char *argv[]){char buf[200];  //模拟缓冲区int fp;fp=open(argv[1],O_RDONLY);if(fp==-1){printf("open file failed\n");return;}int n;while((n=read(fp,buf,199))>0)write(1,buf,n);  //1 标准close(fp);
}
  1. File类不仅可以实例化【文件】,还可以实例化【目录】
  2. File类在java.io包下
  3. File类可以创建、删除文件,但不能对文件进行读写。如果要对这个文件进行读或者写,必须使用IO
  4. File类常用于:File类的对象常作为参数传递到流的构造器中,指明读取或写入的“终点”
  5. new File只是在内存创建了一个File对象,和外存(硬盘)中是否有这个文件暂时无关
  6. 最好每次使用new File前,都通过exists()方法判断一下有没有这个文件

二、File类的常用方法

2.1 构造方法

注意:new File只是在内存创建了一个File对象,和外存(硬盘)中是否有这个文件暂时无关。FIle有exists方法专门用来判断这个文件是否存在。

        //1)--------File(String 文件路径)File file1 = new File("september.txt"); //相对路径File file2 = new File("H:\\September\\2th\\null.txt"); //绝对路径(注意,本机根本没有H盘)System.out.println(file1);//输出:september.txtSystem.out.println(file2);//输出:H:\September\2th\null.txt//2)---------File(String 父路径,String 子路径)File file3 = new File("H:\\September", "2th");System.out.println(file3);//输出:H:\September\2th//3)---------File(File 父对象,String 子路径)File file4 = new File(file3, "null.txt");System.out.println(file4);//输出:H:\September\2th\null.txt

路径分隔符说明:java中使用路径分隔符和之前总结的Python中使用路径分隔符是一样的。

python Windows下路径名用‘/‘还是‘\‘(以及和Linux的区别)_玛丽莲茼蒿的博客-CSDN博客在跑脚本的时候,Linux下可以运行的脚本到Windows下报错了,归根结底是路径的问题,所以总结一下。我们都知道,Linux下的路径分隔符是'/',而Windows下的路径分隔符是'\'。'/'可以直接用,而'\'不能的根源在于字符串里面\被作为转义字符使用。一、Linux下的路径名一律用'/'。二、Windows下的路径名Windows下根据你的需求不同,有几种情况可以选择。各有利弊。为什么不固定用一种方式呢,因为每个人的需求不同嘛。就按照我自己来说,我更愿意让Whttps://blog.csdn.net/qq_44886213/article/details/123333467?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22123333467%22%2C%22source%22%3A%22qq_44886213%22%7D建议:虽然在Windows系统中,我们也可以使用Linux下的“/”。but为了避免java跨平台出错,还是规范着来,Windows下用“\\”,Linux下用“/”。

java提供了separator常量

2.2 文件的常用方法

  • public String getName():获取文件名
  • public boolean canRead():是否可读
  • public boolean canWrite() :是否可写
  • public boolean exists():判断是否存在
  • public long length():文件长度(单位是字节
  • public String getAbsolutePath():获取文件的绝对路径
  • public String getParent(): 获取文件的父目录
  • public boolean ifFile(): true是文件,false是目录
  • public boolean isDirectory():判断是否是一个目录
  • public boolean idHidden():是否是隐藏文件
  • public long lastModified():获取文件最后修改时间(从1970年午夜开始的毫秒数
  • public boolean renameTo(File file2):将文件重命名为file2的名字 (注意形参是一个File对象而不是String类型,这是为了防止文件重复)

2.3 目录的常用方法

  • public String[] list():以【字符串】形式返回目录下的全部文件
  • public File[] listFiles():以【File对象】形式返回目录下的全部文件
        File file = new File("F:\\3_零信任");String[] list = file.list();for(String li : list){System.out.println(li);}File[] files = file.listFiles();for(File f : files){System.out.println(f.getName());}

2.4 几个需要注意的方法

2.4.1 当文件不存在时调用常用方法需要注意的问题

当我们new一个并不存在的文件,调用getParent等方法会输出什么?

        File file1 = new File("not-exist.txt");  //硬盘中没有这个文件,相对路径System.out.println(file1.getAbsolutePath());System.out.println(file1.getPath());System.out.println(file1.getParent());System.out.println(file1.length());System.out.println(file1.lastModified());System.out.println(file1.exists()); System.out.println(file1.isDirectory());System.out.println(file1.isFile());File file1 = new File("M://not-exist.txt");  //硬盘中没有这个文件,绝对路径System.out.println(file1.getAbsolutePath());System.out.println(file1.getPath());System.out.println(file1.getParent());System.out.println(file1.length());System.out.println(file1.lastModified());

E:\Java Project\helloworld\ioStream\not-exist.txt(绝对路径=当前java文件所在的父目录+文件名)
not-exist.txt(path直接输出文件名)
null (无父目录,输出默认值,null)
0 (无文件长度,输出默认值,0)
0 (无文件长度,输出默认值,0)

false (不存在)

false(因为不存在,所以既不是文件也不是路径)

false

M:\not-exist.txt (绝对路径=输入的虚假路径)
M:\not-exist.txt (path)
M:\ (父目录=输入的虚假父目录)
0(无文件长度,输出默认值,0)
0(无文件长度,输出默认值,0)

2.4.2 重命名方法要注意3点

  1. 形参是一个File对象而不是String类型,因为String类型没法判断这个文件名是否已经存在了
  2. 要想renameTo成功执行,需要file1在硬盘中存在,file2在硬盘中不存在(file1必须存在是因为你要给它重命名它必须存在啊,file2不能存在是因为,一旦file2存在,file1重命名为file2以后名字就重复了)
        //重命名:需要file1在硬盘中存在,file2不存在,才能返回成功File file1 = new File("F:\\!\\not-exist.txt");File file2 = new File("F:\\!\\rename.txt");boolean b = file1.renameTo(file2);System.out.println(b); //返回是否重命名成功

3. renameTo函数还有移动文件的功能(和Linux下的mv命令一样)

        //重命名:需要file1在硬盘中存在,file2不存在,才能返回成功File file1 = new File("F:\\!\\not-exist.txt");//会把原来在F:\\!路径下的not-exist.txt文件,//移动到D:\\!路径下的rename.txtFile file2 = new File("D:\\!\\rename.txt");

2.4.4 创建和删除

创建和删除文件

        File file1 = new File("F:\\!\\new.txt");if(!file1.exists()){ //最好养成对文件进行操作时都用exists判断一下的习惯,不过对于createNewFile方法,如果文件存在本身也会返回false//1)创建文件boolean b = file1.createNewFile();System.out.println(b);}else{System.out.println("文件已经存在");}if(file1.exists()){//2)删除文件file1.delete();}

创建目录

        File file1 = new File("F:\\!");  //父路径File file2 = new File("F:\\!", "dir"); //子路径if(file1.exists()){//1)父路径存在,调用mkdir方法boolean b = file2.mkdir();System.out.println(b);}else{//2)父路径不存在,调用mkdirs方法先创建父路径boolean b = file2.mkdirs();System.out.println(b);}

javaSE I/O流(一)—— File类相关推荐

  1. java io 创建文件夹_Java中Io流操作-File类的常用操作-创建文件,创建文件夹

    package com.hxzy.IOSer; import java.io.File; import java.io.IOException; public class Demo03 { publi ...

  2. 黑马毕向东Java课程笔记(day20-1——20-17)IO流:File类及相关方法、递归、递归的相关练习、Properties、PrintWriter类与PrintStream类、合并流与切割流

    1.File类概述   File是文件和目录路径名的抽象表示形式. 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作.   前面说到的"流",它只能操作数据,想 ...

  3. 15.方法引用, Stream流,File类 , 递归 ,字节流

    JavaSE高级 Lambda表达式.方法引用.Stream流.File类 第一章 JDK8新特性 JDK新特性: Lambda 表达式 默认方法[已学习过] Stream API 方法引用 Base ...

  4. java-IO流(1)-IO流和File类的介绍

    目录 1 IO流的概念 2 IO流体系结构 3Java中流的分 3.1按流向分 3.2按数据传输单位分 3.3按功能分 4File类介绍 4.1File类的作用 4.2常见的构造函数 4.3提供方法 ...

  5. Java的IO流之File类

    java的IO流模块常用的工具有File.字节流.字符流.特殊操作流,本篇文章便是本人学习File类的一次学习记录. 一.File类概述 File:是文件和目录路径名的抽象表示 ① 文件和目录是可以通 ...

  6. Java基础:IO流之File类

    1. File类概述 文件和目录路径名的抽象表示形式,表示一个文件或文件夹,并提供了一系列操作文件或文件夹的方法 2. 构造方法 方法 功能描述 File(String pathname) 根据路径得 ...

  7. 第二十六节(对象流,File类)

    对象流可以将 Java 对象转换成二进制写入磁盘,这个过程通常叫做序列化,并且还可以从磁盘读出完整的 Java 对象,而这个过程叫做反序列化.对象流主要包括:ObjectInputStream 和 O ...

  8. 【Java10】lambda表达式(函数式编程),Stream流,File类,字节/字符流,乱码,缓冲/转换/序列化/打印流,Properties

    文章目录 1.lambda表达式标准语法:()->{} 2.lambda表达式简略语法:可推导即可省略 3.lambda表达式原理:lambda效率比匿名内部类高 4.两个函数式接口:Consu ...

  9. java.io.file.sync_Java(25)IO流和File类

    IO流+File类 File类 讲IO流之前先来讲以下File类.Java的标准库Java.io提供了File类来操作文件和目录.操作可以有:新建.删除.重命名等,但是不能访问文件本身的内容,如果想要 ...

  10. java基础--IO流之File类

    一.File类概述 用来将文件或者文件夹封装成对象,方便对文件与文件夹的属性信息进行操作,File对象可以作为参数传递给流的构造函数 二.File类常见方法: 1,创建 boolean createN ...

最新文章

  1. LSGO代码小组第16周复盘日志
  2. Socket简介及客户端服务器连接实例
  3. Intel Realsense深度摄像头的自校准功能(self-calibration-for-depth-cameras)
  4. 【机器视觉】 dev_map_var算子
  5. 命令python所在的驱动器和文件夹_Python读取不同本地驱动器位置的文件
  6. 高性能MySQL(二)
  7. 在cmd中配置安装mysql数据库密码_windows安装mysql数据库并修改密码
  8. php 多维数组 列,总结PHP实现提取多维数组指定一列的方法
  9. MySQL在Windows和Linux减少数据库
  10. EXCEL VLOOKUP函数的使用(二)
  11. SDN的机遇与挑战 让宽带利用率与硬件不再是难题
  12. 算法导论 斐波那契堆
  13. iOS——应用内调用Face ID、Touch ID
  14. 联想服务器忘记系统登录密码,联想路由器登陆密码忘记了怎么办
  15. 中望3d快捷键命令大全_CAD、3D快捷命令
  16. php面试时的自我称呼,PHP程序员面试自我介绍
  17. 代码库_单精度浮点减法器
  18. 【window】解决word,excel,PowerPoint 等office图标不显示问题
  19. matlab 中克罗内克积,克罗内克积
  20. Charles系列破解激活License

热门文章

  1. 低功耗MCU的选择方法
  2. 超级马里奥(待完善)
  3. 云呐|fsu动环监控单元是什么,fsu动环监控单元特点
  4. smbus电池信息读取
  5. 急~为啥我指定的的maven依赖版本没有生效?不是最短路径原则吗?
  6. 排序算法——冒泡排序(Bubble Sort)
  7. linux wget 图片,wget命令批量下载图片
  8. 解决Linux(ubuntu),windows双系统重装后恢复开机选单
  9. 编译原理:代码生成(pcode),C语言实现
  10. 【python】自动登录51cto家园