gpt4 book ai didi

java - 重试打开目录中的文件

转载 作者:行者123 更新时间:2023-12-01 15:05:33 25 4
gpt4 key购买 nike

我正在尝试使用以下代码来打开某个目录中的文件。文件的名称是按日期指定的,但缺少一些日期。我想迭代日期来获取文件,并让代码在每次找不到文件时返回 1 天,直到最终找到一个文件(currentdate 是一个全局变量和奇怪的 xml 元素是因为我正在使用处理)。

我认为代码应该做的是:

  1. 尝试打开给定日期的文件。
  2. 出现错误时,它会捕获并获取新日期。
  3. 重复该过程,直到找到有效日期。
  4. 当找到有效日期时,它将转到 break 所在的行并退出循环。

但由于某种原因,它会做一些奇怪的事情,比如编辑 # 有时它跳得太多,尤其是在第一个月附近 #我的逻辑是否因某种原因不起作用?谢谢

String strdate=getdatestring(counter);
int counter=0;
while(true){
try{
xmldata = new XMLElement(this, "dir/" + strdate + "_filename.xml" );
break;
}catch(NullPointerException e){
counter +=1;
strdate=getdatestring(counter);
}}

String getdatestring(int counter) {
Date firstdate=new Date();
int daystosum=0;
String strcurrentdate="";

if(keyPressed && key=='7'){
daystosum=-7;
}
daystosum=daystosum-counter;

Calendar c=Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

try{
firstdate=formatter.parse("2012-04-13");//first day of the database
}catch(ParseException e){
println(e);
}
c.setTime(currentdate);
c.add(Calendar.DATE,daystosum);
currentdate=c.getTime();
if(currentdate.before(firstdate)){
currentdate=firstdate;
}
strcurrentdate=formatter.format(currentdate);

return strcurrentdate;
}

最佳答案

我相信一旦你这样做了,

          daystosum=daystosum-counter;

您需要将计数器重置为

          counter = 0;

否则下次它会减去更大的数字,例如首先,假设 daystosum 为 0,counter 为 5,在 daystosum=daystosum-counter; 之后,daystosum将变为-5。再次进入 while 循环,如果找不到文件,则计数将增加到 6。在这种情况下,您将得到 `daystosum=daystosum-counter; 作为 -5-6 = - 11,但您希望它移动到 -6。重置计数器应该可以解决您的问题。

另一方面,我认为您可以使用 file.listFiles() 从父目录列出文件,并对文件名执行搜索。在这种情况下,您不会尝试一次又一次地打开文件。

关于java - 重试打开目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13003288/

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