有的时候我们会需要处理到文件的一些属性,比如说只读、隐藏之类的,
我这里大概说下在WIN32下如何取得和修改文件的属性。
需要: use Win32::File;
然后使用如下方法:
my $set;
#取得文件的属性
Win32::File::GetAttributes($name, $set);
#设置文件的属性
Win32::File::SetAttributes($name, ARCHIVE);
在perldoc里,可供设置的属性如下:
- 存档文件 32
- 压缩文件 2048
- 目录文件 16
- 隐藏文件 2
- 正常文件 128
- 脱机文件 4096
- 只读文件 1
- 系统文件 4
- 临时文件 256
-
- 为了方面理解,我在程序里把每个选项对应的数值都打印出来附在后面了,
- 每个选项都是只占一位的,因此我们可以用或|来同时应用多个属性,如下:
-
- Win32::File::SetAttributes($name, |);
- 这样你就发现你的文件同时是隐藏和存档文件了.^_^
use Win32::File;
Win32::File::SetAttributes($name, $attr);
#!/usr/bin/perl -w
use Win32::File;
$name = "yourFile.txt";
$attr = 0;
Win32::File::GetAttributes($name, $attr) or die "Can't get attributes for $name.";
print "File attributes: $attr\n";
if ($attr & READONLY) {
print "$name is read only.\n";
}
if ($attr & ARCHIVE) {
print "$name has ARCHIVE set.\n";
}
if ($attr & HIDDEN) {
print "$name is hidden.\n";
}
if ($attr & SYSTEM) {
print "$name has SYSTEM set.\n";
}
if ($attr & COMPRESSED) {
print "$name has COMPRESSED set.\n";
}
if ($attr & DIRECTORY) {
print "$name has DIRECTORY set.\n";
}
if ($attr & NORMAL) {
print "$name has NORMAL set.\n";
}
if ($attr & OFFLINE) {
print "$name has OFFLINE set.\n";
}
if ($attr & TEMPORARY) {
print "$name has TEMPORARY set.\n";
}
阅读(1983) | 评论(0) | 转发(0) |