windows 在文件打开时不可修改文件名是出于什么考虑

2015 年 3 月 28 日
 EXDestroyer

我听说mac os是可以的,不知道微软这样做有什么目的,按理说,文件名和内容都应该属于可编辑的部分?

3783 次点击
所在节点    问与答
13 条回复
hjc4869
2015 年 3 月 28 日
然后Unix下一个程序执行着执行着就不知道它自己叫什么了。
wheatcc
2015 年 3 月 28 日
@hjc4869 好喜感。2333
Orzzzz
2015 年 3 月 28 日
以下为个人推敲,如有错误还请大家帮忙指正,谢谢。

windows下可能没有swp机制吧,在unix下进行文件操作并不是直接操作文件,而是打开了一个缓冲文件,也可以看做是备份文件,如果用vim的话就可以很清楚的看到一个隐藏文件并且后缀名为swp,用gedit就会看到后缀名为~的文件。结束操作的时候会将操作写入到文件中,更改修改时间等等。
我也测试了很多编辑器,打开文件的时候更改了名字,保存,会产生一个新的文件,文件名与源文件相同。
如果是系统不允许更改的,大概就是sock文件了,那些都是锁起来的,不能更改。大概windows下的所有文件在打开的时候都上了锁吧。

windows下的文件备份,从来就没有linux下的好。这也是我不用windows的原因。
9hills
2015 年 3 月 28 日
@Orzzzz 那是某些特殊程序的处理,和操作系统没关系。。
hjc4869
2015 年 3 月 28 日
@Orzzzz 用Windows下的vim打开也是会有的。
Linux下也可以锁文件,只是默认不锁而已。
typcn
2015 年 3 月 28 日
对服务器软件平滑升级有很大帮助
endrollex
2015 年 3 月 28 日
Win试了下,打开时可以修改文件名的啊,mspaint,notepad都没问题
EXDestroyer
2015 年 3 月 28 日
@endrollex 我其实想说的是word excel或者其他一些文件
Orzzzz
2015 年 3 月 28 日
@9hills
@hjc4869
好吧,谢谢你们。
zhjits
2015 年 3 月 28 日
有些软件打开文件的时候会上锁
billlee
2015 年 3 月 28 日
@endrollex 那是那些软件一次性读取完文件后就把文件关掉了,
msg7086
2015 年 3 月 29 日
#3 @Orzzzz 基本是错的。

Linux下打开文件只涉及inode而不涉及目录表项,所以只要锁inode就行了。
文件名属于目录表项里的记录,可以随便改的,删除也可以,因为只是删除记录而非销毁文件。

Windows下则是以目录表项为单位,一锁就把文件的硬链地址给锁了。
最恶心的是如果一个文件有两个硬链接,一个A一个B,如果A被打开了,我连B都删不了,简直坑。
Orzzzz
2015 年 3 月 29 日
@msg7086 已送出感谢~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/179958

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX