逐行读取文本文件到字符串中

时间:2015-12-10 18:16:44

标签: java arrays string line

如何在不使用String的情况下逐行阅读文本文件的内容到BufferedReader

例如,我有一个看起来像这样的文本文件:

Purlplemonkeys
greenGorilla

我想创建两个strings,然后使用类似

的内容
File file = new File(System.getProperty("user.dir") + "\Textfile.txt");
String str = new String(file.nextLine());
String str2 = new String(file.nextLine());

这样,它会str分配"Purlplemonkeys"的值,str2分配"greenGorilla"的值。

7 个答案:

答案 0 :(得分:5)

您可以阅读要列出的文本文件:

List<String> lst = Files.readAllLines(Paths.get("C:\\test.txt"));

然后根据需要访问每一行

P.S。文件 - java.nio.file.Files

答案 1 :(得分:3)

您应该使用ArrayList

File file = new File(fileName);
Scanner input = new Scanner(file);
List<String> list = new ArrayList<String>();

while (input.hasNextLine()) {
    list.add(input.nextLine());
}

然后,您可以从下一个索引访问列表中的一个特定元素:

System.out.println(list.get(0));

将为您提供第一行(即:Purlplemonkeys)

答案 2 :(得分:3)

如果您使用Java 7或更高版本

List<String> lines = Files.readAllLines(new File(fileName));

for(String line : lines){
   // Do whatever you want
   System.out.println(line);
}

答案 3 :(得分:2)

Sinse JDK 7很容易将文件读入行:

List<String> lines = Files.readAllLines(new File("text.txt").toPath())

String p1 = lines.get(0);
String p2 = lines.get(1);

答案 4 :(得分:1)

如何使用commons-io

List<String> lines = org.apache.commons.io.IOUtils.readLines(new FileReader(file));

//Direct access if enough lines read
if(lines.size() > 2) {
  String line1 = lines.get(0);
  String line2 = lines.get(1);
}

//Iterate over all lines
for(String line : lines) {
  //Do something with lines
}

//Using Lambdas
list.forEach(line -> {
  //Do something with line
});

答案 5 :(得分:1)

您可以使用apache.commons.io.LineIterator

LineIterator it = FileUtils.lineIterator(file, "UTF-8");
 try {
   while (it.hasNext()) {
     String line = it.nextLine();
     // do something with line
   }
 } finally {
   it.close();
 }

也可以通过覆盖boolean isValidLine(String line)方法来验证行。 refer doc

答案 6 :(得分:0)

File file = new File(fileName);
Scanner input = new Scanner(file);
while (input.hasNextLine()) {
  System.out.println(input.nextLine());
}