将对象写入文件中.最好的办法



我有时间问题。

我目前在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((是问题所在。

非常感谢。

相关内容

  • 没有找到相关文章

最新更新