文件属性详解

合集下载

spring配置文件各个属性详解

spring配置文件各个属性详解

spring配置文件各个属性详解分类:spring 2012-08-09 11:25 9316人阅读评论(2) 收藏举报springaophibernateattributesxhtmlwebsphere目录(?)[+]一、引用外部属性文件<bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>classpath:mail.properties</value><value>classpath:jdbc.properties</value></list></property></bean>我们定义了一个PropertyPlaceholderConfigurer类的实例,并将其位置属性设置为我们的属性文件。

该类被实现为Bean工厂的后处理器,并将使用定义在文件中的属性来代替所有的占位符(${...}value)。

注意:而在spring2.5的版本中提供了一种更简便的方式,如:1.<context:property-placeholderlocation="classpath:config/jdbc.properties"/>这样以后要使用属性文件中的资源时,可以使用${属性名}来获得。

二、常用数据源的配置第一种是:DBCP数据源,(需要加入2个jar文件,在spring中的lib下jakarta-commons/commons-dbcp.jar和commons-pools.jar)主要配置如下:<!-- Mysql版--><bean id="dataSource"class="mons.dbcp.BasicDataSource"><property name="driverClassName"value="com.mysql.jdbc.Driver"></property><property name="url"value="${jdbc.url}"></property><property name="username" value="${ername}"></property><property name="password" value="${jdbc.password}"></property></bean>第二种是:c3p0数据源,跟第一种一个类型,需加入c3p0.jar包。

文件(夹)的属性

文件(夹)的属性

添加桌面小工具
1、控制面板-所有控制面板项-桌面小工具-右键要添加的工具-添加
2、删除桌面小工具 1)右键-删除桌面小工具 2)点击关闭按钮 3、卸载桌面小工具 控制面板-所有控制面板项-桌面小工具-右键要卸载的小工具-卸载-确 定
4、设置日期和时间 控制面板-所有控制面板项-日期和时间-更改日期和时间-确定-确定
2、更改桌面背景 控制面板-所以控制面板项-个性化-更改桌面图标-在“桌面图标设置”里选 中要更改的图标单击“更改图标”-选中要替换的图标或浏览选择-确定-确 定
3、创建桌面快捷方式 1)开始-选择要创建桌面快捷方式的项目-右键-发送到-桌面快捷方式 2)按住Ctrl不放,直接拖拉到桌面
开始-右键项目-锁定到任务 栏 右键项目快捷方式-删除
谢谢!再见!
文件(夹)的属性
文件(夹)属性有4种:只读、隐藏、存档、系统 查看方法: 1、文件-属性 2、右键-属性
系统的设置与优化
字体设置 1、查看字体 开始-控制面板-字体-单击任一字体预览
2、安装字体 1)复制字体粘贴到C:\Windows\Fonts地址的文件夹中 2)快捷方式安装字体-控制面板-字体-字体设置-勾选“允许使用快捷键方 式安装字体”-确定
,选择任一种输入语言。
2、热键法 Ctrl+Space Ctrl+Shift Shift+Space Ctrl+句号键
打开或关闭输入法 循环切换以安装的输入法 全角和半角切换 中、英文符号切换
美化桌面
1、更改桌面背景 控制面板定-确定-保存修 改
3、删除字体 1)控制面板-字体-右键-删除
2)控制面板-文件-删除 3)菜单栏-删除
输入法管理

VBA 中的文件属性与标签操作指南

VBA 中的文件属性与标签操作指南

VBA 中的文件属性与标签操作指南随着计算机技术的不断发展与普及,文件管理成为了我们日常工作中不可避免的一部分。

而在 VBA(Visual Basic for Applications)编程中,文件属性与标签的操作是非常重要的。

本篇文章将向您介绍 VBA 中的文件属性与标签操作指南,帮助您更好地管理和操作文件。

一、文件属性的获取与修改在 VBA 中,我们可以使用 Shell 对象来获取或修改文件的属性。

以下是一些常用的文件属性的获取和修改方法:1. 文件路径和文件名通过 VBA 中的 FileDialog 对象,我们可以创建一个文件对话框并让用户选择文件。

然后,我们可以获取所选文件的路径和文件名,并将其保存到一个变量中,以便后续的操作。

2. 文件大小使用FileLen 函数可以获取文件的大小。

该函数接受文件的完整路径作为参数,返回文件的大小(以字节为单位)。

3. 创建日期和修改日期通过使用 VBA 中的 FileSystemObject 对象,我们可以获取文件的创建日期和修改日期。

使用此对象的 GetFile 方法,将文件路径作为参数传递给该方法,然后可以使用 FileDateTime 属性来获取文件的创建日期和修改日期。

4. 文件类型使用 FileSystemObject 对象的 GetExtensionName 方法,可以获取文件的扩展名。

该方法将文件路径作为参数传递,并返回文件的扩展名。

5. 文件属性使用 FileSystemObject 对象的 GetAttr 方法,可以获取文件的属性。

该方法将文件路径作为参数传递,并返回文件的属性。

例如,如果返回 1,则表示文件为只读属性。

以上是一些常用的文件属性的获取方法。

如果需要修改文件属性,可以使用SetAttr 方法。

这个方法接受文件路径和属性值作为参数,将属性值写入文件的属性中。

请注意,如果要修改文件的只读属性,需要在修改前先将其取消只读。

二、文件标签的操作文件标签是文件的元数据,用于描述文件的特定信息。

iec61850规约SCL文件属性详解

iec61850规约SCL文件属性详解

SCL文件属性详解目录0 前言 (5)1 术语 (5)2 概述 (5)2.1SCL语言介绍 (5)2.2SCL文件分类 (6)3 工程实施过程 (8)3.1公共部分 (8)3.2我们监控与我们装置 (8)3.3我们监控与外厂家装置 (8)3.4我们装置与外厂家监控 (9)4 文件错误验证规则 (9)4.1验证规则概述 (9)4.2语法验证细则 (9)4.2.1 SCL节点 (9)4.2.2 Header节点 (10)4.2.3 History节点 (10)4.2.4 Hitem节点 (10)4.2.5 Communication节点 (11)4.2.6 SubNetwork节点 (11)4.2.7 BitRate节点 (11)4.2.8 ConnectedAP节点 (11)4.2.9 Address节点 (12)4.2.10 P节点 (12)4.2.11 GSE节点 (12)4.2.12 MinTime、MaxTime节点 (12)4.2.13 SMV节点 (12)4.2.14 PhysConn节点 (13)4.2.15 IED节点 (13)4.2.16 Services节点 (14)4.2.17 DynAssociation节点 (14)4.2.18 SettingGroups节点 (14)4.2.19 GetDirectory节点 (15)4.2.20 GetDataObjectDefinition节点 (15)4.2.21 DataObjectDirectory节点 (15)4.2.22 GetDataSetValue节点 (15)4.2.23 SetDataSetValue节点 (15)4.2.24 DataSetDirectory节点 (15)4.2.25 ConfDataSet节点 (15)4.2.26 DynDataSet节点 (15)4.2.27 ReadWrite节点 (16)4.2.28 TimerActivatedControl节点 (16)4.2.29 ConfReportControl节点 (16)4.2.31 ConfLogControl节点 (16)4.2.32 ReportSettings节点 (16)4.2.33 LogSettings节点 (16)4.2.34 GSESettings节点 (17)4.2.35 SMVSettings节点 (17)4.2.36 GSEDir节点 (17)4.2.37 GOOSE节点 (17)4.2.38 GSSE节点 (17)4.2.39 SMV节点 (18)4.2.40 FileHandling节点 (18)4.2.41 ConfLNs节点 (18)4.2.42 ClientServices节点 (18)4.2.43 ConfLdName节点 (18)4.2.44 AccessPoint节点 (18)4.2.45 Server节点 (19)4.2.46 Authentication节点 (19)4.2.47 LDevice节点 (19)4.2.48 LN0节点 (20)4.2.49 DataSet节点 (20)4.2.50 FCDA节点 (21)4.2.51 FCCB节点 (21)4.2.52 ReportControl节点 (21)4.2.53 TrgOps节点 (22)4.2.54 OptFields节点 (22)4.2.55 RptEnabled节点 (23)4.2.56 ClientLN节点 (23)4.2.57 LogControl节点 (23)4.2.58 DOI节点 (24)4.2.59 SDI节点 (24)4.2.60 DAI节点 (24)4.2.61 Val节点 (25)4.2.62 Inputs节点 (25)4.2.63 ExtRef节点 (25)4.2.64 Log节点 (26)4.2.65 GSEControl节点 (26)4.2.66 SampledValueControl节点 (26)4.2.67 SmvOpts节点 (27)4.2.68 SettingControl节点 (27)4.2.69 SCLControl节点 (27)4.2.70 LN节点 (27)4.2.71 AccessControl节点 (28)4.2.72 Association节点 (28)4.2.73 ServerAt节点 (28)4.2.75 Sunject节点 (29)4.2.76 IssuerName节点 (29)4.2.77 SMVSecurity节点 (29)4.2.78 DataTypeTemplates节点 (29)4.2.79 LNodeType节点 (30)4.2.80 DO节点 (30)4.2.81 DOType节点 (30)4.2.82 SDO节点 (31)4.2.83 DA节点 (31)4.2.84 DAType节点 (31)4.2.85 BDA节点 (32)4.2.86 EnumType节点 (32)4.2.87 EnumVal节点 (32)4.3标准验证细则 (33)4.3.1 概述 (33)4.3.2 检查没有引用的LNType[告警] (33)4.3.3 检查没有引用的DOType[告警] (33)4.3.4 检查没有引用的DAType[告警] (33)4.3.5 检查没有引用的EnumType[告警] (33)4.3.6 检查重复的LNType [告警] (33)4.3.7 检查重复的DOType [告警] (33)4.3.8 检查重复的DAType [告警] (33)4.3.9 检查重复的EnumType [告警] (33)4.3.10 检查LN引用的type类型[错误] (33)4.3.11 检查DO引用的type类型[错误] (34)4.3.12 检查SDO引用的type类型[错误] (34)4.3.13 检查DA引用的type类型[错误] (34)4.3.14 检查BDA引用的type类型[错误] (34)4.3.15 检查DA引用的type类型的存在性[错误] (34)4.3.16 检查BDA引用的type类型的存在性[错误] (34)4.3.17检查DataSet中的成员[错误] (34)4.3.18检查BSC中的btype类型是不是Tcmd [错误] (35)4.3.19检查DPS错误[错误] (35)4.3.20检查数据类型EntryTime [错误] (35)4.3.21检查CDC-ING(ENG)-INC(ENC)-INS(ENS) [错误] (35)4.3.22检查ReportControl控制块中的属性name和datSet同名[告警] (35)4.3.23检查LNType扩充的情况[告警] (35)4.4应用验证细则 (35)4.4.1概述 (35)4.4.2检查rptID的唯一性 (35)4.4.3检查LLN0的存在性 (35)4.4.4检查LPHD的存在性 (35)4.4.5检查LLN0实例号 (36)4.4.7检查ClientLN中的iedName在通讯中是否配置 (36)5 常见问题说明 (36)5.1ICD文件错误 (36)5.2系统配置错误 (37)6 参考文献 (37)0 前言随着数字化工程的逐渐增多,我们也应该为数字化普及所涉及到的技术,由原来的少部分人掌握,普及到每个人的身上。

