我试图打印出文本文件的各个部分。现在文本文件由
组成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;),但现在它不会打印任何内容。任何帮助将不胜感激。
答案 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
条件每次都是假的,
当您将字符串<ID
与tempString
进行比较时,tempString
不包含任何内容。它是null / Blank。
您使用&#34;&gt;&#34;检查readBuff
的第二个条件虽然readBuff
包含来自txt文件Jack <ID 123.456>
的行。
你需要改变你的逻辑,
if(!readBuff.equals("")){
System.out.println(readBuff);
}