Java:将文件读入数组
我有一个文件(称为“number.txt”),我想读取到Java中的数组。 我到底怎么做,并做到这一点? 这是一个简单的“一维”文件,包含100个数字。
问题是我每次都得到一个exception。 显然它找不到(我相信它拼写正确)。 查看代码示例时,不会指定文件的整个文件path,只会指定文件本身的名称。 如果有必要的话,我会怎么做呢?
另外,在读取文件时,数组是否会自动包含文件的所有行,或者我将不得不做一个循环,每一行复制到相应的下标i?
我听说过BufferedReader类,它的目的是什么,它如何与阅读input相关联?
以下是一些帮助您开始使用的示例代码:
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()]); } }
还有一个例子unit testing:
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); } } }
希望这可以帮助。
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[]{});
Apache Commons I / O提供了FileUtils#readLines(),对于除了大文件之外的所有文件都应该是正常的: http : //commons.apache.org/io/api-release/index.html 。 2.1发行包括FileUtils.lineIterator(),这将适用于大型文件。 谷歌的番石榴图书馆包括类似的实用程序。
您应该能够在Java中使用正斜杠来引用文件位置。
BufferedReader类用于包装其他文件读取器,而读取方法可能效率不高。 在Java API中可以find更详细的描述。
工具包使用BufferedReader可能是你需要的。