Java: чтение файла в массив

java arrays

162325 просмотра

4 ответа

У меня есть файл (называемый «number.txt»), который я хочу прочитать в массив в Java. Как именно я иду вперед и делаю это? Это простой «одномерный» файл, содержащий 100 чисел.

Проблема в том, что я получаю исключение каждый раз. Очевидно это не может найти это (я уверен, что оно написано правильно). Просматривая примеры кода, он не указывает полный путь к файлу, только имя самого файла. Как бы я поступил так, если это необходимо?

Кроме того, при чтении файла будет ли массив автоматически содержать все строки файла или мне придется создать цикл, который копирует каждую строку в соответствующий индекс i?

Я слышал о классе BufferedReader, какова его цель и как он соотносится с чтением ввода?

Автор: Northener Источник Размещён: 30.07.2019 12:28

Ответы (4)


66 плюса

Вот пример кода, который поможет вам начать:

package com.acme;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class FileArrayProvider {

    public String[] readLines(String filename) throws IOException {
        FileReader fileReader = new FileReader(filename);
        BufferedReader bufferedReader = new BufferedReader(fileReader);
        List<String> lines = new ArrayList<String>();
        String line = null;
        while ((line = bufferedReader.readLine()) != null) {
            lines.add(line);
        }
        bufferedReader.close();
        return lines.toArray(new String[lines.size()]);
    }
}

И пример модульного теста:

package com.acme;

import java.io.IOException;

import org.junit.Test;

public class FileArrayProviderTest {

    @Test
    public void testFileArrayProvider() throws IOException {
        FileArrayProvider fap = new FileArrayProvider();
        String[] lines = fap
                .readLines("src/main/java/com/acme/FileArrayProvider.java");
        for (String line : lines) {
            System.out.println(line);
        }
    }
}

Надеюсь это поможет.

Автор: toolkit Размещён: 12.11.2008 11:09

39 плюса

import java.io.File;

import java.nio.charset.Charset;
import java.nio.file.Files;
import java.nio.file.Path;

import java.util.List;

// ...

Path filePath = new File("fileName").toPath();
Charset charset = Charset.defaultCharset();        
List<String> stringList = Files.readAllLines(filePath, charset);
String[] stringArray = stringList.toArray(new String[]{});
Автор: Hélio Santos Размещён: 26.09.2012 12:08

4 плюса

Apache Commons I / O предоставляет FileUtils # readLines (), который должен подойти для всех, кроме огромных файлов: http://commons.apache.org/io/api-release/index.html . В дистрибутив 2.1 входит FileUtils.lineIterator (), который подходит для больших файлов. В библиотеках Google Guava есть аналогичные утилиты.

Автор: Tony Nassar Размещён: 19.05.2011 08:48

0 плюса

Вы должны иметь возможность использовать прямые косые черты в Java для ссылки на расположение файлов.

Класс BufferedReader используется для упаковки других программ чтения файлов, чей метод чтения может быть не очень эффективным. Более подробное описание можно найти в API Java .

Использование BufferedReader в Toolkit, вероятно, то, что вам нужно.

Автор: Ryan Thames Размещён: 12.11.2008 11:17
Вопросы из категории :
32x32