【JavaEE初阶】文件IO(上)

news2024/9/23 13:57:02

欢迎关注个人主页:逸狼


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

如有错误,欢迎指出~



目录

路径

绝对路径

相对路径

文件类型

文件的操作

 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.coloradmin.cn/o/2157692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

win系统接入google_auth实现动态密码,加强保护

开源代码地址:windows动态密码: 针对win服务器进行的动态密码管控,需要配合谷歌的身份认证APP使用 (gitee.com) 为什么要搞个动态密码呢? 首先云服务器启用了远程访问,虽然更换了端口以及初始用户名,不过还是是不是被…

go的结构体、方法、接口

结构体: 结构体:不同类型数据集合 结构体成员是由一系列的成员变量构成,这些成员变量也被称为“字段” 先声明一下我们的结构体: type Person struct {name stringage intsex string } 定义结构体法1: var p1 P…

老程序员的数字游戏开发笔记(三) —— Godot出你的第一个2D游戏(一篇文章完整演绎Godot制作2D游戏的全部细节)

忽略代码,忽略素材,忽略逻辑! 游戏的精髓是人性与思想,我一篇一篇地制作,不想动手的小伙伴看一看就可以,感受一下也不错,我们是有目的性的,这一切都是为今后的AI融合打基础&#xf…

详解CORDIC算法以及Verilog实现并且调用Xilinx CORDIC IP核进行验证

系列文章目录 文章目录 系列文章目录一、什么是CORDIC算法?二、CORDIC算法原理推导三、CORDIC模式3.1 旋转模式3.2 向量模式 四、Verilog实现CORDIC4.1 判断象限4.2 定义角度表4.3 迭代公式 五、仿真验证5.1 matlab打印各角度的正余弦值5.2 Verilog仿真结果观察 六、…

大模型学习方向不知道的,看完这篇学习思路好清晰!!

入门大模型并没有想象中复杂,尤其对于普通程序员,建议采用从外到内的学习路径。下面我们通过几个步骤来探索如何系统学习大模型: 1️⃣初步理解应用场景与人才需求 大模型的核心应用涵盖了智能体(AI Agent)、微调&…

NodeFormer:一种用于节点分类的可扩展图结构学习 Transformer

人工智能咨询培训老师叶梓 转载标明出处 现有的神经网络(GNNs)在处理大规模图数据时面临着一些挑战,如过度平滑、异质性、长距离依赖处理、边缘不完整性等问题,尤其是当输入图完全缺失时。为了解决这些问题,上海交通大…

RK3588NPU驱动版本升级至0.9.6教程

RK3588NPU驱动版本升级至0.9.6教程 1、下载RK3588NPU驱动2、修改NPU驱动源码2.0 修改MONITOR_TPYE_DEV写错问题2.1 解决缺少函数rockchip_uninit_opp_table问题2.2 解决缺少函数vm_flags_set、vm_flag_clear的问题2.3 内核编译成功2.4 重新构建系统 3、注意事项4、其他问题处理…

故障诊断 | 基于双路神经网络的滚动轴承故障诊断

故障诊断 | 基于双路神经网络的滚动轴承故障诊断 目录 故障诊断 | 基于双路神经网络的滚动轴承故障诊断效果一览基本介绍程序设计参考资料效果一览 基本介绍 基于双路神经网络的滚动轴承故障诊断 融合了原始振动信号 和 二维信号时频图像的多输入(多通道)故障诊断方法 单路和双…

【原创】java+springboot+mysql党员教育网系统设计与实现

个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…

【Linux】常用指令【更详细,带实操】

Linux全套讲解系列,参考视频-B站韩顺平,本文的讲解更为详细 目录 一、文件目录指令 1、cd【change directory】指令 ​ 2、mkdir【make dir..】指令​ 3、cp【copy】指令 ​ 4、rm【remove】指令 5、mv【move】指令 6、cat指令和more指令 7、less和…

【爬虫工具】小红书评论高级采集软件

用python开发的爬虫采集工具【爬小红书搜索评论软件】,支持根据关键词采集评论。 思路:笔记关键词->笔记链接->评论 软件界面: 完整文章、详细了解: https://mp.weixin.qq.com/s/C_TuChFwh8Vw76hTGX679Q 好用的软件一起分…

去除字符串或字符串数组中字符串左侧的空格或指定字符numpy.char.lstrip()

【小白从小学Python、C、Java】 【考研初试复试毕业设计】 【Python基础AI数据分析】 去除字符串或字符串数组中 字符串左侧的空格或指定字符 numpy.char.lstrip() [太阳]选择题 请问关于以下代码表述错误的选项是? import numpy as np print("【执行】np.cha…

2024/9/22

系列文章目录 文章目录 系列文章目录前言一、两条腿走路二、编程语言能力提升1.廖雪峰的python课2.Leetcode(数据结构题) 三、机器学习能力提升1.统计学习方法 李航2.kaggle竞赛 四、神经网络能力提升1.神经网络与深度学习 邱锡鹏2.一套自己的万金油模板…

寄存器与内存

第三课:寄存器与内存、中央处理器(CPU)、指令和程序及高级 CPU 设计-CSDN博客 锁存器 引入 ABO0(开始状态)001(将A置1)110(将A置0)11 无论怎么做,都没法从1变…

Windows PowerShell相关笔记

之前我写的一篇,把我的PS(power shell)该了配置文件 pyqt5vscode 配置坑笔记_vscode使用pyqt command failed-CSDN博客 文件里写的自动加载conda #region conda initialize # !! Contents within this block are managed by conda init !!…

[Python]一、Python基础编程(2)

F:\BaiduNetdiskDownload\2023人工智能开发学习路线图\1、人工智能开发入门\1、零基础Python编程 1. 文件操作 把⼀些内容 ( 数据 )存储存放起来,可以让程序下⼀次执⾏的时候直接使⽤,⽽不必重新制作⼀份,省时省⼒ 。 1.1 文件的基本操作 1. 打开文件 2. 读写操作 3. 关闭…

基于YOLOv5s的瓶装酒瑕疵检测(附数据集与操作步骤)

本文主要内容:详细介绍了瓶装酒瑕疵检测的整个过程,从创建数据集到训练模型再到预测结果全部可视化操作与分析。 文末有数据集获取方式,请先看检测效果 现状 在酒类生产领域,品质极为重要。瓶装酒的外观瑕疵,不仅影响消费者的购…

基于Ambari搭建hadoop生态圈+Centos7安装教程V2.0优化版(本篇博客写的较为详细,可能比较多,请耐心看)

当我们学习搭建hadoop的时候,未免也会遇见很多繁琐的事情,比如很多错误,需要解决。在以后公司,也不可能让你一个一个搭建hadoop,成千上万的电脑,你再一个个搭建,一个个报错,而且每台…

飞书获取用户及部门信息

1、进入企业后台管理,创建一个企业自建应用 ,获取App ID,App Secret 2、 对应用设置api权限及数据权限 3、Java客户端获取用户,部门信息 有两种方式可以获取:1、api 2、sdk的方式 我这里采用sdk的方式,…

如何给文件夹里面的文件批量添加前缀和编号(利用C#写的小工具)

运行结果 将上面的文件编号效果 下载过后启动这个程序即可(这个程序灵感来源是上次给美术资源分类和编号的时候给我干吐了,所以写了这个工具) 体验链接:laozhupeiqia/批处理 --- laozhupeiqia/批处理 (github.com) 如果对你有帮助…