即使关闭相应的读者和编写者,也无法删除文件。 权限存在于文件中 file.delete()返回false 我的代码
main(){
try{
File file=new File(path);// Path where the file is present
FileReader reader = new FileReader(path);
BufferedReader br = new BufferedReader(reader);
FileWriter writer = new FileWriter(pathOther);
BufferedWriter wr = new BufferedWriter(writer);
// Readers and writers for i/o operations
while((String str=br.readLine())!=null){
wr.write(str); // Copying to another file
}
}catch(Exception e){}
finally{
reader.close(); //close reader
writer.close(); //close writer
file.delete(); //This returns false
}
答案 0 :(得分:2)
我猜测关于发生了什么事情是你关闭BufferedReader
但是让false
保持打开状态,这会留下一些文件句柄。然后,当您尝试删除该文件时,它会返回File file = new File(path);
try {
br = new BufferedReader(new FileReader(file));
// use the reader ...
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) br.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
// now close the file
file.delete();
,因为其他东西上有句柄。
请尝试以下代码:
path
<强>更新强>
在测试上面的代码时,我注意到了其他一些也可能导致您看到的观察结果。如果file.delete
处的文件不存在,则逻辑调用file.exists()
也会因此失败。因此,在尝试删除文件之前,应确保文件确实存在。您可以致电foreach (string s in links)
{
using (WebClient w = new WebClient())
{
try
{
Console.WriteLine("Attempting to download " + s);
w.OpenRead(s);
string content = w.ResponseHeaders["Content-Disposition"];
string filename = new ContentDisposition(content).FileName;
w.DownloadFile(new Uri(s), _directory + filename);
Console.WriteLine("Downloaded " + filename);
}
catch(WebException e)
{
Console.WriteLine(e.Message);
}
}
}
进行检查。
答案 1 :(得分:0)
首先,您应该关闭BufferedReader
而不是FileReader
(BufferedReader
将依次调用close()
上的FileReader
:
所以而不是:
reader.close(); //close reader
做的:
br.close();
(并省略完整的冗余评论)。
此外,由于File.delete()
只返回一个布尔值,并且没有告诉您为什么它失败了,您可以通过调用Files.delete
来获取更多信息:
try {
Files.delete(file.toPath());
} catch (IOException e) {
// e now contains information about why it can't delete.
}
答案 2 :(得分:0)
什么都不会打CALL FUNCTION 'DB_TRUNCATE_TABLE'
EXPORTING
tabname = 'ZWFM_T_LOGS'.
COMMIT WORK.