BufferedReader 不读取整个文本文件
BufferedReader not reading entire text file
String str = "";
try {
BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath()));
while (br.readLine() != null) {
str += br.readLine();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String replace = str.replace("HTTP Request: ", "")
.replace("Resource URL: ","")
.replace("Attribute\t\tDescription", "| Attribute | Type | Description |<P>|----|----|<P>")
.replace("Data Type | Max Length | Requirement |", "")
.replace("N/A", "Object")
.replace("String", "| String")
.replace("255 |", "")
.replace("Required", "**Required**")
.replace("Optional", "**Optional**")
.replace("Request Example <P>", "")
.replace("Response Example <P>", "Nothing");
PrintWriter pw = null;
BufferedReader 忽略前 3 行,reads/converts 其余的。不确定是什么问题。我尝试过其他 Whosebug 解决方案,但 none 似乎有效!
问题在这里:
while (br.readLine() != null)
你检查 br.readLine() 是否不为空的时间你已经阅读了 line.To 解决这个问题你可以尝试以下方法:
String line = br.readLine();
while (line != null){
str +=line;
line = br.readLine();
}
theVoid 已经告诉了是什么问题,并给出了解决方案。
在条件语句是迭代函数的情况下,我总是更喜欢使用
do{
//task
//Iterate and store result in var, like in your case
var = br.readLine();
}while(var != null/*check on var rather than executing iteration*/);
你只检查br.readLine()
的return值,而你应该也对待它,这是通用代码:
StringBuider buffer = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath()))) {
String line;
while((line = br.readLine()) != null) {
buffer.append(line);
}
}
String str = "";
try {
BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath()));
while (br.readLine() != null) {
str += br.readLine();
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String replace = str.replace("HTTP Request: ", "")
.replace("Resource URL: ","")
.replace("Attribute\t\tDescription", "| Attribute | Type | Description |<P>|----|----|<P>")
.replace("Data Type | Max Length | Requirement |", "")
.replace("N/A", "Object")
.replace("String", "| String")
.replace("255 |", "")
.replace("Required", "**Required**")
.replace("Optional", "**Optional**")
.replace("Request Example <P>", "")
.replace("Response Example <P>", "Nothing");
PrintWriter pw = null;
BufferedReader 忽略前 3 行,reads/converts 其余的。不确定是什么问题。我尝试过其他 Whosebug 解决方案,但 none 似乎有效!
问题在这里:
while (br.readLine() != null)
你检查 br.readLine() 是否不为空的时间你已经阅读了 line.To 解决这个问题你可以尝试以下方法:
String line = br.readLine();
while (line != null){
str +=line;
line = br.readLine();
}
theVoid 已经告诉了是什么问题,并给出了解决方案。
在条件语句是迭代函数的情况下,我总是更喜欢使用
do{
//task
//Iterate and store result in var, like in your case
var = br.readLine();
}while(var != null/*check on var rather than executing iteration*/);
你只检查br.readLine()
的return值,而你应该也对待它,这是通用代码:
StringBuider buffer = new StringBuilder();
try (BufferedReader br = new BufferedReader(new FileReader(file.getAbsolutePath()))) {
String line;
while((line = br.readLine()) != null) {
buffer.append(line);
}
}