【问题标题】:Dos and don'ts of using files使用文件的注意事项
【发布时间】:2008-11-10 00:15:33
【问题描述】:

我正在为编程课的初级学生准备关于文件的讲座。我要阐述的要点之一是文件的良好做法。

在任何编程语言中使用文件时要记住什么?

【问题讨论】:

    标签: file dos-donts


    【解决方案1】:
    • 可以认为文件包含一组记录,每个记录可以是固定长度或以分隔符结尾。

    • 文件通常针对顺序访问进行优化,而不是随机访问。很难将数据插入到文件的中间,而且线性处理文件(如盒式磁带)通常比随机处理文件(如“随机播放”模式下的 CD)更快。

    • 随机存取文件通常包含固定长度的记录,其中大部分包含空白空间,这使得它们比顺序存取文件大。

    • 文件是喜怒无常且不可预测的生物。他们可以更改长度、消失、更改访问权限,。在访问之间,所以请仔细验证您的操作并检查返回码

    • 如果从头(尾)读取并写入尾(头),文件可以用作缓冲区

    • 刷新缓冲区!

    既然还没有人这么说:这应该让你的学生掌握这个主题。

    【讨论】:

    • 我认为您应该说“文件是连续的,很难将数据插入文件中间”。文件是否是随机访问是底层存储介质的属性。通常, fseek 效果很好。难以插入中间的是它们的逻辑连续性。
    • 好点;我原来的想法太模糊了。我希望编辑更清晰——谢谢!
    【解决方案2】:

    我发现初级程序员在访问文件的速度方面经常缺乏直觉或学到了错误的教训。

    非常新的程序员认为文件非常快,需要帮助理解为什么从无缓冲文件中一次读取一个字节是一个坏主意。同样,访问目录信息可能会很慢,如果可能的话应该缓存。

    不幸的是,一些更有经验的程序员吸取了错误的教训,并认为一切都需要缓存在 RAM 中,否则会太慢。现代操作系统具有非常复杂的磁盘缓存,因此您第二次访问文件的同一部分可能会明显更快。

    最后,交互式程序应该在另一个线程中执行所有文件操作,这样当磁盘繁忙或远程卷暂时不可用时,您的应用程序就不会慢到爬行或停止工作。

    【讨论】:

      【解决方案3】:

      总是骑着一只抓挠猴子。

      http://catb.org/jargon/html/S/scratch-monkey.html

      【讨论】:

        【解决方案4】:

        完成后记得关闭它们。

        【讨论】:

          【解决方案5】:

          文件总是不安全的

          与任何其他输入一样,文件会增加安全风险。此外,它可能是格式错误的,因为它是由过时的应用程序创建的,或者是因为最终用户试图自己修改它们。

          要么完全忽略此类文件,要么尽可能多地获取并丢弃其余文件。

          【讨论】:

            【解决方案6】:

            使用完所有资源后,请务必关闭文件并处理掉它们。

            在二进制文件上使用读取二进制文件并在文本文件上读取。 (不记得有多少次我帮助那些代码没有读取整个文件的人,因为他们正在读取带有文本结构的二进制文件,并且文件中间恰好有一个 ^Z)。

            【讨论】:

              【解决方案7】:

              做:

              • 删除临时文件时没有 不再需要它们

              不要:

              • 不要在用户中创建随机文件 目录(例如我的 文件)。使用临时/程序 文件夹
              • 不要将敏感信息保存在纯文本文件中

              【讨论】:

              • 主目录中的文件是平台特定的东西。我可以看到这在 Windows 中是如何不被接受的,但在 *nix 系统中,点文件被大量用于这种类型的事情。
              【解决方案8】:

              如果您正在编写服务器端或并发代码,请密切注意文件锁定:太少会导致数据损坏,太多会导致应用死锁。

              【讨论】:

                【解决方案9】:

                Vista 在程序目录中有新的权限内容,因此创建文件的程序在安装在 vista 上时可能会出现问题(易于修复但同样烦人)。

                【讨论】:

                  【解决方案10】:
                  • 不要在每次写入后刷新。
                  • 不用担心进行少量的写入和读取。操作系统非常擅长缓冲这些。不要试图重新发明自己的缓冲方案。在最好的情况下,它什么也不做。最糟糕的是,它实际上会对抗操作系统的缓冲。
                  • 不要创建包含数千个文件的目录。
                  • 如果发生更改,人们会想要查看或编辑数据。确保它是人类可读的。
                  • 在考虑提取您自己的格式之前,请先考虑 XML。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-12-16
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多