我应该用什么文件名来测试我的应用程序?

What file names should I test my application with?

我的应用程序涉及文件加载和保存(仅windows),用户可以输入他们喜欢的任何名称。

我想确保我有足够的检查和验证,以防止因用户选择的名称而发生任何错误。

哪些名称通常会引起问题,我应该测试我的应用程序是否可以使用这些名称?

  • 只允许字母数字字符,您可以使用 Apache Commons Lang 来实现: StringUtils.isAlphanumeric(file_name)

  • 你需要有一个业务逻辑,如果用户再次提供相同的文件名,你的逻辑应该基于以下三点:

    • 你是否应该抛出错误并通知用户文件已经存在。
    • 覆盖现有文件。
    • 修改现有文件。

..(windows only)....What are some names that commonly cause problems, for which I should test that my application will work with?

您应该避免使用

这样的文件名
CON, PRN, AUX, CLOCK$, NUL, COM0-9, LPT0-9

文件名中不允许包含以下字符,

^./\:*?\"<>| 

请查看此 MSDN link 了解更多信息,

I want to ensure I have enough checks and validation to prevent any errors occurring due to the name that the user selects.

并且用户将无法创建包含上述值的文件(至少没有任何破解),因此用户无法 select 这些文件之一。

您可以使用正则表达式简单地避免文件名。

(?i)(COM\d{1}| LPT\d{1} | CON | PRN | AUX |CLOCK$ | NUL)//TO avoid names