чтение текстового файла в Java, как CSV-файл - PullRequest
0 голосов
/ 19 ноября 2018

У меня проблема с зацикливанием выбросить массив файлов

это код

код для чтения

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);
        }
    }

это как формат данных при чтении файла

jon, 1266 $, level5 Smith, 1060 $, level3 rony, 1686 $, level6

, и когда вы запускаете код в 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;
    }

1 Ответ

0 голосов
/ 19 ноября 2018

Я не уверен, правильно ли я понимаю ваш вопрос, но если вы пытаетесь напечатать файл построчно, попробуйте использовать bufferedReader и readLine ():

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

тогда

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

Потоковый метод bufferedReader readLine () возвращает нулевое значение, когда больше нет строк для чтения. Надеюсь, это помогло!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...