2011-09-21 83 views
0

每当我想补充:文件不就算是真,如果语句删除,但删除不if语句

if(lines[0].equalsIgnoreCase("owner: " + sender.getName()))

文件不会删除,但还没有这样的:

System.out.println("Deleted message successfully!");

仍然运行,这意味着if语句是真实的。

每当我删除上面的if语句,它都会删除文件。

下面是代码:(不是最好的)

String lines[], strLine; 
int a = 0; 
String fileLoc = currentDir + "//plugins//ExtendedSigns//" + c[1] + ".txt"; 
LineNumberReader lnr = new LineNumberReader(new FileReader(new File(fileLoc))); 
FileInputStream in = new FileInputStream(fileLoc); 
BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
lnr.skip(Long.MAX_VALUE); 
lines = new String[1 + lnr.getLineNumber()]; 
while ((strLine = br.readLine()) != null) 
{ 
    lines[a] = strLine; 
    a++; 
} 
if(lines[0].equalsIgnoreCase("owner: " + sender.getName())) 
{ 
    File del = new File(currentDir + "//plugins//ExtendedSigns//" + c[1] + ".txt"); 
    del.delete(); 
    System.out.println("Deleted message successfully!"); 

} 
else 
{ 
    System.out.println("Deleted message unsuccessfully! You do not own it!"); 
} 
+0

delete返回一个布尔值,指示文件是否被实际删除。至于为什么不,不知道 - 当你运行它时,你是否在你认为的目录中?你有权限吗?那些额外的正斜杠是什么? –

+0

为什么你需要在路径中加入双'/'? –

+0

我可以删除manuly文件(右键单击>删除),并在if(lines [0] .equalsIgnoreCase(“owner:”+ sender.getName()))不存在时。由于在没有if语句的情况下删除,该目录必须正确。有没有办法'强制'删除它? – matt

回答

2

试试这个:

if(del.delete()) System.out.println("Deleted message successfully!"); 
else System.out.println("Deleted message unsuccessfully! You do not own it!"); 
+0

说,不删除。但我可以手动删除 – matt

+0

然后,也许路径不正确,使用\\而不是// –

+0

问题是,它没有删除if(lines [0] .equalsIgnoreCase(“owner:”+ sender.getName()) ) 那里。但它不删除 – matt

1

也许你的文件不被关闭?在比较之前,调用br.close()以便文件关闭(并且linenumberreader也应该关闭)。可能没有你的if/else语句,JVM正在关闭这些文件,或者它不再被锁定。可能与sender有关。