在Java中读取文本文件,例如csv文件

时间:2018-11-18 22:24:45

标签: java loops

我遇到循环抛出文件数组的问题

这是代码

阅读代码

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;


    }

显示其工作原理的图像

enter image description here

这是主要的

public static void main(String[] args) {

         ArrayList<String> Firstrow=readData(0);

        for( int i=0; i<Firstrow.size();i++) {
            System.out.println(Firstrow);
        }
    }

这在读取文件时如何显示数据格式

乔恩,1266美元,5级 史密斯,1060 $,level3 罗尼,1686 $,等级6

当在man中运行代码并调用第一行时,它必须类似于

乔恩 史密斯 罗尼

所以当到达终点时,停下来说一下第一排 我知道有一种解决办法,例如将读数存储在数组中,但我不知道 怎么做

我认为阅读方法不是正确的方法吗?

我在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;
    }

2 个答案:

答案 0 :(得分:0)

我不确定我是否正确理解了您的问题,但是如果您尝试逐行打印文件,请尝试使用bufferedReader和readLine():

FileReader fr = new fileReader(“filename”); 
BufferedReaderbr = new BufferedReader(fr);
string l; 
l = br.readLine();

然后

    while((l = br.readline())(=null) {
}

当没有更多行要读取时,bufferedReader流方法readLine()返回null。希望这会有所帮助!

答案 1 :(得分:0)

这是我的问题的解决方案,并且有效。希望对别人有帮助。

G