繁体   English   中英

一次从文件读取单个字符串

[英]Read a Single String from a File at a Time

Abe
Bobby
Joseph
yyvoynne
Kathryn

^^我正在读取的文件。 我将如何一次读取一个单词,将一个单词分配给一个变量,对其进行填充,然后从文件中读取另一个名称呢? 我真的只是对如何将读入的单词分配给变量感到困惑。 谢谢你的时间。

while(names.hasNext())
        {
            //Stuff

        }

我认为您正在寻找从文件逐行读取的信息。

您可以尝试以下方法:这是一种从文件读取的常用方法。

BufferedReader br = new BufferedReader(new FileReader(file));
String line;
String word;
while ((line = br.readLine()) != null) {
    word = line;
    //do stuff with word
}
br.close();
while(names.hasNext())
        {
         String name = names.next(); // Assuming Scanner is used to read file
        }

也许您想要这样:

while(names.hasNext()){
    String name = names.next();
    ... do stuff...
}
Path path = Paths.get("names-in-cwd.txt"); /* Relative or absolute path here. */
Charset encoding = StandardCharsets.UTF_8; /* Or whatever it is really. */
for (String name : Files.readAllLines(path, encoding)) {
  /* Do stuff with value in "name" variable ... */
}

您可以使用Scanner并使用useDelimiter(String regex)方法来执行此操作:

确保添加以下导入:

import java.util.ArrayList;
import java.util.Scanner;

然后,您可以使用ArrayList来保存名称。

try {
    Scanner file = new Scanner(new File("yourFileNameAndPath.txt"));
    file.useDelimiter("\\s+"); // split names by any whitespace

    // list is the ArrayList to hold all of the names
    ArrayList<String> list = new ArrayList<String>();
    while (file.hasNext()) {
        list.add(file.next());
    }

    // print it out to test
    // new element (name) after every ###
    for (int i = 0; i < list.size(); i++) {
        System.out.println(list.get(i) + "###");
    }
    print(list.size()); // print number of names found

} catch (Exception e) {
    System.out.println("Error");
}

对于您的文件,这是输出:

Abe###
Bobby###
Joseph###
yyvoynne###
Kathryn###
5

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM