-1

重複の可能性:
フォルダーからの Java ファイルの読み取り

ユーザーが選択したフォルダーからファイルを読み取る Java コードを開発しました。各ファイルに含まれるコードの行数が表示され、.java ファイルのみが読み取られ、最終結果がコンソールに表示されます。出力はコンソールに表示されると考えていましたが、同じ情報を含むテキスト ファイルを取得するデスクトップにも保存されます。その方法と生成されるファイルの名前はタイムスタンプに基づいていることをアドバイスしてください。出力ファイルの名前は「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' であり、そのテキスト ファイルには、コンソールに表示される情報と同じ情報が含まれている必要があります。

4

1 に答える 1

3

もっと正確に質問することをお勧めします。あなたの質問から私が理解していることから、あなたはいくつかの情報をテキストファイルに書きたいと思っています。これを行うには、これを行うだけです -

try{

 java.util.Date date= new java.util.Date();
 System.out.println(new Timestamp(date.getTime())); 

BufferedWriter out = new BufferedWriter(new FileWriter("C://Desktop//output"+new Timestamp(date.getTime())+".txt"));

out.write("some information");

out.close; 

}catch(IOException e){
  e.printStackTrace();
 }

したがって、ステートメントの代わりにコードで、System.out.println();ステートメントを使用out.write() してテキスト ファイルに書き込むことができます。

これがお役に立てば幸いです。

于 2012-06-28T18:05:42.377 に答える