我有时间问题。
我目前在Java开发一个应用程序,必须在其中进行网络分析仪。
为此,我使用JPCAP捕获所有数据包,然后将它们写入文件,然后从那里将它们放入DB中。
问题是当我写入整个对象时,
UDPPacket udpPacket = (UDPPacket)packet
wtf.writeToFile("packets.txt",udpPacket +"n");
一切正常且顺利,但是当我尝试像这样写时
String str=""+udpPacket.src_ip+" "+udpPacket.dst_ip+""
+udpPacket.src_port+" "+udpPacket.dst_port+" "+udpPacket.protocol +
" Wi-fi "+udpPacket.dst_ip.getCanonicalHostName()+"n";
wtf.writeToFile("packets.txt",str +"n");
file中的写入在很多时间内。
在文件中写入的功能是此
public void writeToFile(String name, String str){
try{
PrintWriter writer = new PrintWriter(new FileOutputStream(new File(name),this.restart));
if(!str.equalsIgnoreCase("0")){
writer.append(str);
this.restart=true;
}
else {
this.restart=false;
writer.print("");
}
writer.close();
} catch (IOException e) {
System.out.println(e);
}
}
任何人都可以给我一个人,这是什么最好的方法?
非常感谢
编辑:
7354.120266 NS-数据包打印
241471.110451 NS-带有StringBuilder
保持PrintWriter
打开。不要为要写入文件的每一行打开并关闭它。并且也不要冲洗它:退出时只需关闭即可。基本上,您应该删除您的writeToFile()
方法,只需在必要时直接致电PrintWriter.write()
或直接致电。
nb您正在写文本,而不是对象。
我发现了问题
正如@kevino所说,GetCanonicalHostName((是问题所在。
非常感谢。