日期:2014-05-20  浏览次数:20719 次

我是新手,请教一个问题,谢谢。
各位前辈,我是个新手,最近想写一个程序,用于接收服务器定时发出的数据,并保存入TXT文档。不过遇到了点问题,由于接触JAVA时间太短,还不知道怎么解决。我的服务器都是整点的时候才出数据,出来几组数据后,就要等到下一个整点时间才出新的数据。我想让我和程序一直连接服务器的指定端口,以服务器出数据的时间为TXT文档命名。如何实现只有服务器出数据的时候才创建文档呢?像我这样的程序,一运行就创建了TXT文档,这与服务器出数据的时间对不上,应该怎么修改呢?希望各位前辈帮帮我,谢谢。
程序如下:
import java.io.*;
import java.net.*;
import java.text.SimpleDateFormat;
import java.util.Calendar;
public class Client {

public static void main(String[] args) {

try{

Socket s=new Socket("129.1.1.155",6000);
InputStream in=s.getInputStream();
Calendar data=Calendar.getInstance();
SimpleDateFormat format=new SimpleDateFormat("yyyyMMddHHmm");
String name=format.format(data.getTime());
BufferedReader br=new BufferedReader(new InputStreamReader(in));
String response=null;
int i=3;//设定循环次数,因为只接收3个统计表
File New=new File("d:\\bakup\\"+name+".txt");
New.createNewFile();
PrintWriter pw=new PrintWriter(New);
//以下是接收端口数据并写入文本文件的循环,只执行三遍,并以"--- END"作为结束字符串
while((response=br.readLine())!=null){
pw.write(response);
pw.write("\r\n");
if(response.equals("--- END"))
i--;
if(i==0){

break;}
}
pw.close();
br.close();
s.close();

}catch(UnknownHostException e){
System.out.println("无法找到相应的机器,错误信息。"+e.getMessage());
}catch(IOException e){
System.out.println("数据传输出现异常:"+e.getMessage());
}
}
}


------解决方案--------------------
API中:
PrintWriter(File file) 
使用指定文件创建不具有自动行刷新的新 PrintWriter

所以需要你手动执行flush

即在pw.close()前面加上pw.flush()