从文本文件中逐行读取日期并将它们存储在字典中 java
read dates line by line from text file and store them in a dictionary java
我有一个包含 ID 号和日期的文本文件,格式如下:
ID Date
1 14/03/2011
2 06/03/2013
3 25/02/2013
4 28/01/2013
5 13/07/2011
6 13/03/2011
7 01/10/2012
8 09/10/2012
我需要读取此 txt 文件并将每个日期存储在字典中,例如哈希图或其他格式。此外,如果日期是 DATE
数据类型而不是字符串,那将是更可取的。
我试着自己做,但我是 JAVA 的初学者,我无法完成。
在此先感谢您的帮助
这就是我到目前为止尝试过的方法。我没有使用字典,我试图将日期放在 ArrayList 中,但出于某种原因,它只读取文件中的每一行,因此丢失了一半的日期。
static Date[] list = new Date[59400];
public static void main(String[] args) {
try {
File file = new File("dates.txt");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String readLine = "";
int i =0;
while ((readLine = bufferedReader.readLine()) != null) {
String s = bufferedReader.readLine();
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(s);
System.out.println(s+","+i);
i++;
}
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
您可以试试下面的功能。
public static void parseFile() throws IOException, ParseException {
BufferedReader bufferedReader = new BufferedReader(new FileReader(new File("inputFileName.txt")));
Map<Integer, Date> integerDateMap = new HashMap<>(); // Map to put data
SimpleDateFormat sdfmt2= new SimpleDateFormat("dd/MM/yyyy"); // date format
String line = null;
line = bufferedReader.readLine(); // neglect first line
while((line = bufferedReader.readLine())!= null){
String[] split = line.split(" ");
integerDateMap.put(Integer.parseInt(split[0]),sdfmt2.parse(split[1]));
}
System.out.println(integerDateMap); // print to check
}
.... for some reason, it reads only every alternate line from the file so half the dates are missing.
查看您代码中的这两行:
while ((readLine = bufferedReader.readLine()) != null) {
String s = bufferedReader.readLine();
第一个将一行文本读入 readLine
。
第二个将下一行读入 s
。
您读入 readLine
的备用行从未使用过。
我可以推荐你花时间阅读这篇文章吗:
- How to debug small programs 作者:Eric Lippert。
我有一个包含 ID 号和日期的文本文件,格式如下:
ID Date
1 14/03/2011
2 06/03/2013
3 25/02/2013
4 28/01/2013
5 13/07/2011
6 13/03/2011
7 01/10/2012
8 09/10/2012
我需要读取此 txt 文件并将每个日期存储在字典中,例如哈希图或其他格式。此外,如果日期是 DATE
数据类型而不是字符串,那将是更可取的。
我试着自己做,但我是 JAVA 的初学者,我无法完成。
在此先感谢您的帮助
这就是我到目前为止尝试过的方法。我没有使用字典,我试图将日期放在 ArrayList 中,但出于某种原因,它只读取文件中的每一行,因此丢失了一半的日期。
static Date[] list = new Date[59400];
public static void main(String[] args) {
try {
File file = new File("dates.txt");
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String readLine = "";
int i =0;
while ((readLine = bufferedReader.readLine()) != null) {
String s = bufferedReader.readLine();
Date date = new SimpleDateFormat("dd/MM/yyyy").parse(s);
System.out.println(s+","+i);
i++;
}
fileReader.close();
} catch (IOException e) {
e.printStackTrace();
} catch (ParseException e) {
e.printStackTrace();
}
您可以试试下面的功能。
public static void parseFile() throws IOException, ParseException {
BufferedReader bufferedReader = new BufferedReader(new FileReader(new File("inputFileName.txt")));
Map<Integer, Date> integerDateMap = new HashMap<>(); // Map to put data
SimpleDateFormat sdfmt2= new SimpleDateFormat("dd/MM/yyyy"); // date format
String line = null;
line = bufferedReader.readLine(); // neglect first line
while((line = bufferedReader.readLine())!= null){
String[] split = line.split(" ");
integerDateMap.put(Integer.parseInt(split[0]),sdfmt2.parse(split[1]));
}
System.out.println(integerDateMap); // print to check
}
.... for some reason, it reads only every alternate line from the file so half the dates are missing.
查看您代码中的这两行:
while ((readLine = bufferedReader.readLine()) != null) {
String s = bufferedReader.readLine();
第一个将一行文本读入 readLine
。
第二个将下一行读入 s
。
您读入 readLine
的备用行从未使用过。
我可以推荐你花时间阅读这篇文章吗:
- How to debug small programs 作者:Eric Lippert。