0
public static void main(String[] args) 
{
    try
    {
        File dir = new File("D:\\WayneProject\\Logs");

        if(dir.isDirectory())
        {   
            for(File child: dir.listFiles()) //NOT WORKING AFTER 1 ITERATION
            {
                if(child.isFile())
                {
                    String currentFile = child.getName();
                    String[] fileOutput = currentFile.split("\\.");
                    processFile(currentFile,fileOutput[0]);
                }
            }
        }
    }

请检查评论。即使文件在目录中,迭代文件也会给出 File not found 异常(对于第二次迭代)。你能告诉我为什么吗?谢谢

我的其他功能。fileOutput 用于设置目标文件的名称:

public static void processFile(String fileName, String fileOutput)
{
    try 
    {
        BufferedReader br = new BufferedReader(new FileReader(fileName));
        String str = null;

        File fileDest1 = new File("D:\\" + fileOutput + "1.csv");
        BufferedWriter wr1 = new BufferedWriter(new FileWriter(fileDest1));

        File fileDest2 = new File("D:\\" + fileOutput + "2.csv");
        BufferedWriter wr2 = new BufferedWriter(new FileWriter(fileDest2));

        wr1.write("Date, Memory Free\n");
        wr2.write("Date, %Idle\n");

        while((str=br.readLine()) != null)
        {
            String[] st = str.split("\\s+");  

        if (st[0].equals("MemFree:"))
        {
            wr1.write(st[1] + ",\n");
        }

        if(isDouble(st))
        {
            wr2.write(st[6] + "," + "\n");
        }

        if(isDate(st[0]))
        {
            String subStr = str.substring(0, 20);
            wr1.write(subStr + ",");
            wr2.write(subStr + ",");
        }

    }

        br.close();
        wr1.close();
        wr2.close();
    } 
    catch (FileNotFoundException e) 
    {
        e.printStackTrace();
    }
    catch(IOException e)
    {
        e.printStackTrace();
    }
}
4

2 回答 2

1

我怀疑这是两个方面的问题:

String currentFile = child.getName();
String[] fileOutput = currentFile.split(".");
processFile(currentFile,fileOutput[0]);
  • getName()仅返回文件名的最后一部分 - 目录中的名称。因此,除非您的processFile部分然后将目录部分放回,否则您将要求它处理当前工作目录中的文件。
  • split接受一个正则表达式。通过提供.正则表达式,您将拆分每个字符。我强烈怀疑您实际上想要currentFile.split("\\.")哪个实际上会分裂在一个点上。

你没有给出任何迹象表明processFile正在做什么,但我怀疑其中至少一个是根本原因,可能两者兼而有之。

值得退后一步,在这里查看您的诊断信息。如果您查看传递给您的内容,processFile您应该能够理解问题所在 - 这不是文件系统的问题,而是您如何计算processFile. 能够诊断出这样的错误是软件开发中非常重要的一部分。

于 2013-04-08T06:00:01.533 回答
0

你的代码对我来说很好。您可能遇到的错误是在 processFile 函数中,您正在从不存在的文件名创建文件对象。然后可能会尝试读取文件的内容,这可能会引发 FileNotFoundException。只需评论 processFile 函数,您的代码就可以工作。

于 2013-04-08T06:00:21.473 回答