有人可以幫我在一個文本文件到列表中讀取數據的有選擇性的列..從文本文件中讀取選擇性的列數據轉換成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