将文本文件中的值存储到Java中的数组中

时间:2018-07-21 08:28:38

标签: java arrays io

我需要读取txt文件,并检查文本文件是否具有“名字”。如果包含,则应拆分行并在控制台中显示该行。

public String[] getFullname() {
    try {
        BufferedReader br = new BufferedReader(new FileReader("src\\main\\resources\\CV.docx"));
        String line = br.readLine();
        while (line != null) {
            if (line.startsWith("Full Name")) {
                String[] fname = line.split(":");
                System.out.println(Arrays.toString(fname));
                firstname = fname;
            }
            line = br.readLine();
        }
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return firstname;
}

3 个答案:

答案 0 :(得分:1)

  1. 您正在比较全名。这就是2.4.4条件失败的原因。

    使用

    if

    代替

    if (line.startsWith("First Name"))
    
  2. 如果要检查行中是否包含单词名字,请使用if (line.startsWith("Full Name")) 而不是contains。 'startsWith'仅检查行的起始字符是否与字符串匹配。

    startsWith

答案 1 :(得分:1)

这是由于docx文件。有apache poi API,用于读取使用MS Office套件产品编写的文件。我已经尝试过一次的Excel文件。操作方式对文本文件有效。

首先,您可以在控制台上检查文件的日志记录内容。如果有能力,那么您只能检查它是否以某种开头。

请参阅此处发布的答案以阅读docx文件:

https://stackoverflow.com/a/34543577/4940369

也请用“名字”更正“全名”。

使用的逻辑似乎也不正确:

split()方法返回由字符串/字符串定界符分隔的字符串数组。在此块中的任何地方都未声明firstName。您正在尝试将数组分配给String。您可以使用substring(line.indexOf(':'))。

它将始终返回在以“名字”开头的最后一行中找到的名称。没有休息或什么。每次以“ First Name”开头时,都会重新分配firstName变量。如果要返回每个名字,可以使用列表而不是数组。继续将其添加到列表中。

答案 2 :(得分:0)

  

...检查文本文件是否具有“ 名字” ...

在您的代码中,您搜索的是全名,而不是名字

替换

if (line.startsWith("Full Name")) {

使用

if (line.startsWith("First Name")) {

更新

如David在this comment中所述,如果您要阅读Word文档。您的尝试完全没有用。