NTFS格式的文件属性

NTFS格式的文件属性

Windows下NTFS权限设置详解随着动网论坛的广泛应用和动网上传漏洞的被发现以及SQL注入式攻击越来越多的被使用,WEBSHELL让防火墙形同虚设,一台即使打了所有微软补丁、只让80端口对外开放的WEB服务器也逃不过被黑的命运。

难道我们真的无能为力了吗?其实,只要你弄明白了NTFS系统下的权限设置问题,我们可以对crackers们说:NO!要打造一台安全的WEB服务器,那么这台服务器就一定要使用NTFS和WindowsNT/2000/2003。

众所周知,Windows是一个支持多用户、多任务的操作系统,这是权限设置的基础,一切权限设置都是基于用户和进程而言的,不同的用户在访问这台计算机时,将会有不同的权限。

DOS是个单任务、单用户的操作系统。

但是我们能说DOS没有权限吗?不能!当我们打开一台装有DOS操作系统的计算机的时候,我们就拥有了这个操作系统的管理员权限,而且,这个权限无处不在。

所以,我们只能说DOS不支持权限的设置,不能说它没有权限。

随着人们安全意识的提高,权限设置随着NTFS的发布诞生了。

WindowsNT里,用户被分成许多组,组和组之间都有不同的权限,当然,一个组的用户和用户之间也可以有不同的权限。

下面我们来谈谈NT中常见的用户组。

