【问题标题】:Working with BufferedOutputStream使用 BufferedOutputStream
【发布时间】:2015-03-23 07:21:53
【问题描述】:

我使用 BufferedOutputStream 写入文件,它在指定的驱动程序中写入文件和目录列表,代码如下:

import java.io.File;
import java.nio.file.*;
import java.io.*;
import static java.nio.file.StandardOpenOption.*;
public class DirectoryReader {

static int spc_count=-1;

static void Process(File aFile)
{
String s;
Path file =
Paths.get("C:\\Java\\Files1.txt");
try
{
 OutputStream output= new 
 BufferedOutputStream(Files.newOutputStream(file,CREATE));

 spc_count++;
 String spcs = "";
 byte [] data= new byte [2048 * 2048];
 for (int i = 0; i < spc_count; i++)
 spcs += " ";
 if(aFile.isFile())
 {
 System.out.println(spcs + "[FILE] " + aFile.getPath());
 s=aFile.getPath();
 System.out.println(" " + s);
 data = s.getBytes();
 output.write(data);
 output.write(13);
 output.write(10);
 output.flush();
 }
else if (aFile.isDirectory()) {
{
System.out.println(spcs + "[DIR] " + aFile.getPath());
s=aFile.getPath();
data = s.getBytes();
output.write(data);
output.write(13);
output.write(10);
output.flush();
}
File[] listOfFiles = aFile.listFiles();
if(listOfFiles!=null) {
for (int i = 0; i < listOfFiles.length; i++)
Process(listOfFiles[i]);
} else {
System.out.println(spcs + " [ACCESS DENIED]");
}
}
output.close();
spc_count--;
}
catch(Exception e)
    {
    System.out.println("Message: " + e);
    }


}


public static void main(String[] args) {
String nam = "D:\\Notes";
File aFile = new File(nam);
Process(aFile);
}

}

但是当我去查看文件时,我只找到最后一个写入的文件,有时我会发现混词。

【问题讨论】:

标签: java file bufferedstream


【解决方案1】:

您正在对Process 方法进行循环调用。这个方法在执行时创建NEW FILE,所以之前的内容被简单地覆盖了。我建议,您应该创建输出流,并将其作为参数传递给每个调用 Process 消息。这样,您将提供用于存储数据的单个输出流。问题就会消失。

【讨论】:

  • 我尝试比较文件名但没有找到匹配项.. 我不知道为什么虽然文件名和来自 file.getName() 的字符串相同
  • 这不是重点吗?要将所有文件目录和子目录列出到单个文件中?
  • 它起作用了..错误在 output.close 中,我在方法结束时关闭了文件,尽管我会再次调用它..当然还有你所说的关于传递 OutputStream 的两个作为一个论点..非常感谢你的帮助,你真的对我很好:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-11
  • 1970-01-01
  • 2020-07-15
相关资源
最近更新 更多