当前位置:  开发笔记 > 编程语言 > 正文

Java:将文件读入数组

如何解决《Java:将文件读入数组》经验,为你挑选了2个好方法。

我有一个文件(称为"number.txt"),我想用Java读取数组.我该怎样继续这样做呢?它是一个直接的"1维"文件,包含100个数字.

问题是我每次都得到一个例外.显然它找不到它(我确信它拼写正确).查看代码示例时,它不指定文件的整个文件路径,只指定文件本身的名称.如果有必要,我该如何去做呢?

此外,在读取文件时,数组是否会自动包含文件的所有行,或者我是否必须创建一个循环,将每行复制到相应的下标i?

我听说过BufferedReader类,它的目的是什么,以及它如何与读取输入相结合?



1> toolkit..:

以下是一些帮助您入门的示例代码:

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 lines = new ArrayList();
        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);
        }
    }
}

希望这可以帮助.


和你一起回到reddit!
不应该将`bufferedReader.close()`包装在`try {} finally {}`块中?

2> 小智..:
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 stringList = Files.readAllLines(filePath, charset);
String[] stringArray = stringList.toArray(new String[]{});


在Java 8中,您可以调用`Files.readAllLines(filePath)`,这相当于将`StandardCharsets.UTF_8`作为字符集传递.
这适用于JAVA 7+
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有