gpt4 book ai didi

java - 即使文件位于目录中,迭代文件也会给出文件未找到异常。你能告诉我为什么吗?谢谢

转载 作者:行者123 更新时间:2023-12-01 14:41:51 24 4
gpt4 key购买 nike

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

请查看评论。即使文件位于目录中,迭代文件也会给出“找不到文件”异常(第二次迭代)。你能告诉我为什么吗?谢谢

我的其他功能。 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();
}
}

最佳答案

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

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

您没有给出任何关于 processFile 正在做什么的指示,但我怀疑至少其中之一是根本原因,并且可能两者都是。

这里也值得退一步看看你的诊断。如果您查看传递给 processFile 的内容,您应该能够理解出了什么问题 - 这不是文件系统的问题,而是您如何计算 参数的问题处理文件。能够诊断这样的错误是软件开发中非常的重要组成部分。

关于java - 即使文件位于目录中,迭代文件也会给出文件未找到异常。你能告诉我为什么吗?谢谢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15872093/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com