Administrators,管理员组,默认情况下,Administrators中的用户对计算机/域有不受限制的完全访问权。

分配给该组的默认权限允许对整个系统进行完全控制。

所以,只有受信任的人员才可成为该组的成员。

PowerUsers,高级用户组,PowerUsers可以执行除了为Administrators组保留的任务外的其他任何操作系统任务。

分配给PowerUsers组的默认权限允许PowerUsers组的成员修改整个计算机的设置。

但PowerUsers不具有将自己添加到Administrators组的权限。

在权限设置中,这个组的权限是仅次于Administrators的。

如何在Windows中设置文件和文件夹的属性

如何在Windows中设置文件和文件夹的属性

如何在Windows中设置文件和文件夹的属性在Windows操作系统中,设置文件和文件夹的属性可以帮助我们更好地管理和组织我们的电脑文件。

通过设置属性,我们可以为文件和文件夹添加描述性的信息,例如作者、主题、关键字等。

同时,设置属性还可以控制文件和文件夹的可见性、只读状态以及其他一些特殊属性。

下面,让我们来了解如何在Windows中设置文件和文件夹的属性。

1. 打开文件资源管理器要设置文件和文件夹的属性,首先需要打开文件资源管理器。

在Windows系统中,可以通过点击桌面左下角的"开始"按钮,并选择"文件资源管理器"来打开。

2. 选择文件/文件夹在文件资源管理器中,浏览到你想要设置属性的文件或文件夹所在的位置。

可以通过单击左侧的目录树或者在地址栏中输入路径来导航。

3. 进入属性对话框选中文件或文件夹后,右键点击并选择"属性"选项。

这将弹出属性对话框,显示该文件或文件夹的详细属性信息。

4. 查看和修改常规属性在属性对话框的"常规"选项卡中,可以查看和修改文件或文件夹的常规属性。

这些属性包括名称、位置、大小、类型以及创建、修改和访问日期等信息。

5. 设置描述性属性在属性对话框的"详细信息"或"摘要"选项卡中,可以设置描述性属性,例如作者、主题、关键字等。

点击相应属性的输入框,可以键入相关信息。

这些属性可以帮助我们更好地组织和搜索文件。

6. 控制可见性和只读属性在属性对话框的"常规"或"安全"选项卡中,可以控制文件或文件夹的可见性和只读属性。

如果需要隐藏文件或文件夹,可以勾选"隐藏"选项。

如果需要禁止对文件进行修改或删除,可以选中"只读"选项。

7. 设置其他属性在属性对话框的其他选项卡中,还可以设置一些其他特殊属性。

Linuxll查看文件属性详解-软硬链接详解

Linuxll查看文件属性详解-软硬链接详解

Linuxll查看⽂件属性详解-软硬链接详解Linux⽂件属性及类型[root@localhost ~]# ll anaconda-ks.cfg⽂件类型权限硬连接数⽂件的⼤⼩⽂件的创建,修改时间- rw-------. 1 root root 1379 3⽉ 12 17:43 anaconda-ks.cfg[root@localhost ~]# ll -d zls⽂件类型权限硬连接数所属⽤户所属⽤户组⽂件的⼤⼩⽂件的创建修改时间d rwxr-xr-x. 2 root root 6 3⽉ 12 18:00⽂件名zls-:普通⽂件d:⽬录⽂件rw- --- --- :权限rwx r-x r-x :权限r:读 readw:写 writex:执⾏权限 executeLinux系统⽂件的类型ll 查看file # 查看⽂件类型- 普通⽂件d directory ⽬录⽂件c char 字符设备⽂件b block 块设备⽂件(⽤来存储数据的设备)s socket,安全套接字⽂件l link 软链接⽂件(快捷⽅式)p pipe 管道⽂件注意:通过颜⾊或者后缀判断⽂件类型不⼀定准确.系统链接⽂件⼀个⽂件分为两部分:真实数据 block元数据 inodeblock:真实数据占⽤的空间,默认⼀个block 4k,使⽤下⾯命令查看df -hinode:元数据占⽤的空间,形容⽂件属性。

