文件 IO

“文件”是一个广义的概念。①硬盘上的普通文件 ②硬盘上的目录(文件夹)

很多的硬件设备,也是被操作系统抽象成文件,如:键盘,显示器,网卡。

fprintf  fscanf -> 针对文件来输入输出。

fprintf(STDOUT,"hello")=> 这个代码也可以在屏幕上显示,效果等同于printf



机械硬盘

对于机械硬盘来说,更擅长顺序读写,不擅长随机读写。

        顺序读写:有一个很大的文件,要把文件整体复制一下 =>一般不太需要移动磁头,速度快

        随机读写:某个目录中,有很多小文件(每个文件都很小,文件数目特别多)要把整个目录都拷贝一下。=> 磁头需要不停的移动,去找位置,再小也有质量(物理学)受限于牛顿第二定律,克服惯性做功,就需消耗更多的时间。=> 软件的特性受限于硬件设备,硬件设备的特征受限于物理学原理。

        这些小文件在硬盘上存储不是连续的,而是离散的,可能出现在硬盘的各个位置上。

磁头 =>很细的针头能够感知到磁性的变化。悬停在盘片的不同位置,就能感知到磁性数据信息。

everything

Windows的文件搜索工具。使用windows自带的文件搜索功能速度非常慢。

核心思想:“空间换时间”

        everything中内置了一个小的数据库,就会在最初安装好的时候,把你的整个文件系统都进行一个遍历,把这里的信息都拿到,存储到内置的数据库中,后续再搜索时,不是去遍历,而是直接去内置的数据库里查询。

        everything还能感知硬盘上的变化,如创建文件/删除文件/重命名,都能感知到并更新自己的数据库。

        everything扫描系统时,并非单纯的目录级别的遍历,也会用到NTFS(Windows自带的文件系统)文件系统中内置的索引信息。

文件系统

操作系统有一个专门的模块 => 文件系统(把硬件细节封装好,提高统一的api来供调用

        此处文件系统时按照“树形结构”来组织文件的。每一个普通文件(非目录)就是叶子节点,一个目录文件里面有很多的子节点。

        操作系统,使用“路径”这样的概念来描述一个具体文件的位置。 例如:C:\User\...\test.txt

        从根节点出发(Windows上是从盘符出发)一级一级往下走,走到目标文件,把中间经过的所有目录的名字都穿起来,使用/或\分割,构成了“路径”。

        先有文件,然后根据这个文件所处的位置,找到它的路径,记录这个路径之后,下次再找就能沿着路径快速找到这个文件

路径有两种不同的风格:

1、绝对路径:从根节点出发,(Windows为盘符)一层一层最终到达目标文件。

2、相对路径:先指定一个“当前目录”/“工作目录”/“基准目录”出发,找到目标文件。

二进制文件的内容都是合法的字符,存储任何数据都可以。

字符编码: 普通英文字母:ASCII,汉字gbk/utf8

        无论哪种方式,都有一个“码表”,文件中存储的数据都是在指定码表上有据可查=> 合法的字符。此时这个文件就是文本文件。 

文本文件和二进制文件代码操作的方式是有差别的。使用记事本来判定。

使用记事本打开,不是乱码。 => 文本文件:文本文档 .c  .java  .cpp

使用记事本打开,是乱码。=> 二进制文件:图片,音频,视频,可执行程序,动态库,.class

        word .docx / excel .xlsx / power point .pptx(富文本,比普通文本内容丰富)

Java对文件操作的API

1、针对文件系统的操作(右键某个目录的时候,能够进行的一些操作)

        创建、删除、重命名文件,列出文件内容...

2、针对文件内容的操作:读文件/写文件

Java中针对文件系统的操作,使用File类来进行,该类所在包为java.io =>input和output

属性

pathSeparator        static String 

pathSeparator        static char

路径之间的分隔符,根据系统自动调整的,实际开发中建议使用/

构造方法

File(File parent,String child) => 根据父目录+孩子文件路径

File(String pathanme) => 构造一个File对象,要指定路径,绝对路径/相对路径。

        1)如果是直接在idea上运行程序,此时的工作目录就是项目所在目录

        2)如果是把代码打包成一个单独的jar包,此时的工作目录就是jar包所在的目录。

File(String parent,String child)

其他方法

getParent()        String        返回File对象的父目录文件路径

getName()        String        返回File对象的纯文件名称

getPath()        String        返回File对象的文件路径

getAbsolutePath()        String        返回File对象的绝对路径

getCanonicalPath()        String        返回File对象的修饰过的绝对路径

exists()        boolean        判断File对象描述的文件是否真实存在

isDirectory()        boolean        判断File对象代表的文件是否是一个目录

isFile()        boolean        判断File对象代表的文件是否是一个普通文件

createNewFile()        boolean        根据File对象,自动创建一个空文件,成功创建后返回true

delete()        boolean        根据File对象,删除该文件,成功删除后返回true

deleteOnExit()        void     根据File对象,标注文件将被删除,删除动作会到jvm运行结束才会进行

list()        String[]        返回File对象代表的目录下的所有文件名

listFiles()        File[]         返回File对象代表的目录下的所有文件,以File对象表示

mkdir()        boolean        创建File对象代表的目录

mkdirs()        boolean        创建File对象代表的目录,如果必要会创建中间目录

renameTo(File dest)        boolean        进行文件改名,也可视为平时的剪切,粘贴操作

canRead()        boolean        判断用户是否对文件有可读操作

canWrite()        boolean        判断用户是否对文件有可写操作

 

CAN长字节DM1报文是指在CAN总线上传输的长度超过8个字节的DM1报文。根据引用\[1\],当要传输的数据长度超过8个字节时,首先使用TPCM进行广播,广播内容包含即将传输报文的PGN、总的数据包长度等信息,然后使用TP.DT进行数据传输。相邻两个TP.DT之间的时间间隔是50ms到200ms。根据引用\[2\],当字节数大于8时,将会使用多帧传输参数组。根据引用\[3\],DM1报文是Diagnostic Message 1, Active Diagnostic Trouble Codes的缩写,用于点亮故障指示灯、红色停机灯等,并周期性播报控制器中处于激活状态的故障码。DM1报文的格式包括各个字节的定义,如故障指示灯、红色停机灯、琥珀色警告指示灯等。因此,CAN长字节DM1报文是指在CAN总线上传输的长度超过8个字节的DM1报文,用于传输更多的故障码信息。 #### 引用[.reference_title] - *1* [车载通信——J1939 DM1](https://blog.csdn.net/weixin_64064747/article/details/130193432)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [J1939广播DM1报文](https://blog.csdn.net/mengdeguodu_/article/details/108173263)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [J1939商用车在线诊断DM1报文](https://blog.csdn.net/traveller93/article/details/120735912)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值