当前位置:网站首页>使用文件和目录属性和属性
使用文件和目录属性和属性
2022-07-05 18:33:00 【用户7741497】
使用文件和目录属性和属性
%Library.File
类还提供了许多类方法,可以使用这些方法来获取有关文件和目录的信息,或者查看或设置它们的属性和属性。
检查文件和目录是否存在
要确定给定文件是否存在,请使用Existes()
方法并指定文件名作为参数。例如:
DHC-APP>write ##class(%File).Exists("e:\temp\")
1
同样,要找出给定目录是否存在,请使用DirectoryExists()
方法,并将该目录指定为参数。例如:
DHC-APP>write ##class(%File).DirectoryExists("e:\temp")
1
如前所述,这些方法在Unix
上将文件或目录名视为区分大小写,但在Windows上不区分大小写。此外,如果指定部分文件名或目录名,则该方法引用的文件或目录相对于包含正在使用的命名空间的默认全局数据库的目录。例如:
DHC-APP>write ##class(%File).Exists("cache.dat")
1
查看和设置文件和目录权限
%Library.File
类提供了许多类方法,可以使用这些方法查看或设置文件或目录的权限。
查看文件或目录是只读的还是可写的
给定文件或目录名,如果文件或目录是只读的,ReadOnly()
方法返回1,否则返回0:
DHC-APP>write ##class(%File).ReadOnly("export.xml")
1
DHC-APP>write ##class(%File).ReadOnly("E:\temp")
0
同样,给定一个文件或目录名,如果该文件或目录可写,则Writeable()
方法返回1,否则返回0:
DHC-APP>write ##class(%File).Writeable("export.xml")
0
DHC-APP>write ##class(%File).Writeable("e:\temp")
1
将文件或目录设为只读或可写(窗口)
要使Windows上的文件或目录成为只读的,请使用SetReadOnly()
方法,该方法返回一个布尔值来指示成功或失败。此方法采用三个参数,第二个参数在Windows中被省略。第一个参数是文件或目录的名称。第三个参数是输出参数。如果为负,它包含操作系统返回的错误代码,以防方法失败。
在下面的示例中,对SetReadOnly()
的调用成功地将文件"e:\temp\config.txt
更改为只读。
DHC-APP>write ##class(%File).ReadOnly("e:\temp\config.txt")
0
DHC-APP>write ##class(%File).SetReadOnly("e:\temp\config.txt",,.return)
1
DHC-APP>write ##class(%File).ReadOnly("e:\temp\config.txt")
在下面的示例中,对SetReadOnly()
的调用失败,Windows系统错误代码为5,这意味着“访问被拒绝。”
DHC-APP>write ##class(%File).SetReadOnly("C:\",,.return)
0
DHC-APP>w return
-5
要使Windows上的文件或目录可写,请使用SetWriteable()
方法。此方法采用相同的三个参数,第二个参数在Windows中再次被省略。
DHC-APP>write ##class(%File).Writeable("e:\temp\config.txt")
0
DHC-APP>write ##class(%File).SetWriteable("e:\temp\config.txt",,.return)
1
DHC-APP>write ##class(%File).Writeable("e:\temp\config.txt")
1
将文件或目录设为只读或可写(Unix)
在Unix上,也可以使用SetReadOnly()
和SetWriteable()
方法,但是由于第二个参数的存在,它们的行为有些不同。
但是,在Unix中,为所有者、组和用户指定不同的权限。要更好地控制文件和目录权限,请参阅查看或设置文件和目录属性一节。
查看和设置文件和目录属性
要在更详细的级别查看或设置文件或目录的属性,请使用%Library.File
的Attributes()
和SetAttributes()
方法。文件属性由集中表示为整数的位序列表示。各个位的含义取决于底层操作系统。
查看文件和目录属性
%Library.File
的Attributes()
方法需要文件名或目录名作为参数,并返回以整数表示的属性位序列。
以下示例在Windows系统上运行:
DHC-APP>write ##class(%File).Attributes("cache.dat")
32
DHC-APP>write ##class(%File).Attributes("e:\temp")
16
DHC-APP>write ##class(%File).Attributes("secret.zip")
35
DHC-APP>write ##class(%File).Attributes("e:\temp\config.txt")
32
在第一个例子中,32
表示cache.dat
是一个存档文件。在第二个例子中,16
表示C:\temp
是一个目录。在第三个示例中,设置了不止一个位,35
表示secret.zip
是隐藏的(2)和只读的(1)存档(32)。加32 + 2 + 1 = 35
。
以下示例在Unix系统上运行:
write ##class(%File).Attributes("/home")
16877
在本例中,16877
表示/home
是一个目录(16384),拥有者拥有读取(256)、写入(128)和执行(64)权限;读取(32)和执行(8)组权限;并为他人读取(4)和执行(1)权限。加上16384+256+128+64+32+8+4+1 = 16877
。
设置文件和目录属性
相反,SetAttributes()
方法设置文件或目录的属性,并返回一个布尔值来指示成功或失败。这个方法需要三个参数。第一个参数是文件或目录的名称。第二个参数是一个整数,表示文件或目录具有的所需属性。第三个参数是输出参数。如果为负,它包含操作系统返回的错误代码,以防方法失败。
以下示例在Windows上,通过设置1位,使文件e:\temp\config.txt
成为只读文件:
DHC-APP>write ##class(%File).Attributes("e:\temp\config.txt")
32
DHC-APP>write ##class(%File).SetAttributes("e:\temp\config.txt",33,.return)
1
DHC-APP>write ##class(%File).Attributes("e:\temp\config.txt")
33
以下示例在Unix上,将默认目录中文件myfile
的权限从644更改为完全权限(777):
USER>write ##class(%File).Attributes("myfile")
33188
USER>write ##class(%File).SetAttributes("myfile",33279,.return)
1
USER>write ##class(%File).Attributes("myfile")
33279
通过将常规文件(32768)的值与所有者(448)、组(56)和其他人(7)的掩码相加来计算期望的属性值。
查看其他文件和目录属性
%Library.File
的其他类方法允许检查文件和目录的各种其他属性。
GetFileDateCreated()
方法返回以$H格式创建文件或目录的日期:
DHC-APP>write $zdate(##class(%File).GetFileDateCreated("stream"))
04/11/2020
DHC-APP>write $zdate(##class(%File).GetFileDateCreated("e:\temp"))
03/27/2021
注意:Windows是目前唯一跟踪实际创建日期的平台。其他平台存储最后一次文件状态更改的日期。
GetFileDateModified()
方法以$H格式返回文件或目录的修改日期:
DHC-APP>write $zdate(##class(%File).GetFileDateModified("cache.dat"))
07/11/2021
方法返回文件的大小,以字节为单位:
DHC-APP>write ##class(%File).GetFileSize("e:\temp\config.txt")
220
GetDirectorySpace()
方法返回驱动器或目录中的可用空间量和总空间。根据第四个参数(可以是0、1或2)的值,空间可以以字节、MB(默认值)或GB为单位返回。在本例中,2表示空间以GB为单位返回:
DHC-APP>set status = ##class(%File).GetDirectorySpace("C:", .FreeSpace, .TotalSpace, 2)
DHC-APP>write FreeSpace
128.83
DHC-APP>write TotalSpace
247.97
在Windows上,如果将目录名传递给此方法,返回的空间量就是整个驱动器的空间量。
对于GetDirectorySpace()
方法,返回的任何错误状态都是操作系统级错误。在下面的示例中,Windows系统错误代码3表示“系统找不到指定的路径。”
DHC-APP>set status = ##class(%File).GetDirectorySpace("Q:", .FreeSpace, .TotalSpace, 2)
DHC-APP>do $system.Status.DisplayError(status)
错误 #83: 错误代码=3
边栏推荐
- The 11th China cloud computing standards and Applications Conference | cloud computing national standards and white paper series release, and Huayun data fully participated in the preparation
- Share: ZTE Yuanhang 30 Pro root unlock BL magick ZTE 7532n 8040n 9041n brush mask original brush package root method Download
- 2022 latest Android interview written examination, an Android programmer's interview experience
- websocket 工具的使用
- @Extension, @spi annotation principle
- Simple query cost estimation
- Powerful tool for collection processing
- ROS installation error sudo: rosdep: command not found
- 彻底理解为什么网络 I/O 会被阻塞?
- All you want to know about clothing ERP is here
猜你喜欢
蚂蚁集团开源可信隐私计算框架「隐语」:开放、通用
解决 contents have differences only in line separators
MySQL优化六个点的总结
IDEA配置npm启动
How to automatically install pythn third-party libraries
技术分享 | 常见接口协议解析
Reptile 01 basic principles of reptile
Ant group open source trusted privacy computing framework "argot": open and universal
Isprs2022/ cloud detection: cloud detection with boundary nets
AI金榜题名时,MLPerf榜单的份量究竟有多重?
随机推荐
Introduction to Resampling
ConvMAE(2022-05)
Is it safe to open an account and register stocks for stock speculation? Is there any risk? Is it reliable?
Case sharing | integrated construction of data operation and maintenance in the financial industry
vs2017 qt的各种坑
FCN: Fully Convolutional Networks for Semantic Segmentation
ROS安装报错 sudo: rosdep:找不到命令
What is the reason why the video cannot be played normally after the easycvr access device turns on the audio?
Quickly generate IPA package
Lombok @builder annotation
rust统计文件中单词出现的次数
[QNX hypervisor 2.2 user manual]6.3.2 configuring VM
Is it safe to make fund fixed investment on access letter?
案例分享|金融业数据运营运维一体化建设
【HCIA-cloud】【1】云计算的定义、什么是云计算、云计算的架构与技术说明、华为云计算产品、华为内存DDR配置工具说明
LeetCode 6109. Number of people who know the secret
Use QT to traverse JSON documents and search sub objects
基于can总线的A2L文件解析(3)
Whether to take a duplicate subset with duplicate elements [how to take a subset? How to remove duplicates?]
2022最新中高级Android面试题目,【原理+实战+视频+源码】