javaEE-文件操作和IO-文件

目录

一.什么是文件

1.文件就是硬盘(磁盘)上的文件。

2.计算机中存储数据的设备:

3.硬盘的物理特征

4.树型结构组织和⽬录

5.文件路径

文件路径有两种表示方式:

6.文件的分类

二、java中文件系统的操作

1.File类中的属性:

2.构造方法:

3.方法:

参考代码:


一.什么是文件

1.文件就是硬盘(磁盘)上的文件。

对于计算机(电脑)来说,文件是一个广义的概念:硬盘上的普通文件,和目录(文件夹)都称为文件。很多硬件设备也被操作系统抽象成立了文件:键盘,鼠标,显示器......

2.计算机中存储数据的设备:

cpu(寄存器/缓存),内存,硬盘

对这三者进行性能比较:

性能存储速度存储空间价格是否会丢失
cpu最快最小最贵
内存中等其次其次
硬盘最慢最大最便宜不会

软件上的很多特性都和硬盘有关。

3.硬盘的物理特征

上图左面就是一个简单磁盘,白色的是磁片,在工作的时候磁片高速旋转;磁头是一个很小的针头,能够感知到磁性的变化,磁头悬停在盘片上的不同位位置,就能感知到磁性的数据信息。

一个很大的文件,将其复制到另一个文件中,这属于顺序读写;若将很多个很小的目录(文件夹),所有目录都拷贝一份,这属于随机读写。

因为 目录在硬盘上是随机存储的,对于一个硬盘来说,更擅长顺序读写,不擅长随机读写。

此外,要拆开物理硬盘时,要在无尘的实验室中,因为一旦有灰尘落到盘片上,在高速旋转下,磁头会被打坏。

4.树型结构组织和⽬录

随着⽂件越来越多,对⽂件的系统管理也被提上了⽇程。按照层级结构进⾏组织也就是我们数据结构中学习过的树形结构。这样, ⼀种专⻔⽤来存放管理信息的特殊⽂件诞⽣了,也就是我们平时所谓⽂件夹(folder)或者⽬录(directory)的概念。

上面图片中的这些都属于文件。

5.文件路径

操作系统使用“文件路径”这样的概念来描述一个文件的具体位置

类似于: C:/users/1/test.exe

在windows系统上,从根节点开始(盘符),一级一级向下走,走到文件的位置,这中间的所用路径用“/”或“\”分割表示,就构成了路径。

文件路径有两种表示方式:

1.绝对路径:从根目录开始,一级一级向下走,走到目标文件的位置。

2.相对路径:不从根节点开始,从指定目录开始,以此目录为基准目录(当前目录),到指定文件的位置。

有一个文件路径:C:/Users/1/test.txt

在应用开发中,更多用到的时相对路径。分隔符可以用正斜杠,也可以用反斜杠,但更支持使用正斜杠,反斜杠在某些语言中(C,C++....)还涉及到转义字符等.....

6.文件的分类

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

 怎样区分一个文件是 二进制文件 还是 文本文件?

将该文件用记事本打开,若能看懂里面的内容,就是文本文件,若是看不懂的乱码,就是二进制文件。

文本文件 都是一“文本”或字符串来理解文件内容的(里面的二进制内容都是字符串,有对应的字符编码);二进制文件里面的内容都是合法的字符,没有编码的限制,可以存储任何数据。

每种字符编码都有对应的码表。

这种就属于二进制文件,打开的内容都是一些乱码。

这种就属于文本文件。

二、java中文件系统的操作

java中通过 java.io.File 类来对⼀个⽂件(包括⽬录)进⾏抽象的描述。注意,有 File对象, 并不代表真实存在该⽂件。

IO:指得是输入输出:文件从 硬盘到 cpu是输入;从cpu 到 硬盘是输出。

1.File类中的属性:

2.构造方法:

这里更多使用第二种构造方法。

此处的路径可以是不存在的。

3.方法:

参考代码:

