有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java输出文本文件中的变量

我有一些Java代码,如下所示:

public synchronized void printLinkStatistics(Logger log)
{
    log.info("\tInput Port = " + inputPort);
    Set <Long> ts = statData.keySet();
    for(Long t: ts)
    {   double utilization = statData.get(t);
        if (utilization!=0.0) 
        {
            utilization *= 8.0;
            utilization /= 1e6;
            if (!Double.isNaN(utilization))
            {
            log.info("\t\tTimestamp = " + t + ", Utilization = " + utilization + "Mbps");

           }
        }
    }
}

这段代码将在控制台中写入利用率,但我还需要在一个文件中写入利用率+时间戳,以便将来绘制试点。 如何使用此变量创建文件? 我在Ubuntu 12.04中使用Eclipse

伊迪丝 我正在执行此操作,但文件为空:

public synchronized void printLinkStatistics(Logger log)
{ 
    try
    {
    PrintWriter pw = new PrintWriter(new File("output.txt"));
    log.info("\tInput Port = " + inputPort);
    Set <Long> ts = statData.keySet();
    for(Long t: ts)
    {   double utilization = statData.get(t);
        if (utilization!=0.0) 
        {
            utilization *= 8.0;
            utilization /= 1e6;
            if (!Double.isNaN(utilization))
            {
            log.info("\t\tTimestamp = " + t + ", Utilization = " + utilization + "Mbps");
            pw.println("\t\tTimestamp = " + t + ", Utilization = " + utilization + "Mbps");
            }
        }
    }
    }
    catch (FileNotFoundException e) {
        e.printStackTrace(); //handle exception as you want
                                        }
}

共 (1) 个答案

  1. # 1 楼答案

    您可以使用PrintWriter并将输出重定向到文件。PrintWriter有许多有用的方法,使编写输出变得更容易(有关更多信息,请阅读java文档)。例如

    PrintWriter pw = new PrintWriter(new File("output.txt"));
    pw.println("hello");
    pw.flush();
    

    更新后的代码如下所示

    public synchronized void printLinkStatistics(Logger log, PrintWriter writer)
    {
        log.info("\tInput Port = " + inputPort);
        Set <Long> ts = statData.keySet();
        for(Long t: ts)
        {   double utilization = statData.get(t);
            if (utilization!=0.0) 
            {
                utilization *= 8.0;
                utilization /= 1e6;
                if (!Double.isNaN(utilization))
                {
                log.info("\t\tTimestamp = " + t + ", Utilization = " + utilization + "Mbps");
          writer.println("\t\tTimestamp = " + t + ", Utilization = " + utilization + "Mbps");
    
               }
            }
        }
        writer.flush();
    }
    

    为了调用您的方法,您需要像这样将代码包装在try/catch块中

    try {
        PrintWriter pw = new PrintWriter(new File("output.txt"));
        printLinkStatistics(logger, pw);
    } catch (FileNotFoundException e) {
        e.printStackTrace(); //handle exception as you want
    }