在文件上传中读取多行

时间:2012-03-20 06:38:09

标签: java file upload

任何人都可以告诉我如何阅读多行并存储它们的价值。

例如:file.txt的

Probable Cause: The network operator has issued an alter attribute command for
the specified LCONF assign. The old value and the new value are show
Action Taken : The assign value is changed from the old value to the new
value. Receipt of this message does not guarantee that the new attribute
value was accepted by clients who use it. Additional messages may be.

Probable Cause: The network operator has issued an info attribute command for
the specified LCONF assign. The default value being used is displaye
Action Taken : None. Informational use only.

在上面的文件中,可能的原因和操作采取的是数据库表的列。在可能的原因之后:那些是存储在数据库表中的可能原因列的值,同样采取了相应的行动。

那么我如何读取多行并存储它们的值?我必须阅读可能原因的值,直到行动采取行动。我正在使用BufferedReaderreadLine()方法一次读取一行。所以任何人都可以告诉我如何直接从可能的原因到行动,无论他们之间有多少行。

1 个答案:

答案 0 :(得分:1)

最简单的方法可能是为每个值保留List<String>,使用 这样的循环

private static final String ACTION_TAKEN_PREFIX = "Action Taken ";

...

String line;
while ((line = reader.readLine()) != null)
{
    if (line.startsWith(ACTION_TAKEN_PREFIX))
    {
        actions.add(line.substring(ACTION_TAKEN_PREFIX))
        // Keep reading the rest of the actions
        break;
    }
    causes.add(line);
}
// Now handle the fact that either we've reached the end of the file, or we're
// reading the actions

一旦你有一个“可能原因”/“采取行动”对,将字符串列表转换回单个字符串,例如加入“\ n”,然后插入数据库。 (Guava中的Joiner课程将使这更容易。)

棘手的一点是处理异常现象:

  • 如果您没有以可能的原因开始会发生什么?
  • 如果一个可能的原因后面跟着另一个,或者一组行动后面跟着另一个,会发生什么?
  • 如果在阅读可能原因但没有操作列表后到达文件末尾会发生什么?

我现在没有时间写出完整的解决方案,但希望以上内容有助于您前进。