当前位置: 首页 > news >正文

【JavaEE初阶】文件IO(上)

欢迎关注个人主页:逸狼


创造不易,可以点点赞吗~

如有错误,欢迎指出~



目录

路径

绝对路径

相对路径

文件类型

文件的操作

 File类

文件系统操作

创建文件,获取路径

删除文件 

列出所有路径 

路径修改 

创建目录 mkdir和mkdirs 


服务器领域,机械硬盘仍然是一个主流的应用场景

机械硬盘在进行 顺序读写时,效率是相对比较高的,在进行 随机读写时,效率比较低

在一个电脑上,有很多文件,都是需要靠操作系统进行组织管理的(文件系统)

路径

文件系统上的目录结构 是一个"树形结构"(N叉树),基于这种结构,就可以找到某个文件在硬盘上的具体位置 ;

路径中,约定使用 分隔符,分割目录,

  • \(反斜杠)  在字符串中,必须通过\\转义字符去表示
  • /(斜杠): 绝大部分系统 都是使用/作为目录的分隔符,只有Windows两种都可以使用

路径 也可以认为是文件的一种 身份标识符(区分出唯一的一个文件)

表示路径的两种风格:绝对路径 和 相对路径

绝对路径

从盘符开始,一直到文件名结束

相对路径

相对路径有一个"参考系"("基准路径"或"工作路径"),如果基准目录不同,对应的相对路径也是不同的

  • .表示当前路径
  • ..表示上一路径

比如约定E:\code_java\java2024\j9_3_Thread为当前路径,要找到Demo3.java文件,其相对路径是 .\thread\Demo3.java

文件类型

文件类型分为 文本文件和二进制文件

文本文件里存储的所有内容都是"文本"(合法的字符),但是本质上内部存的还是二进制,只不过这些二进制数据都有据可查(通过字符集)

  • 针对文本文件,Java把文本文件读取出来的时候会自动查询码表,把二进制内容转成一个个字符
  • 二进制文件则没有上述的转换过程(word docx这个文件也是二进制文件)

文件的操作

包含两大类:文件系统操作(创建/删除文件 ,创建目录,重命名文件,判定文件存在)和 文件内容操作(读文件,写文件)

Java中提供了File类,进行文件系统操作,这个对象 会使用"路径"进行初始化,从而表示一个具体的文件(这个文件可以是存在的,也可以是不存在的)

 File类

下面介绍File类的属性 ,构造方法 和方法

代码中写作 相对路径的基准目录取决于运行程序的方式:

  1. 直接在idea中运行,此时基准路径就是该项目所在的目录
  2. 在命令行中,通过Java命令运行,此时基准路径就是Java命令所处的目录
  3. 某个程序,可能是被其他进程调用的.进程1通过创建子进程的方式,运行进程2(虽然在java中很少见,但是可以做到)进程2的基准路径,就和进程1相同.
  4. 代码执行过程中,还可以通过一些api修改基准路径,改成我们指定的某个路径

文件系统操作

创建文件,获取路径

        File file = new File("C:\\用户\\1\\test.txt");System.out.println(file.getParent());System.out.println( file.getName());System.out.println(file.getPath());System.out.println(file.getAbsolutePath());System.out.println(file.getCanonicalPath()); 

用相对路径在 该项目的 相对目录下创建文件 

        File file = new File("./test.txt");//文件可以是不存在的Boolean ok=file.exists();System.out.println(ok);Boolean ok2=file.createNewFile();//表示在当前目录下创建一个test文件System.out.println(ok2);System.out.println(file.exists());System.out.println(file.isFile());System.out.println(file.isDirectory());

创建文件createNewFile时,很可能会抛出异常,有以下原因

  • 硬盘空间不够. 尤其是服务器,会存储很多数据(每天都会产生很多内容),会记录很多日志
  • 没有权限. 确保你具有的权限,才能进行,文件的权限,典型的两个:读和写

删除文件 

deleteteOnExit表示进程结束后删除文件,存在的意义 是可以用来构造"临时文件". 

比如使用word创建一个文件,打开"显示隐藏文件",在word文档的同级目录下,存在一个临时文件(用于保存当前正在修改还没有真正保存的内容,程序异常关闭时,临时文件不会消失,而是通过这个文件还原出你正在编辑的内容),一旦你把编辑文档关闭了,这个隐藏文件就会自动消失.  

直接使用list/listFiles 只能看到当前目录中的内容

列出所有路径 

如果想看到某个目录下所有的目录和文件, 需要使用递归来完成(经典面试题)

import java.io.File;public class Demo2_list {public static void scan(File currentDir){//判断是否是目录if(! currentDir.isDirectory()){return ;}//2.列出目录下的所有内容File[] files=currentDir.listFiles();if(files==null || files.length==0 ){return;//不存在的路径和 空目录返回}//3.打印当前目录的路径System.out.println(currentDir.getAbsolutePath());//4.遍历所有文件,是文件就打印,是目录 就继续递归for (File f:files) {if(f.isFile()){System.out.println(f.getAbsolutePath());}else{scan(f);}}}public static void main(String[] args) {File f=new File("./");scan(f);}
}

路径修改 

文件路径的修改 也可以视为是一种"重命名",移动文件 就是修改文件所在的路径

import java.io.File;
import java.io.IOException;public class Demo8 {public static void main(String[] args) throws IOException {File srcFile = new File("./abc1234/def");File destFile = new File("./def");srcFile.createNewFile();boolean ok = srcFile.renameTo(destFile);//将srcFile的名字改为destFile,System.out.println(ok);}
}

创建目录 mkdir和mkdirs 


http://www.mrgr.cn/news/33429.html

相关文章:

  • 【模板进阶】类模板中可变参的特殊继承方式
  • Java的格式化输出
  • 计算机网络笔记001
  • VScode配置连接远程服务器configure ssh Hosts
  • 【计算机网络 - 基础问题】每日 3 题(十八)
  • 轻量化网络 ---- MobileNet V2:Inverted residual with linear bottleneck
  • 笔记整理—内核!启动!—linux应用编程、网络编程部分(3)文件共享与标准IO
  • 二进制和位运算
  • C++模版初阶
  • 初识APC机制实现APC注入
  • 有女朋友后,怎么养成贤内助?为自己找个好伴侣,为孩子找个好妈妈,为母亲找个好儿媳
  • NLP 序列标注任务核心梳理
  • Linux —— 网络基础(一)
  • MySQL锁机制
  • 计算机毕业设计 基于Python的荣誉证书管理系统 Django+Vue 前后端分离 附源码 讲解 文档
  • 详解ps用法
  • 求10000以内n的阶乘(高精度运算)
  • golang学习笔记5-基本数据类型的转换
  • Transcipher:从对称加密到同态加密
  • 部署林风社交论坛/社交论坛linfeng-community遇到问题集合