df -i # 查看inode使⽤情况ls -i # 查看⽂件inode模拟inode占满场景[root@oldboy dev]# dd if=/dev/zero of=/opt/disk bs=1K count=1024 1024+0 records in1024+0 records out1048576 bytes (1.0 MB) copied, 0.00210524 s, 498 MB/s[root@oldboy dev]# ll /opt/disk-rw-r--r-- 1 root root 1048576 Mar 25 22:22 /opt/disk[root@oldboy dev]# mkfs.ext4 -i 1024 /opt/diskmke2fs 1.42.9 (28-Dec-2013)/opt/disk is not a block special device.Proceed anyway? (y,n) [root@oldboy dev]# mkfs.ext4 -i 1024 /opt/disk mke2fs 1.42.9 (28-Dec-2013)/opt/disk is not a block special device.Proceed anyway? (y,n) yFilesystem too small for a journalDiscarding device blocks: doneFilesystem label=OS type: LinuxBlock size=1024 (log=0)Fragment size=1024 (log=0)Stride=0 blocks, Stripe width=0 blocks1024 inodes, 1024 blocks51 blocks (4.98%) reserved for the super userFirst data block=1Maximum filesystem blocks=10485761 block group8192 blocks per group, 8192 fragments per group1024 inodes per groupAllocating group tables: doneWriting inode tables: doneWriting superblocks and filesystem accounting information: done[root@oldboy dev]# mkdir /data1[root@oldboy dev]# mount -t ext4 -o loop /opt/disk /data1[root@oldboy dev]# df -hFilesystem Size Used Avail Use% Mounted on/dev/sda3 28G 1.5G 27G 6% /devtmpfs 476M 0 476M 0% /devtmpfs 487M 0 487M 0% /dev/shmtmpfs 487M 7.6M 479M 2% /runtmpfs 487M 0 487M 0% /sys/fs/cgroup/dev/sda1 497M 120M 378M 25% /boottmpfs 98M 0 98M 0% /run/user/0/dev/sr0 4.3G 4.3G 0 100% /mnt/dev/loop0 891K 21K 799K 3% /data1[root@oldboy dev]# df -iFilesystem Inodes IUsed IFree IUse% Mounted on/dev/sda3 14423552 31519 14392033 1% /devtmpfs 121779 379 121400 1% /devtmpfs 124487 1 124486 1% /dev/shmtmpfs 124487 704 123783 1% /runtmpfs 124487 16 124471 1% /sys/fs/cgroup/dev/sda1 256000 326 255674 1% /boottmpfs 124487 1 124486 1% /run/user/0/dev/sr0 0 0 0 - /mnt/dev/loop0 1024 11 1013 2% /data1[root@oldboy dev]# cd /data1/# 尝试创建1024个⽂件到1014的时候就创建不了了。

iec61850规约SCL文件属性详解

iec61850规约SCL文件属性详解

