如何使用java将文件列表输出到文本文件

时间:2013-05-22 07:06:43

标签: java

你好,我是java的新手。我上周才开始学习java。

下面是我用来显示文件夹及其子文件夹的所有文件和相应文件大小的代码。

但是,我需要实现的是将相同的数据输出到文本文件,而不是在Eclipse控制台中显示输出。我一直在网上搜索如何在过去几天内完成这项任务,但我无法找到解决方案。

有人可以告诉我用什么代码来完成我的任务吗?

非常感谢!

public class ReadFile1 {
public static void main(String[] a)throws IOException{
showDir(1, new File("/Users/User/Documents/1 eclipse test/testfolder1"));

//File file = new File("/Users/User/Documents/1 eclipse test/testfolder1/puppy4.txt");

//long fileSize = file.length();

}
static void showDir(int indent, File file) throws IOException {


 for (int i = 0; i < indent; i++)

      System.out.print('-');
System.out.println(file.getName() + " - " + file.length() / 1024 + " KB");


  if (file.isDirectory()) {
  File[] files = file.listFiles();
  for (int i = 0; i < files.length; i++)
    showDir(indent + 4, files[i]);  


   }

}

}

3 个答案:

答案 0 :(得分:1)

以下是您转换的示例:

public class ReadFile1
{
    public static void main(String[] a) throws IOException
    {
        FileWriter fstream = new FileWriter("C:\\test.txt",true);
        BufferedWriter out = new BufferedWriter(fstream);

        showDir(out,1,new File("C:\\"));

        out.flush();
        out.close();
    }

    static void showDir(BufferedWriter writer, int indent, File file) throws IOException
    {
        for(int i = 0; i < indent; i++)
        {
            writer.write('-');
            //System.out.print('-');
        }

        writer.write(file.getName() + " - " + file.length() / 1024 + " KB");
        writer.newLine();

        //System.out.println(file.getName() + " - " + file.length() / 1024 + " KB");

        if(file.isDirectory())
        {
            File[] files = file.listFiles();
            for(int i = 0; i < files.length; i++)
            {
                showDir(writer,indent + 4, files[i]);
            }
        }
    }
}

答案 1 :(得分:0)

使用此处提到的文件编写代码更新showDir:

File file = new File("info.txt");
 // if file doesnt exists, then create it
  if (!file.exists()) {
        file.createNewFile();
}

PrintWriter writer = new PrintWriter(file);
writer.println(file.getName() + " - " + file.length() / 1024 + " KB");
writer.close();

答案 2 :(得分:0)

这会将控制台输出放入文本文件中:

   try{
    PrintStream out = new PrintStream(new FileOutputStream("output.txt"));
    System.setOut(out);
    }catch(SecurityException se){
       //Exception handling
      }

setOut(PrintStream out)重新分配“标准”输出流。它抛出SecurityException - 如果存在安全管理器且其checkPermission方法不允许重新分配标准输出流。