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

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

    }

 

 


http://www.kler.cn/a/461754.html

相关文章:

  • 双指针算法详解
  • 【区块链】零知识证明基础概念详解
  • 软考教材重点内容 信息安全工程师 第 12 章网络安全审计技术原理与应用
  • 38 Opencv HOG特征检测
  • C++ —— 模板类扩展
  • 家政上门小程序如何创建?家政服务怎么能少了小程序帮手
  • Elasticsearch:探索 Elastic 向量数据库的深度应用
  • vue2实现txt文件在线预览
  • 通过服务器推送消息:Websocket和SSE解释
  • Kafka为什么要放弃Zookeeper
  • 医疗实时数仓环境配置与ods层
  • Conda 命令教程
  • 折叠手机突然折翅,折叠屏采购暴跌,苹果挽救或是幻想
  • 一维前缀和,二维前缀和
  • 文章解读与仿真程序复现思路——EI\CSCD\北大核心《基于模型预测控制的掺氢微能源网低碳经济调度 》
  • Java Excel转PDF POI+Itext5
  • 【无线传感网】WSN数据管理技术
  • 自学记录鸿蒙API 13:Calendar Kit日历功能从学习到实践
  • 面试题解,JVM的运行时数据区
  • 【杂谈】-快速了解协作机器人
  • 推荐5款局域网IP扫描工具,支持电脑+Android!
  • 什么是递归解析服务器?它有什么特点
  • 正则表达式中,`$1` 是一个反向引用(backreference),它代表了匹配过程中捕获的第一个子表达式(即第一个括号内的内容)
  • 速盾:服务器CDN加速解析的好处有哪些呢?
  • leetcode热题100(79. 单词搜索)dfs回溯 c++
  • JWT包中的源码分析【Golang】