SCL文件属性详解目录0 前言 51 术语 52 概述 52.1 SCL语言介绍 52.2 SCL文件分类 63 工程实施过程 83.1 公共部分 83.2 我们监控与我们装置 83.3 我们监控与外厂家装置 83.4 我们装置与外厂家监控 94 文件错误验证规则 94.1 验证规则概述 94.2 语法验证细则 94.2.1 SCL节点 94.2.2 Header节点 104.2.3 History节点 104.2.4 Hitem节点 104.2.5 Communication节点 114.2.6 SubNetwork节点 114.2.7 BitRate节点 114.2.8 ConnectedAP节点 114.2.9 Address节点 124.2.10 P节点 124.2.11 GSE节点 124.2.12 MinTime、MaxTime节点 124.2.13 SMV节点 124.2.14 PhysConn节点 134.2.16 Services节点 144.2.17 DynAssociation节点 144.2.18 SettingGroups节点 144.2.19 GetDirectory节点 154.2.20 GetDataObjectDefinition节点 15 4.2.21 DataObjectDirectory节点 154.2.22 GetDataSetValue节点 154.2.23 SetDataSetValue节点 154.2.24 DataSetDirectory节点 154.2.25 ConfDataSet节点 154.2.26 DynDataSet节点 154.2.27 ReadWrite节点 164.2.28 TimerActivatedControl节点 16 4.2.29 ConfReportControl节点 164.2.30 GetCBValue节点 164.2.31 ConfLogControl节点 164.2.32 ReportSettings节点 164.2.33 LogSettings节点 164.2.34 GSESettings节点 174.2.35 SMVSettings节点 174.2.36 GSEDir节点 174.2.37 GOOSE节点 174.2.38 GSSE节点 174.2.39 SMV节点 184.2.40 FileHandling节点 184.2.41 ConfLNs节点 184.2.42 ClientServices节点 184.2.43 ConfLdName节点 184.2.44 AccessPoint节点 184.2.45 Server节点 194.2.46 Authentication节点 194.2.47 LDevice节点 194.2.48 LN0节点 204.2.49 DataSet节点 204.2.50 FCDA节点 214.2.52 ReportControl节点 214.2.53 TrgOps节点 224.2.54 OptFields节点 224.2.55 RptEnabled节点 234.2.56 ClientLN节点 234.2.57 LogControl节点 234.2.58 DOI节点 244.2.59 SDI节点 244.2.60 DAI节点 244.2.61 Val节点 254.2.62 Inputs节点 254.2.63 ExtRef节点 254.2.64 Log节点 264.2.65 GSEControl节点 264.2.66 SampledValueControl节点 26 4.2.67 SmvOpts节点 274.2.68 SettingControl节点 274.2.69 SCLControl节点 274.2.70 LN节点 274.2.71 AccessControl节点 284.2.72 Association节点 284.2.73 ServerAt节点 284.2.74 GOOSESecurity节点 284.2.75 Sunject节点 294.2.76 IssuerName节点 294.2.77 SMVSecurity节点 294.2.78 DataTypeTemplates节点 29 4.2.79 LNodeType节点 304.2.80 DO节点 304.2.81 DOType节点 304.2.82 SDO节点 314.2.83 DA节点 314.2.84 DAType节点 314.2.85 BDA节点 324.2.86 EnumType节点 324.2.87 EnumVal节点 324.3 标准验证细则 334.3.1 概述 334.3.2 检查没有引用的LNType[告警] 334.3.3 检查没有引用的DOType[告警] 334.3.4 检查没有引用的DAType[告警] 334.3.5 检查没有引用的EnumType[告警] 334.3.6 检查重复的LNType [告警] 334.3.7 检查重复的DOType [告警] 334.3.8 检查重复的DAType [告警] 334.3.9 检查重复的EnumType [告警] 334.3.10 检查LN引用的type类型[错误] 334.3.11 检查DO引用的type类型[错误] 344.3.12 检查SDO引用的type类型[错误] 344.3.13 检查DA引用的type类型[错误] 344.3.14 检查BDA引用的type类型[错误] 344.3.15 检查DA引用的type类型的存在性[错误] 344.3.16 检查BDA引用的type类型的存在性[错误] 344.3.17检查DataSet中的成员[错误] 344.3.18检查BSC中的btype类型是不是Tcmd [错误] 354.3.19检查DPS错误 [错误] 354.3.20检查数据类型EntryTime [错误] 354.3.21检查CDC-ING(ENG)-INC(ENC)-INS(ENS) [错误] 35 4.3.22检查ReportControl控制块中的属性name和datSet同名[告警] 354.3.23检查LNType扩充的情况[告警] 354.4 应用验证细则 354.4.1概述 354.4.2检查rptID的唯一性 354.4.3检查LLN0的存在性 354.4.4检查LPHD的存在性 354.4.5检查LLN0实例号 364.4.6检查logName与LD一致 364.4.7检查ClientLN中的iedName在通讯中是否配置 365 常见问题说明 365.1 ICD文件错误 365.2 系统配置错误 376 参考文献 370 前言随着数字化工程的逐渐增多,我们也应该为数字化普及所涉及到的技术,由原来的少部分人掌握,普及到每个人的身上。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

linux中各种文件类型普通文件(- regular file)(1)文本文件。

文件中的内容是由文本构成的,文本指的是ASCII码字符。

文件里的内容本质上都是数字(不管什么文件内容本质上都是数字,因为计算机中本身就只有1和0),而文本文件中的数字本身应该被理解为这个数字对应的ASCII码。

常见的.c 文件, .h文件 .txt文件等都是文本文件。

文本文件的好处就是可以被人轻松读懂和编写。

所以说文本文件天生就是为人类发明的。

(2)二进制文件。

二进制文件中存储的本质上也是数字,只不过这些数字并不是文字的编码数字,而是就是真正的数字。

常见的可执行程序文件(gcc编译生成的a.out,arm-linux-gcc编译连接生成的.bin)都是二进制文件。

