Windows和Unix中的文件扩展名有哪些规则?

时间:2009-01-07 10:01:30

标签: parsing filenames

我目前正在使用File :: Basename fileparse来分离文件的目录,基本文件名及其扩展名,使用类似这样的内容:

my($myfile_name,$mydirectory, $file_extension) = fileparse($$rhash_params{'storage_full_path_location'},'\..{1,4}');

但是看到有一个变体你可以实际为函数提供一个后缀数组,该数组将包含所有已知的文件扩展名。

所以我试图找到一种安全的方法,因为我已经看到我有一些奇怪的文件名要处理,即file.0f1.htm等。

问题:

  1. 是否有常用的清单 Windows和Unix的扩展 系统?但在我的情况下,它主要是 对于Windows。
  2. 安全吗?     假设所有文件名都在     Windows应该有一个扩展名     以三个字母字符结尾?
  3. 如果还有更好的方法,请分享。

    感谢。

    更新

    显然我必须喝醉才能忘记其他扩展。 :) 因此,我已经更新了当前正则表达式以允许1-4chars。

    在这种情况下,我应该如何更改我的正则表达式线以正确匹配它? 或者更好的想法是从谷歌中寻找所有常用的扩展并将它们放入一个数组中以传递给函数?我的用户通常是学生或老师。

2 个答案:

答案 0 :(得分:3)

  

1。是否有Windows和Unix常用扩展名列表   系统?但在我的情况下,它主要是   对于Windows。

是的,加载,遍布互联网:http://www.google.com/search?q=common+file+extensions

  

2。假设Windows中的所有文件名都应该是安全的   以三个字母结尾的扩展名   字符?

不,完全可以在Windows中使用'.c''.java'等。

答案 1 :(得分:1)

您的代码中有几个错误假设:

  • 文件不需要扩展名。例如,Unix / Linux / ...上的大多数二进制可执行文件根本没有扩展名。他们简单地称为“bash”,“wget”,“sed”,“Xorg”,......
  • 扩展名不能长达三个字符,因为@Alnitak已经告诉过你:“。c”,“。java”,“。mpeg”,“。jpeg”,“。html”都非常好而且相当宽传播扩展
  • 最后切割“。”可能是更安全,但仍然可以失败的文件没有扩展或多个(或多部分)扩展,如“.tar.gz”,“tar.bz2”,这通常发生在Unix / Linux / .. 。世