【发布时间】:2016-06-23 13:41:54
【问题描述】:
我是 Java 编码新手。我将这段代码放在一起读取以下文本文件中“开始”和“结束”标记之间的所有行。
开始
嗨
你好
如何
是
你
在做什么?
结束
我的程序如下......
package test;
import java.io.*;
public class ReadSecurities {
public static int countLines(String filename) throws IOException {
InputStream is = new BufferedInputStream(new FileInputStream(filename));
try {
byte[] c = new byte[1024];
int count = 0;
int readChars = 0;
boolean empty = true;
while ((readChars = is.read(c)) != -1) {
empty = false;
for (int i = 0; i < readChars; ++i) {
if (c[i] == '\n') {
++count;
}
}
}
return (count == 0 && !empty) ? 1 : count;
} finally {
is.close();
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
FileInputStream in = new FileInputStream("U:\\Read101.txt");
FileOutputStream out = new FileOutputStream("U:\\write101.txt");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));
BufferedReader br = new BufferedReader(new InputStreamReader(in));
for (int i=1; i<=countLines("U:\\Read101.txt"); i++) {
String line=br.readLine();
while (line.contains("Start")) {
for (int j=i; j<=countLines("U:\\Read101.txt"); j++) {
String line2=br.readLine();
System.out.println(line2);
if(line2.contains("End")) break;
else {
bw.write(line2);
bw.newLine();
}
bw.close();
} break;
}
}
br.close();
}
catch (Exception e) { }
finally { }
}
}
程序只读取前两行“hi hello”,就好像 if 条件不存在一样。我觉得这个错误很基本,但请纠正我。
【问题讨论】:
-
不要完全放弃它。调用 br.readLine 直到它返回 null。
-
循环完全没有意义。而且永远不要这样做:
catch (Exception e) { }!调试时你会错过让你发疯的异常!更邪恶:当他们使用你的东西时,让你的开发人员发疯...... -
你好@Berger,我尝试将它存储在一个变量中并使用它......仍然是相同的结果。这是我使用的代码
codeBufferedReader br = new BufferedReader(new InputStreamReader(in)); int sizeofile=countLines("U:\\Read101.txt"); for (int i=1; i -
您好 Fildor,该文件在结束标记之后也有内容。我只想阅读开始和结束之间的行。
-
你可以早点休息。关键是:不要计算行数。您可以使用 2 个 while 循环(甚至更少)来执行此操作。 1. 阅读直到你读到“开始”(或到达 EOF) 2. 然后在那个副本之后直到你读到“结束”(或 EOF)
标签: java fileparsing