[英]reading text file in java like csv file
我在遍歷文件數組時遇到問題。
這是閱讀代碼:
public static ArrayList<String> readData(int colNo) {
Scanner sca;
try {
sca = new Scanner(new File("txt1.txt"));
while(sca.hasNext()) {
String data=sca.next();
String[] value=data.split(",");
System.out.println(value[colNo]);
}
sca.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
顯示它將如何工作的圖像:
這是主要的:
public static void main(String[] args) {
ArrayList<String> Firstrow=readData(0);
for( int i=0; i<Firstrow.size();i++) {
System.out.println(Firstrow);
}
}
這是讀取文件時數據的格式:
喬恩,1266$,level5
史密斯,1060 美元,3 級
羅尼,1686$,level6
當我在main
運行代碼並調用第一行時,它必須是這樣的:
喬恩
史密斯
羅尼
因此,當它到達for
時for
它應該停下來並說關於第一行。
我知道有一種方法可以解決它,例如將讀取的內容存儲在數組中,但我不知道該怎么做。 (我認為閱讀方法不是正確的方法。)
我在Excel
做了同樣的事情並且它有效:
public static ArrayList<String> readExcelData(int colNo) {
try {
FileInputStream fis= new FileInputStream("dat.xls");
HSSFWorkbook wb=new HSSFWorkbook(fis);
HSSFSheet s=wb.getSheet(shnum);
Iterator<Row> rowIterator=s.iterator();
rowIterator.next();
ArrayList<String> list=new ArrayList<String>();
DataFormatter formatter = new DataFormatter();
while (rowIterator.hasNext()) {
String val = formatter.formatCellValue(rowIterator.next().getCell(colNo));
list.add(val);
}
System.out.println("List :::"+list);
return list;
}catch(Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
我不確定我是否正確理解您的問題,但是如果您嘗試逐行打印文件,請嘗試使用 bufferedReader 和 readLine():
FileReader fr = new fileReader(“filename”);
BufferedReaderbr = new BufferedReader(fr);
string l;
l = br.readLine();
然后,
while((l = br.readline())(=null) {
}
當沒有更多要讀取的行時,bufferedReader 流方法 readLine() 返回空值。 希望這有幫助!
這是我的問題的解決方案,並且有效。 希望它可以幫助其他人。
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
ArrayList < String > empname = new ArrayList < String > ();
ArrayList < String > empsalary = new ArrayList < String > ();
loadData(empid, empname, empsalary);
for (int i = 0; i < empname.size(); i++) {
//do some event here
}
}
public static void loadData(ArrayList < String > empid, ArrayList < String > empname, ArrayList < String > empsalary) {
try {
File file = new File("empdata.txt");
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String tokens[] = line.split("\\|");
empid.add(tokens[0].trim());
empname.add(tokens[1].trim());
empsalary.add(tokens[2].trim());
}
scanner.close();
} catch (Exception e) {
e.printStackTrace();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.