有人可以帮我在一个文本文件到列表中读取数据的有选择性的列..从文本文件中读取选择性的列数据转换成Java中
例如:如果文本文件数据如下
-------------
id name age
01 ron 21
02 harry 12
03 tom 23
04 jerry 25
-------------
从上面的数据,如果我需要收集列“名称”使用Java中的列表,并打印..
有人可以帮我在一个文本文件到列表中读取数据的有选择性的列..从文本文件中读取选择性的列数据转换成Java中
例如:如果文本文件数据如下
-------------
id name age
01 ron 21
02 harry 12
03 tom 23
04 jerry 25
-------------
从上面的数据,如果我需要收集列“名称”使用Java中的列表,并打印..
由制表符分隔的列?
查看Java CSV,这是一个用于阅读逗号分隔或制表符分隔的文本文件的开源库。应该完成大部分工作。我从来没有用过它,但我认为你可以从列1(或类似的)请求所有的值。
或者,您可以使用BufferedReader
(其中有readLine()
)方法一次读取一行文件,然后拨打String.split()
并获取所需的部分。
java.util.Scanner
可用于读取文件,丢弃不需要的列。 可以在处理文件时打印想要的列值,或者将它们打印到java.util.ArrayList
并在处理完成后打印它们。
一个小例子有限的错误检查:
Scanner s = new Scanner(new File("input.txt"));
List<String> names = new ArrayList<String>();
// Skip column headings.
// Read each line, ensuring correct format.
while (s.hasNext())
{
s.nextInt(); // read and skip 'id'
names.add(s.next()); // read and store 'name'
s.nextInt(); // read and skip 'age'
}
for (String name: names)
{
System.out.println(name);
}
感谢,短,看起来很简单,但我们怎么能用这个数据庞大的人群,即太多列,nd我需要2或更多?也看到代码wth拆分(“\ t”)使用,, wat是它的目的在这种编码? – 2012-01-31 18:17:23
根据列数修改while循环。 while循环的每次迭代表示一行的处理。当从文件中读取整行时,'split()'将用于'String'实例,这在'Scanner'分裂时是不需要的。 – hmjd 2012-01-31 18:25:45
使用文件阅读器和逐行读它,在空间破裂,任何你想要的列添加到列表中。使用一个BufferedReader通过像这样抢行:
BufferedReader br = new BufferedReader(new FileReader("C:\\readFile.txt"));
然后,你可以做抢行:
String line = br.readLine();
最后,你可以将字符串通过列通过这样分成数组:
String[] columns = line.split(" ");
然后你就可以访问列,并将它们添加到列表取决于如果你想列0,1,或者2
谢谢,我给了这个尝试,但我只需要有属于“名称”类别的数据,我没有任何想法超越该 – 2012-01-31 18:33:33
如果您只需要名称下做'List.add (columns1 [1])',所有这些都需要在while循环中进行说明。如果br.readLine()已经到达文件末尾,它将返回null,所以你可以这样做:'while((line = br.readLine())!= null)'。这将继续阅读文件的每一行,然后只需将该条目添加到您希望列表的任何列中,就像我上面显示的那样。 – 2012-01-31 19:53:06
新行上的数据或全部在同一行上? – 2012-01-31 17:29:22
我需要只有数据属于“名称”类别 – 2012-01-31 18:32:03