public static void main(String[] args) throws IOException {
        //在D盘创建一个文件夹,名为io,在io中创建一个文件夹,名为1,
        // 在1文件夹中创建一个test.txt 文件
        File file = new File("D:/io/1/test.txt");//
        //1.String getParent() 返回File对象的⽗⽬录⽂件路径
        System.out.println("⽗⽬录⽂件路径: "+file.getParent());// D:\io\1
        //2.String getName() 返回FIle对象的纯⽂件名称
        System.out.println("纯⽂件名称: "+file.getName());// test.txt
        //3.String getPath() 返回File对象的⽂件路径
        System.out.println("⽂件路径: "+file.getPath());//  D:\io\1\test.txt
        //4.String getAbsolutePath() 返回File对象的绝对路径
        System.out.println("绝对路径: "+file.getAbsolutePath());//  D:\io\1\test.txt
        //5.String getCanonicalPath() 返回File对象的修饰过的绝对路径
        System.out.println("修饰过的绝对路径: "+file.getCanonicalPath());// D:\io\1\test.txt
        //6.boolean exists() 判断File对象描述的⽂件是否真实存在
        System.out.println("⽂件是否真实存在: "+file.exists());// true
        //7.boolean isDirectory() 判断File对象代表的⽂件是否是⼀个⽬录
        System.out.println("否是⼀个⽬录: "+file.isDirectory());// false
        //8.boolean isFile() 判断File对象代表的⽂件是否是⼀个普通⽂件
        System.out.println("是否是⼀个普通⽂件:"+file.isFile());// true
        //4.String[] list() 返回File对象代表的⽬录下的所有⽂件名
        System.out.println("File对象代表的⽬录下的所有⽂件名: "+file.list()); //null
        //File[] listFiles() 返回File对象代表的⽬录下的所有⽂件,以File对象表⽰
        System.out.println("File对象代表的⽬录下的所有⽂件,以File对象表⽰: "+file.listFiles());
                                                        // null
        File file1 = new File("./1.txt");
        //1.boolean createNewFile() 根据File对象,⾃动创建⼀个空⽂件。成功创建后返回true
        System.out.println("创建⼀个空⽂件: "+file1.createNewFile()); //true

//        //2.boolean delete() 根据File对象,删除该⽂件。成功删除后返回true
//        System.out.println("删除该⽂件: "+file1.delete()); //true
//
//        //3.void deleteOnExit() 根据File对象,标注⽂件将被删除,
//        // 删除动作会到JVM运⾏结束时才会进⾏
//        file1.deleteOnExit();
//
        //1.boolean mkdir() 创建File对象代表的⽬录
        File file2 = new File("./aaa"); 
        System.out.println(file2.mkdir());  //true
        //2.boolean mkdirs() 创建File对象代表的⽬录,如果必要,会创建中间⽬录
        File file3 = new File("./aaa/bbb/ccc");
        System.out.println(file3.mkdirs());  // true
        //3.boolean renameTo(File dest) 进⾏⽂件改名,也可以视为我们平时的剪切、粘贴操作
        System.out.println("进⾏⽂件改名: "+file1.renameTo(file2));// false
        //4.boolean canRead() 判断⽤⼾是否对⽂件有可读权限
        System.out.println("⽤⼾是否对⽂件有可读权限: "+file2.canRead()); //true
        //5.boolean canWrite() 判断⽤⼾是否对⽂件有可写权限
        System.out.println("⽤⼾是否对⽂件有可写权限: "+file2.canWrite());//true

    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/947325.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SqlSession的线程安全问题源码分析

🎮 作者主页:点击 🎁 完整专栏和代码:点击 🏡 博客主页:点击 文章目录 SqlSession 是线程安全的吗?为什么说是线程不安全的?事务管理问题 数据库连接的共享问题 一级缓存线程安全问题…

拆解 Web3:探寻去中心化网络的核心密码

近年来,Web3频繁出现在技术讨论中,被视为互联网发展的下一阶段。那么,Web3究竟是什么?它如何区别于传统互联网,又将为未来的网络带来哪些新的可能?本文将从科普的角度拆解Web3的核心密码,揭开它…

《Vue3实战教程》37:Vue3生产部署

如果您有疑问,请观看视频教程《Vue3实战教程》 生产部署​ 开发环境 vs. 生产环境​ 在开发过程中,Vue 提供了许多功能来提升开发体验: 对常见错误和隐患的警告对组件 props / 自定义事件的校验响应性调试钩子开发工具集成 然而&#xff…

Ruby自动化:用Watir库获取YouTube视频链接

引言 Watir(Web Application Testing in Ruby)是一个强大的工具,它允许开发者使用Ruby语言来自动化控制浏览器。Watir最初被设计用于自动化Web应用测试,但其功能远不止于此。通过Watir,我们可以模拟用户行为&#xff…

[CTF/网络安全] 攻防世界 warmup 解题详析

查看页面源代码&#xff0c;发现source.php 得到一串代码&#xff0c;进行代码审计&#xff1a; <?phpclass emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php"];…

solr9.7 单机安装教程

1.环境要求:jdk11以上 2.下载wget https://dlcdn.apache.org/solr/solr/9.7.0/solr-9.7.0.tgz 3.解压 4.修改solr.in.sh配置 5.启动命令 bin/solr start 6.创建core bin/solr create -c <core名称> 注意:用solr ui界面创建&#xff0c;会提示找不到solrconfig.xml和m…

应用架构模式-总体思路

采用引导式设计方法&#xff1a;以企业级架构为指导&#xff0c;形成较为齐全的规范指引。在实践中总结重要设计形成决策要点&#xff0c;一个决策要点对应一个设计模式。自底向上总结采用该设计模式的必备条件&#xff0c;将之转化通过简单需求分析就能得到的业务特点&#xf…

基于AI大模型的医院SOP优化:架构、实践与展望

一、引言 1.1 研究背景与意义 近年来,人工智能(AI)技术取得了迅猛发展,尤其是大模型的出现,为各个领域带来了革命性的变化。在医疗领域,AI 医疗大模型正逐渐崭露头角,展现出巨大的应用潜力。随着医疗数据的海量积累以及计算能力的大幅提升,AI 医疗大模型能够对复杂的…

AWS re:Invent 2024 - Dr. Werner Vogels 主题演讲

今年&#xff0c;我有幸亲临现场参加了所有的 keynote&#xff0c;每一场都让我感受到深深的震撼。无论是全新的功能发布&#xff0c;还是令人眼前一亮的新特性展示&#xff0c;每一场 keynote 都精彩纷呈&#xff0c;充满干货&#xff0c;值得反复学习和回味。 恰好&#xff…

UnionTech OS Server 20 网页无法访问yum源地址

统信yum地址 https://euler-packages.chinauos.com/server-euler/fuyu/1060/everything/sw_64/Packages/ 浏览器访问401报错无权限&#xff0c;查看linux uos环境下yum配置的用户名和密码 cat /etc/yum/vars/auth_* 然后自己组装生成Basic Authorization def generate_basic_…

自动化测试常考的面试题+答案汇总(持续更新)

Hi&#xff0c;大家好&#xff0c;。最近很多朋友都在说今年的互联网行情不好&#xff0c;面试很难&#xff0c;不知道怎么复习&#xff0c;我最近总结了一份在自动化测试面试中比较常见的面试题合集&#xff0c;希望对大家有帮助。 本文共 4800 字&#xff0c;预计阅读时间 1…

jvm结构介绍

JVM结构概述 Java虚拟机&#xff08;JVM&#xff09;是Java程序的运行环境&#xff0c;它负责将Java字节码转换为机器码并执行。JVM的结构主要包括类加载子系统、运行时数据区、执行引擎、本地接口以及垃圾收集器。 1. 类加载子系统&#xff08;Class Loader Subsystem&#xf…

ruoyi开发学习

将若依框架中的若依元素删掉 1.删除主目录中的“若依官网”&#xff1a; 在后端项目中&#xff0c;idea里借助mysql管理工具&#xff0c;找到sys_menu数据表&#xff0c;双击打开&#xff0c;找到4 若依官网&#xff0c;选中点击减号&#xff0c;绿色上箭头刷新&#xff0c;删…

计算机网络 (13)信道复用技术

前言 计算机网络中的信道复用技术是一种提高网络资源利用率的关键技术。它允许在一条物理信道上同时传输多个用户的信号&#xff0c;从而提高了信道的传输效率和带宽利用率。 一、信道复用技术的定义 信道复用&#xff08;Multiplexing&#xff09;就是在一条传输媒体上同时传输…

您的公司需要小型语言模型

当专用模型超越通用模型时 “越大越好”——这个原则在人工智能领域根深蒂固。每个月都有更大的模型诞生&#xff0c;参数越来越多。各家公司甚至为此建设价值100亿美元的AI数据中心。但这是唯一的方向吗&#xff1f; 在NeurIPS 2024大会上&#xff0c;OpenAI联合创始人伊利亚…

艾体宝产品丨加速开发:Redis 首款 VS Code 扩展上线!

Redis 宣布推出其首款专为 VS Code 设计的 Redis 扩展。这一扩展将 Redis 功能直接整合进您的集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在简化您的工作流程&#xff0c;提升工作效率。 我们一直致力于构建强大的开发者生态系统&#xff0c;并在您工作的每一步提…

数据挖掘——关联规则挖掘

数据挖掘——关联数据挖掘 关联数据挖掘关联规则关联规则挖掘问题&#xff1a;具体挖掘过程Apriori 产生关联规则 关联数据挖掘 关联分析用于发现隐藏在大型数据集中的令人感兴趣的联系&#xff0c;所发现的模式通常用关联规则或频繁项集的形式表示。 关联规则反映一个事物与…

12.30-1-5学习周报

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 文章链接摘要Abstract一、方法介绍1.HAT-CIR2.Horde3.DWGRNet 二、实验总结 文章链接 https://arxiv.org/pdf/2405.04101 摘要 本博客介绍了论文《Continual lea…

Synopsys软件基本使用方法

Synopsys软件基本使用方法 1 文件说明2 编译流程3 查看波形4 联合仿真 本文主要介绍Synopsys软件vcs、verdi的基本使用方法&#xff0c;相关文件可从 GitHub下载。 1 文件说明 创建verilog源文件add.v、mult.v、top.vmodule add (input signed [31:0] dina,input signed [3…

Linux-Redis哨兵搭建

环境资源准备 主机名IP端口号角色vm1192.168.64.156379/26379mastervm2192.168.64.166379/26379slavevm3192.168.64.176379/26379slave 6379为redis服务暴露端口号、26379为sentinel暴露端口号。 安装Redis # 包文件下载 wget https://github.com/redis/redis/archive/7.2.2…