通过javaio生成输出文件

通过javaio生成输出文件,java,io,Java,Io,我开发了一个java代码,可以从用户选择的文件夹中读取文件。它显示每个文件中有多少行代码,它只读。java FileOnly和最终结果显示在控制台上,我认为输出将显示在控制台上,但与包含相同信息的文本文件一起存储在桌面上,请告知如何执行此操作,并且生成的文件的名称其名称基于时间戳让我们假设输出文件的名称为“output06282012”,并且文本文件应包含控制台上显示的相同信息,这是我的一段代码 public static void main(String[] args) throws File

我开发了一个java代码,可以从用户选择的文件夹中读取文件。它显示每个文件中有多少行代码,它只读。java FileOnly和最终结果显示在控制台上,我认为输出将显示在控制台上,但与包含相同信息的文本文件一起存储在桌面上,请告知如何执行此操作,并且生成的文件的名称其名称基于时间戳让我们假设输出文件的名称为“output06282012”,并且文本文件应包含控制台上显示的相同信息,这是我的一段代码

public static void main(String[] args) throws FileNotFoundException {

        JFileChooser chooser = new JFileChooser();
        chooser.setCurrentDirectory(new java.io.File("C:" + File.separator));
        chooser.setDialogTitle("FILES ALONG WITH LINE NUMBERS");
        chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        chooser.setAcceptAllFileFilterUsed(false);
                if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION)
        {      Map<String, Integer> result = new HashMap<String, Integer>();
             File directory = new File(chooser.getSelectedFile().getAbsolutePath()); 
             int totalLineCount = 0;
             File[] files = directory.listFiles(new FilenameFilter(){
                  @Override
                  public boolean accept(File directory, String name) {
                      if(name.endsWith(".java"))
                      return true;
                    else
                      return false;              
                  }
                }
   );
              for (File file : files)
            {
                if (file.isFile())
                {    Scanner scanner = new Scanner(new FileReader(file));
                    int lineCount = 0;
                     try
                    { for (lineCount = 0; scanner.nextLine() != null; lineCount++) ;
                          } catch (NoSuchElementException e)
                    {   result.put(file.getName(), lineCount);
                    totalLineCount += lineCount;  
                                    }


                } }
              System.out.println("*****************************************");
              System.out.println("FILE NAME FOLLOWED BY LOC");
              System.out.println("*****************************************");

            for (Map.Entry<String, Integer> entry : result.entrySet())
            {   System.out.println(entry.getKey() + " ==> " + entry.getValue());
            }
            System.out.println("*****************************************");
            System.out.println("SUM OF FILES SCANNED ==>"+"\t"+result.size()); 
            System.out.println("SUM OF ALL THE LINES ==>"+"\t"+ totalLineCount);

             }     

    }

请告知如何执行此操作,并且生成的文件的名称其名称基于时间戳让我们假设输出文件的名称为“output06282012”,并且文本文件应包含控制台上显示的相同信息,据我所知,这是您实际询问的唯一问题:

请告知如何处理该问题,并且生成的文件名其名称将基于时间戳。让我们假设输出文件的名称为“output06282012”

答案很简单:

    String fileName = "output" + new Date().getTime();
然后你接着说:

。。。。该文本文件应包含控制台上显示的相同信息

您有两个选择:

  • 您可以通过调用
    System.setOut(…)
    来更改
    System.out
    的位置。(有关详细信息,请查看javadoc。)

  • 您可以为文件流创建一个
    PrintWriter
    PrintStream
    包装器,并将其写入,而不是写入
    System.out

在我看来,除非你别无选择,否则使用
System.setOut(…)
是个坏主意。这是一个影响整个应用程序的“全局操作”。最好传递要用作参数的writer


你能不能像我那样在代码中播种,这将澄清理解


对不起,我不为他们编写程序(除非这是一个有趣的问题!)。您需要使用相关Javadoc中提供的信息自己编写和调试代码。您可以在Oracle网站上在线找到Java文档:

您可以使用它来构造所需的日期。您好,用户1464381:我看您对这方面还比较陌生。欢迎光临。:-)要想得到好的答案,一个技巧就是写简洁明了的问题。以这个问题为例,我们不需要知道这个程序是做什么的,也不需要知道你为什么要写它。我们只是想知道你的具体问题。我想你是在问如何创建一个特定格式的文件名,但是那里有很多多余的信息。@GregKopff你能不能像我那样插入代码,这会让人明白,谢谢,还有很多糟糕的格式代码。如果你要求志愿者帮助你,请努力发布可读代码。
    String fileName = "output" + new Date().getTime();