(3)对比:从本质上来看(就是刨除文件属性和内容的理解)文本文件和二进制文件并没有任何区别。

都是一个文件里面存放了数字。

区别是理解方式不同,如果把这些数字就当作数字处理则就是二进制文件,如果把这些数字按照某种编码格式去解码成文本字符,则就是文本文件。

(4)我们如何知道一个文件是文件文件还是二进制文件?在linux系统层面是不区分这两个的(譬如之前学过的open、read、write等方法操作文件文件和二进制文件时一点区别都没有),所以我们无法从文件本身准确知道文件属于哪种,我们只能本来就知道这个文件的类型然后用这种类型的用法去用他。

有时候会用一些后缀名来人为的标记文件的类型。

(5)使用文本文件时,常规用法就是用文本文件编辑器去打开它、编辑它。

常见的文本文件编辑器如vim、gedit、notepad++、SourceInsight等,我们用这些文本文件编辑器去打开文件的时候,编辑器会read读出文件二进制数字内容,然后按照编码格式去解码将其还原成文字展现给我们。

如果用文本文件编辑器去打开一个二进制文件会如何?这时候编辑器就以为这个二进制文件还是文本文件然后试图去将其解码成文字,但是解码过程很多数字并不对应有意义的文字所以成了乱码。

(6)反过来用二进制阅读工具去读取文本文件会怎么样?得出的就是文本文字所对应的二进制的编码。

目录文件(d directory)(1)目录就是文件夹,文件夹在linux中也是一种文件,不过是特殊文件。

用vi打开一个文件夹就能看到,文件夹其实也是一种特殊文件,里面存的内容包括这个文件的路径,还有文件夹里面的文件列表。

(2)但是文件夹这种文件比较特殊,本身并不适合用普通的方式来读写。

linux中是使用特殊的一些API来专门读写文件夹的。

字符设备文件(c character)块设备文件(b block)(1)设备文件对应的是硬件设备,也就是说这个文件虽然在文件系统中存在,但是并不是真正存在于硬盘上的一个文件,而是文件系统虚拟制造出来的(叫虚拟文件系统,如/dev /sys /proc等)(2)虚拟文件系统中的文件大多数不能或者说不用直接读写的,而是用一些特殊的API产生或者使用的,具体在驱动阶段会详解。

管道文件(p pipe)套接字文件(s socket)符号链接文件(l link)常用文件属性获取stat、fstat、lstat函数简介(1)每个文件中都附带了这个文件的一些属性(属性信息是存在于文件本身中的,但是它不像文件的内容一样可以被vi打开看到,属性信息只能被专用的API打开看到)(2)文件属性信息查看的API有三个:stat、fstat、lstat,三个作用一样,参数不同,细节略有不同。

(3)linux命令行下还可以去用stat命令去查看文件属性信息,实际上stat命令内部就是使用stat系统调用来实现的。

(4)stat这个API的作用就是让内核将我们要查找属性的文件的属性信息结构体的值放入我们传递给stat函数的buf中,当stat这个API调用从内核返回的时候buf中就被填充了文件的正确的属性信息,然后我们通过查看buf这种结构体变量的元素就可以得知这个文件的各种属性了。

(5)fstat和stat的区别是:stat是从文件名出发得到文件属性信息结构体,而fstat是从一个已经打开的文件fd出发得到一个文件的属性信息。

所以用的时候如果文件没有打开(我们并不想打开文件操作而只是希望得到文件属性)那就用stat,如果文件已经被打开了然后要属性那就用fstat效率会更高(stat是从磁盘去读取文件的,而fstat是从内存读取动态文件的)。

(6)lstat和stat/fstat的差别在于:对于符号链接文件,stat和fstat查阅的是符号链接文件指向的文件的属性,而lstat查阅的是符号链接文件本身的属性。

struct stat结构体简介(1)struct stat是内核定义的一个结构体,在<sys/stat.h>中声明,所以我们可以用。

这个结构体中的所有元素加起来就是我们的文件属性信息。

stat函数的应用案例用代码判断文件类型(1)文件类型就是-、d、l·(2)文件属性中的文件类型标志在struct stat结构体的mode_t st_mode元素中,这个元素其实是一个按位来定义的一个位标志(有点类似于ARM CPU的CPSR寄存器的模式位定义)。

