【发布时间】:2023-03-30 07:35:01
【问题描述】:
我正在读取一个包含日期的文本文件,并且我想将表示日期的字符串解析为 java 中的 Date 对象。我注意到的是操作很慢。为什么?有什么方法可以加速吗? 我的文件看起来像:
2012-05-02 12:08:06:950, secondColumn, thirdColumn
2012-05-02 12:08:07:530, secondColumn, thirdColumn
2012-05-02 12:08:08:610, secondColumn, thirdColumn
我逐行读取文件,然后从每一行获取日期String,然后使用SimpleDateFormat 将其解析为Date 对象,如下所示:
DataInputStream in = new DataInputStream(myFileInputStream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
while ((strLine = br.readLine()) != null)
{
....Do things....
Date myDateTime = (Date)formatter.parse(myDateString);
...Do things....
}
【问题讨论】:
-
您是否尝试在整个文件解析操作中使用相同的 SimpleDateFormat 实例?
-
你是如何确定它慢的?
-
发布的代码不足以说明您是如何处理这种情况的。您的文件中有多少行,需要多长时间?
-
看一下 SimpleDateFormat::parse(String) 的代码就知道这不是一件容易的事。特别是错误处理是相当多的东西。如果您的日期看起来总是相同,您可以自己从行中解析它们并相应地填充日期实例。如果这样更快,我也不敢事先回答。
-
我真的希望人们停止将 DataInputStream 与 BufferedReader 混合使用。谁开始这个模因...... grrr。
标签: java date simpledateformat date-parsing