web-dev-qa-db-ja.com

Java:ファイルを配列に読み込む

Javaの配列に読み取りたいファイル( "number.txt")があります。どうやって正確にこれを行うのですか?これは、100個の数字を含む単純な「1次元」ファイルです。

問題は、毎回例外が発生することです。どうやらそれを見つけることができません(スペルが正しいと確信しています)。コード例を調べると、ファイルのファイルパス全体ではなく、ファイル自体の名前のみが指定されます。必要な場合はどうすればいいですか?

また、ファイルを読み取るときに、配列にファイルのすべての行が自動的に含まれますか、またはすべての行を対応する添え字iにコピーするループを作成する必要がありますか?

BufferedReaderクラス、その目的、および入力の読み取りとどのように相関するのかを聞いたことがありますか?

30
Northener

開始に役立つサンプルコードを次に示します。

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

お役に立てれば。

66
toolkit
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[]{});
39
Hélio Santos

Apache Commons I/OはFileUtils#readLines()を提供します。これは、巨大なファイルを除くすべてのファイルで問題ないはずです: http://commons.Apache.org/io/api-release/index.html 。 2.1ディストリビューションには、大きなファイルに適したFileUtils.lineIterator()が含まれています。 GoogleのGuavaライブラリには、同様のユーティリティが含まれています。

4
Tony Nassar

ファイルの場所を参照するには、Javaでスラッシュを使用できます。

BufferedReaderクラスは、読み取りメソッドがあまり効率的でない可能性がある他のファイルリーダーをラップするために使用されます。より詳細な説明は Java API にあります。

ToolkitでBufferedReaderを使用するのがおそらく必要です。

0
Ryan Thames