Java:读取文本文件的一部分

时间:2015-05-14 06:58:31

标签: java

我试图打印出文本文件的各个部分。现在文本文件由

组成
Jack <ID 123.456>
Doug <ID 231.345>

这就是我目前在代码方面所拥有的:

    BufferedReader reader = new BufferedReader(new FileReader("File.txt"));
    String readBuff = reader.readLine();
    String tempString = "";

    while (readBuff != null) {
        if (tempString.equals("<ID ") && !readBuff.equals(">"))
        {
            tempString = readBuff;
            System.out.println(tempString);
        }
        readBuff = reader.readLine();
    }
    reader.close();

我希望这能打印出每一行的ID部分(即&#34; 123.456&#34;和#34; 231.345&#34;),但现在它不会打印任何内容。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

试试这段代码:

FileInputStream fis = new FileInputStream(new File("File.txt"));
BufferedReader br   = new BufferedReader(new InputStreamReader(fis));

String line = null;
while ((line = br.readLine()) != null) {
    String[] parts = line.split(" ");
    String theId = parts[2].substring(0, parts[2].length()-1);
    System.out.println(theId);
}

br.close();

答案 1 :(得分:0)

最初,tempString将为空,因此永远不会等于<ID,因此您的tempString作业永远不会发生。因此,我认为此行:if (tempString.equals("<ID ") && !readBuff.equals(">"))必须更改为if (readBuff.contains("<ID ") && !readBuff.endsWith(">"))。这应至少打印整行。

要让它打印ID部分,您只需split上的<,这将产生一个包含2个细分的数组:Jack和{{ 1}}。完成后,您只需从第二个数组项中删除最后一个字符并打印内容即可。这应该打印出您之后的ID。

答案 2 :(得分:0)

好吧,你的if条件每次都是假的,

当您将字符串<IDtempString进行比较时,tempString不包含任何内容。它是null / Blank。 您使用&#34;&gt;&#34;检查readBuff的第二个条件虽然readBuff包含来自txt文件Jack <ID 123.456>的行。 你需要改变你的逻辑,

if(!readBuff.equals("")){
    System.out.println(readBuff);
}