我有一个允许用户将信息写入文件的程序。它不会写入原始文件中的所有内容,而是添加到原始文件中。问题是,如果用户没有输入足够的信息程序崩溃。
文本文件中的每一行都如下所示:
info 1, Info 2, info 3, info 4, info 5, info 6, info 7
每行有六个逗号和七个信息。所以,我需要知道使用什么样的异常来防止崩溃,如果说用户只输入4条信息或只使用两个逗号等等。任何人都知道如何做到这一点?
这是我的代码:
private void addDVDButtonActionPerformed(java.awt.event.ActionEvent evt) {
FileWriter fWriter = null;
BufferedWriter writer = null;
try {
fWriter = new FileWriter("info.txt", true);
writer = new BufferedWriter(fWriter);
writer.write(JOptionPane.showInputDialog(this, "ADDING INFO"));
writer.newLine();
writer.close();
} catch (Exception e) {
JOptionPane.showMessageDialog(this,"More information required");
}
}
答案 0 :(得分:1)
不要抛出异常。验证用户输入,只有在文件有效时才将其写入文件。
答案 1 :(得分:0)
我如何验证呢?这就是我所坚持的。
例如,使用String.split(",")
会为您提供String[]
,您可以在其中检查String[].length == 7
。
编辑:只是为了确保这不是问题的完整解决方案,而是一个很好的起点。我非常同意所有其他评论/答案,抛出一个例外就是矫枉过正。
编辑2:我们假设用户将以下字符串作为输入,并且您希望在写入文件之前对其进行验证:
String str = "a1,b2,c3,d4,e5,f6";
你可以看到这个字符串有六个元素和五个逗号,换句话说它应该给用户一个警告。检查这个的一个非常简单的方法是:
if (str.split(",").length != 7) // checks if the string is comma delimited and has seven pieces of information
warnUser(); // whatever you want to do to warn user
else
writeToFile(str);
请注意,这只是显示原则,在您的情况下,您可能(并且可能会)想要检查格式化等其他内容,或者您有字母数字文本而没有下划线或其他内容。如果您要检查有很多条件,可以编写一个方法validateInput(str)
,它可以是一系列条件检查,只有在所有条件都检出时才返回true
。