这个东西有很多个标志位共同构成,记录了很多信息,如果要查找时按位&操作就知道结果了,但是因为这些位定义不容易记住,因此linux系统给大家事先定义好了很多宏来进行相应操作。

(3)譬如S_ISREG宏返回值是1表示这个文件是一个普通文件,如果文件不是普通文件则返回值是0.用代码判断文件权限设置(1)st_mode中除了记录了文件类型之外,还记录了一个重要信息:文件权限。

(2)linux并没有给文件权限测试提供宏操作,而只是提供了位掩码,所以我们只能用位掩码来自己判断是否具有相应权限。

st_mode中记录的文件权限位(1)st_mode本质上是一个32位的数(类型就是unsinged int),这个数里的每一个位表示一个含义。

(2)文件类型和文件的权限都记录在st_mode中。

我们用的时候使用专门的掩码去取出相应的位即可得知相应的信息。

ls -l打印出的权限列表(1)123456789一共9位,3个一组。

第一组三个表示文件的属主(owner、user)对该文件的可读、可写、可执行权限;第2组3个位表示文件的属主所在的组(group)对该文件的权限;第3组3个位表示其他用户(others)对该文件的权限。

(2)属主就是这个文件属于谁,一般来说文件创建时属主就是创建这个文件的那个用户。

但是我们一个文件创建之后还可以用chown命令去修改一个文件的属主,还可以用chgrp命令去修改一个文件所在的组。

文件操作时的权限检查规则(1)一个程序a.out被执行,a.out中试图去操作一个文件1.txt,这时候如何判定a.out是否具有对1.txt的某种操作权限呢?(2)判定方法是:首先1.txt具有9个权限位,规定了3种人(user、group、others)对该文件的操作权限。

所以我们判定1.txt是否能被a.out来操作,关键先搞清楚a.out对1.txt到底算哪种人。

准确的说是看a.out被谁执行,也就是当前程序(进程)是哪个用户的进程。

(3)刚才上面说的是我的分析,到底对不对还得验证。

access函数检查权限设置(1)文本权限管控其实蛮复杂,一般很难很容易的确定对一个文件是否具有某种权限。

设计优秀的软件应该是:在操作某个文件之前先判断当前是否有权限做这个操作,如果有再做如果没有则提供错误信息给用户。

(2)access函数可以测试得到当前执行程序的那个用户在当前那个环境下对目标文件是否具有某种操作权限。

chmod/fchmod与权限修改(1)chmod是一个linux命令,用来修改文件的各种权限属性。

chmod命令只有root用户才有权利去执行修改。

(2)chmod命令其实内部是用linux的一个叫chmod的API实现的。

chown/fchown/lchown与属主修改(1)linux中有个chown命令来修改文件属主(2)chown命令是用chown API实现的umask与文件权限掩码(1)文件掩码是linux系统中维护的一个全局设置,umask的作用是用来设定我们系统中新创建的文件的默认权限的。

(2)umask命令就是用umask API实现的opendir与readdir函数(1)opendir打开一个目录后得到一个DIR类型的指针给readdir使用(2)readdir函数调用一次就会返回一个struct dirent类型的指针,这个指针指向一个结构体变量,这个结构体变量里面记录了一个目录项(所谓目录项就是目录中的一个子文件)。

(3)readdir调用一次只能读出一个目录项,要想读出目录中所有的目录项必须多次调用readdir函数。

readdir函数内部户记住哪个目录项已经被读过了哪个还没读,所以多次调用后不会重复返回已经返回过的目录项。

当readdir函数返回NULL时就表示目录中所有的目录项已经读完了。

可重入函数介绍(1)有些函数是可重入的有些是不可重入的,具体概念可以去百度。

(2)readdir函数和我们前面接触的一些函数是不同的,首先readdir函数直接返回了一个结构体变量指针,因为readdir内部申请了内存并且给我们返回了地址。

多次调用readdir其实readir内部并不会重复申请内存而是使用第一次调用readdir时分配的那个内存。

这个设计方法是readdir不可重入的关键。

(3)readdir在多次调用时是有关联的,这个关联也标明readdir函数是不可重入的。

(4)库函数中有一些函数当年刚开始提供时都是不可重入的,后来意识到这种方式不安全,所以重新封装了C库,提供了对应的可重复版本(一般是不可重入版本函数名_r)。

相关文档
最新文档