2013-05-22 17 views
0

hello我是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]); 


    } 

} 

} 
+0

你可以使用http://docs.oracle.com/javase/tutorial/essential/io/buffers.html – ritesh

+0

您可以使用Java文件IO操作。 –

回答

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]); 
      } 
     } 
    } 
} 
+0

谢谢alexandre。我想你的代码,但得到以下错误...异常线程 “main” 显示java.lang.NullPointerException \t在ReadFile1.showDir(ReadFile1.java:49) \t在ReadFile1.showDir(ReadFile1.java:51) \t在ReadFile1.main(ReadFile1.java:27) – user2408281

+0

@ user2408281你有没有更改过你的路径? –

+0

哦不,我用你的确切代码...我认为这将是可以使用你的代码? – user2408281

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(); 
0

这将使控制台输出到文本文件:

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

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

相关问题