FileWriter使用什么异常

时间:2011-04-11 12:13:33

标签: java file exception filewriter writer

我有一个允许用户将信息写入文件的程序。它不会写入原始文件中的所有内容,而是添加到原始文件中。问题是,如果用户没有输入足够的信息程序崩溃。

文本文件中的每一行都如下所示:

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");
    }
}                        

2 个答案:

答案 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