[英]JAVA - Writing sentences to textfile
我下面有这段代码。 基本上,我从给定的URL获得输入。 该网站显示一个句子。 每次我重新加载网站时,都会得到一个新句子,依此类推。 因此,我设法使它开始工作。 现在,我试图将句子写在文本文件中。 但是出了点问题。 它只写第一行,没有其他内容。 我的代码有什么问题?
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class ReadIp {
public static void main(String[] args) throws MalformedURLException, IOException,
InterruptedException {
ReadIp readIP = new ReadIp();
while (true) {
readIP.getIP();
Thread.sleep(2000);
}
}
BufferedReader buff;
InputStreamReader inStream;
String line;
URL url;
URLConnection urlConn;
FileWriter fileWriter ;
BufferedWriter bufferedWriter;
public ReadIp() throws IOException {
fileWriter = new FileWriter("myfile.txt", true);
bufferedWriter = new BufferedWriter(fileWriter);
}
public void getIP() throws MalformedURLException, IOException {
this.url = new URL("http://test.myrywebsite.co.uk");
this.urlConn = this.url.openConnection();
this.inStream = new InputStreamReader(this.urlConn.getInputStream());
this.buff = new BufferedReader(this.inStream);
try {
while ((this.line = this.buff.readLine()) != null)
{
System.out.println(this.line);
try {
this.bufferedWriter.write(this.line);
this.bufferedWriter.write("\n");
this.bufferedWriter.flush();
} catch (IOException e)
{
}
}
if (this.bufferedWriter != null)
{
this.bufferedWriter.close();
}
this.inStream.close();
}
catch (Exception ex)
{
}
}
}
任何帮助将不胜感激。 谢谢。
移动陈述
writer.close();
从内部try catch块中移出,这样您就不会在将第一个条目写入文件后关闭OutputStream
。 这同样适用于InputStream
inStream.close();
BufferedWriter在构造函数中打开,并在getIp
中关闭。 构造函数仅被调用一次,但是getIp
每2秒被调用以读取一个句子。 因此,BufferedWriter在第一行之后将关闭(并且不会再次打开)。 getIp
的第二次调用尝试编写第二句,但BufferedWriter已关闭。 这应该引发一个异常,因为catch块为空,所以将其忽略。
切勿将捕获块留空 -如fgb上面所述!
首先,至少向每个空的catch块添加一个printStackTrace()
,例如:
catch (Exception ex) {
ex.printStackTrace();
}
这样就可以查看是否引发了异常...
我建议在getIp
方法而不是构造函数中打开BufferedWriter
; 或者,如果它应该一直保持打开状态,请使用其他方法关闭BufferedWriter
,该方法在main
的循环终止后调用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.