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

Java 我应该用什么文件名测试我的应用程序?,java,file,testing,jfilechooser,Java,File,Testing,Jfilechooser,我的应用程序涉及文件加载和保存(仅限windows),用户可以输入他们喜欢的任何名称 我希望确保有足够的检查和验证,以防止由于用户选择的名称而发生任何错误 哪些名称通常会导致问题,我应该测试我的应用程序将使用哪些名称? 仅允许字母数字字符,您可以使用Apache Commons Lang: StringUtils.isAlphanumeric(文件名) 您需要有一个业务逻辑,如果用户再次提供相同的文件名,您的逻辑应该基于以下三点: 如果抛出错误并通知用户该文件已存在 覆盖现有文件 修改现有文件

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

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

哪些名称通常会导致问题,我应该测试我的应用程序将使用哪些名称?

  • 仅允许字母数字字符,您可以使用Apache Commons Lang:
    StringUtils.isAlphanumeric(文件名)

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

    • 如果抛出错误并通知用户该文件已存在
    • 覆盖现有文件
    • 修改现有文件
..(仅限windows)…哪些名称通常会导致问题,我应该测试我的应用程序将使用哪些名称

您应该避免使用以下文件名:

CON, PRN, AUX, CLOCK$, NUL, COM0-9, LPT0-9
文件名中不允许使用以下字符:

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

你能澄清一下“常见问题”吗?你在期待什么样的事情?文件名本身不应该引起任何问题。如果输入的文件名为“myimage.pdf.txt.html.png”,则假定格式和内容对您的程序可读,则所有内容仍应正常工作。@deyur我的意思是,有时某些名称会导致程序出现问题,例如名称中有空格或斜杠。没错,应该仍然有效,但我想测试它以100%确定,所以多个扩展可以是一个。你们投票关闭的人能解释一下为什么这样做吗?我没有投票关闭,但这个问题的答案几乎不可能包含事实信息。这个问题的更好措辞应该是“Windows文件名中哪些字符是非法的?“这只能防止保存奇怪的文件,一个文件可能来自其他地方,但仍然有一个奇怪的名称,然后将其加载到我的应用程序中。如果该文件来自其他地方,您可能希望执行相同的检查字母数字等。但是,用户可能希望保留相同的文件名。是的,文件名不应更改。isAlphanumeric将排除以下内容:正确的?这是一个完全有效(且通用)的文件名,它将像\一样排除。这只是一个例子。你可以用简单的正则表达式来表示你想包含的字符。你能快速解释一下什么是CON-PRN等吗?这些是不能使用的保留文件名。。检查链接了解更多OMG前两个保留名称会破坏我的应用程序!非常感谢。
(?i)(COM\\d{1}| LPT\\d{1} | CON | PRN | AUX |CLOCK$ | NUL)//TO avoid names