Java 在阅读文件时,如何跳过某些文本区域?
我正在读一个Java 在阅读文件时,如何跳过某些文本区域?,java,string,stringbuilder,string-parsing,Java,String,Stringbuilder,String Parsing,我正在读一个.txt文件,想在将结果放入StringBuilder时跳过本文中的代码列表 文本示例: 下面的Bicycle类是 自行车: /*自行车类自行车实例{ int-cadence=0 int速度=0;}*/ 这就是我能想到的: public class Main { public static BufferedReader in; public static StringBuilder stringBuilder = new StringBuilder(); public stati
.txt
文件,想在将结果放入StringBuilder
时跳过本文中的代码列表
文本示例:
下面的Bicycle类是
自行车:
/*自行车类自行车实例{
int-cadence=0
int速度=0;}*/
这就是我能想到的:
public class Main {
public static BufferedReader in;
public static StringBuilder stringBuilder = new StringBuilder();
public static void main(String[] args) {
String input = "input_text.txt";
try {
in = new BufferedReader(new FileReader(input));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String inputText;
try {
while ((inputText = in.readLine()) != null) {
if (inputText.startsWith("/*")) {
// The problem is there:
while (!inputText.endsWith("*/")) {
int lengthLine = inputText.length();
in.skip((long)lengthLine);
}
}
stringBuilder.append(inputText);
}
} catch (IOException e) {
e.printStackTrace();
}
我在
循环时得到了无穷大,无法跳转到下一行。在while
循环中从未重置inputText
的值,因此它永远不会以*/
结束,从而导致无限循环。此外,您不需要使用skip()
方法,因为在遇到*/
之前,只需简单地读取行即可。尝试将循环更改为:
while (!inputText.endsWith("*/")) {
String temp = in.readLine();
if(temp == null) {break;}
inputText = temp;
}
输出:(打印StringBuilder
)
在while
循环中,您永远不会重置inputText
的值,因此它永远不会以*/
结束,从而导致无限循环。此外,您不需要使用skip()
方法,因为在遇到*/
之前,只需简单地读取行即可。尝试将循环更改为:
while (!inputText.endsWith("*/")) {
String temp = in.readLine();
if(temp == null) {break;}
inputText = temp;
}
输出:(打印StringBuilder
)
您从未在while循环中重置inputText
的值inputText
在while(!inputText.endsWith(“*/”)
循环中从未更改。@Arnaud是的,BufferedReader与/*
行了一行,我不明白如何跳转到下一行。.您从未在while循环中重置inputText
的值inputText
在中从未更改,而(!inputText.endsWith(“*/”)
循环。@Arnaud是的,BufferedReader使用/*
执行了一行操作,我不明白如何跳到下一行..我在while
中捕获NullPointException
loop@SpikeJohnson在哪一行?while(!inputText.endsWith(“*/”){我在这个while中捕获NullPointException
loop@SpikeJohnson在哪一行?同时(!inputText.endsWith(“*/”){