我试图通过lastModified日期过滤文件搜索程序,使用Epoch值作为比较。
当我尝试执行此操作时,它会给我以下错误:
线程中的异常" AWT-EventQueue-0" java.lang.NumberFormatException:对于输入字符串:" 1408350905359"
显然我的变量的初始值是空的,并且我被告知要确保进行验证或异常以使其不是......好吧,是空的。事情是,我很糟糕,不能。我会发布我遇到问题的代码。有人可以帮忙吗?
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
String direcdate=direc1.getText();
String Phrase = (" Pastas/Ficheiros em: '" + direcdate + " ----- : ' ");
File folder = new File(direcdate);
File[] listOfFiles=folder.listFiles();
for (File listOfFile : listOfFiles)
{
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
long epoch = System.currentTimeMillis();
String str = ultimaalt.getText();
int q =Integer.valueOf(str);
long DIAS = q*86400000;
long currentdate;
currentdate = epoch - (q*DIAS);
String lastmodstr;
lastmodstr = valueOf(listOfFile.lastModified());
//NAO CONSIGO METER ESTA MERDA A FUNCIONAR
// PRECISO DUM TRY CATCH EXCEPTION
// AGORA QUAL?
// fml.exe
int lastmodint;
lastmodint=Integer.valueOf(lastmodstr);
if (lastmodint<= currentdate)
{
if(listOfFile.isFile())
{
Phrase = (Phrase + " \n -->"
+ listOfFile.getName ()
+ " Ultima alteração:"
+ sdf.format(listOfFile.lastModified())
+ ". ");
} else if (listOfFile.isDirectory()) {
Phrase = (Phrase + " \n -->"
+ listOfFile.getName()
+ "(Pasta)" + " Ultima alteração:"
+ sdf.format(listOfFile.lastModified())
+ ". ");
} else {}
}
}
jTextPane1.setText(Phrase); // TODO add your handling code here:
}
编辑:
固定!
答案正在改变:
int lastmodint;
lastmodint = Integer.valueOf(lastmodstr);
到
Long lastmodint;
lastmodint=Long.valueOf(lastmodstr);
谢谢!
答案 0 :(得分:0)
您的代码中需要进行简单的更改
<强>替换强>:
int lastmodint;
lastmodint=Integer.valueOf(lastmodstr);
以强>
int lastmodint;
lastmodint=Integer.parseInt(lastmodstr);
我希望这会对你有所帮助
答案 1 :(得分:0)
好吧,为了不让它变空,抛出异常,就像这样:
String str = ultimaalt.getText();
if (str == null) {
throw new NullPointerException("No text captured.");
}
if (str.isEmpty()) {
throw new InvalidStateException("No text captured.");
}
此外,您的值为long
,而不是int
,因此Long.valueOf()
与此相关。