Получить количество строк в файле из JFileChooser Java - PullRequest
0 голосов
/ 19 февраля 2019

Есть ли в Java способ узнать количество строк выбранного файла?Метод chooser.getSelectedFile().length() - единственный метод, который я видел до сих пор, но я не могу найти, как найти количество строк в файле (или даже количество символов)

Любая помощь приветствуется, спасибо.

- обновление -

long totLength = fc.getSelectedFile().length(); // total bytes = 284
double percentuale = 100.0 / totLength;         // 0.352112676056338
int read = 0;

String line = br.readLine();
read += line.length();

Object[] s = new Object[4];

while ((line = br.readLine()) != null)
{
    s[0] = line;
    read += line.length();
    line = br.readLine();
    s[1] = line;
    read += line.length();
    line = br.readLine();
    s[2] = line;
    read += line.length();
    line = br.readLine();
    s[3] = line;
    read += line.length();
}

это то, что я пытался, но номер переменной, читаемой в конце, равен

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

Вниз и грязно:

long count =  Files.lines(Paths.get(chooser.getSelectedFile())).count();

Этот маленький метод может оказаться полезным.Это дает вам возможность игнорировать подсчет пустых строк в файле:

public long fileLinesCount(final String filePath, boolean... ignoreBlankLines) {
    boolean ignoreBlanks = false;
    long count = 0;
    if (ignoreBlankLines.length > 0) {
        ignoreBlanks = ignoreBlankLines[0];
    }
    try {
        if (ignoreBlanks) {
            count =  Files.lines(Paths.get(filePath)).filter(line -> line.length() > 0).count();
        }
        else {
            count =  Files.lines(Paths.get(filePath)).count();
        }
    }
    catch (IOException ex) { 
        ex.printStackTrace(); 
    }
    return count;
}
0 голосов
/ 19 февраля 2019

Вы можете использовать JFileChooser для выбора файла, чем открыть файл с помощью программы чтения файлов, и, когда вы перебираете файл, просто увеличиваете счетчик, как это ...

while (file.hasNextLine()) {
    count++;
    file.nextLine();
}
...