使用java删除文件
问题描述:
import java.io.*;
public class FileChecker {
private static final String FILE_DIR = "F:/study/";
private static final String FILE_TEXT_EXT1 = ".pdb";
private static final String FILE_TEXT_EXT2 = ".ali";
private static final String FILE_TEXT_EXT3 = ".txt";
private static final String FILE_TEXT_EXT4 = ".py";
private static final String FILE_TEXT_PREFIX1 = "target.";
private static final String FILE_TEXT_PREFIX2 = "blastOutput.";
//private static final String FILE_TEXT_PREFIX3 = "1OPL.";
//public static void main(String args[])
public FileChecker()
{
/*new FileChecker().deleteFile(FILE_DIR,FILE_TEXT_EXT1);
new FileChecker().deleteFile(FILE_DIR,FILE_TEXT_EXT2);
new FileChecker().deleteFile(FILE_DIR,FILE_TEXT_EXT3);
new FileChecker().deleteFile(FILE_DIR,FILE_TEXT_EXT4);
new FileChecker().deleteFile2(FILE_DIR,FILE_TEXT_PREFIX1);
new FileChecker().deleteFile2(FILE_DIR,FILE_TEXT_PREFIX2);
new FileChecker().deleteFile2(FILE_DIR,FILE_TEXT_PREFIX3);*/
}
public void deleteFile(String folder, String ext){
GenericExtFilter filter = new GenericExtFilter(ext);
File dir = new File(folder);
//list out all the file name with .txt extension
String[] list = dir.list(filter);
if (list.length == 0) return;
File fileDelete;
for (String file : list){
String temp = new StringBuffer(FILE_DIR).append(File.separator).append(file).toString();
fileDelete = new File(temp);
boolean isdeleted = fileDelete.delete();
System.out.println("file : " + temp + " is deleted : " + isdeleted);
}
}
public class GenericExtFilter implements FilenameFilter {
private String ext;
public GenericExtFilter(String ext) {
this.ext = ext;
}
public boolean accept(File dir, String name) {
return (name.endsWith(ext));
}
}
public void deleteFile2(String folder, String prefix){
GenericExt filter = new GenericExt(prefix);
File dir = new File(folder);
//list out all the file name with .txt extension
String[] list = dir.list(filter);
if (list.length == 0) return;
File fileDelete;
for (String file : list){
String temp = new StringBuffer(FILE_DIR).append(File.separator).append(file).toString();
fileDelete = new File(temp);
boolean isdeleted = fileDelete.delete();
System.out.println("file : " + temp + " is deleted : " + isdeleted);
}
}
public class GenericExt implements FilenameFilter {
private String prefix;
public GenericExt(String prefix) {
this.prefix = prefix;
}
public boolean accept(File dir, String name) {
return (name.startsWith(prefix));
}
}
public void deleteFile3(String ID, String Chain)
{
File file = new File(ID+".pdb");
if(file.delete())
{
System.out.println(ID+"deleted");
}
File file2 = new File(Chain+".pdb");
if(file2.delete())
{
System.out.println(Chain+"deleted");
}
}
}
此代码是从另一个类中调用的。当继续运行,因为我的几个代码应该是..它不会删除两个pdb文件,特别是当我尝试删除我的特定文件扩展名的文件。我尝试关闭它们,然后使用file.close(),然后再删除它们时,整个文件名和扩展名是知道但又无济于事。使用java删除文件
String FILE_DIR = "F:/study";
String FILE_TEXT_EXT1 = ".pdb";
String FILE_TEXT_EXT2 = ".ali";
String FILE_TEXT_EXT3 = ".txt";
String FILE_TEXT_EXT4 = ".py";
String FILE_TEXT_PREFIX1 = "target.";
String FILE_TEXT_PREFIX2 = "blastOutput.";
// String FILE_TEXT_PREFIX3 = "1OPL.";
new FileChecker().deleteFile(FILE_DIR,FILE_TEXT_EXT1);
new FileChecker().deleteFile(FILE_DIR,FILE_TEXT_EXT2);
new FileChecker().deleteFile(FILE_DIR,FILE_TEXT_EXT3);
new FileChecker().deleteFile(FILE_DIR,FILE_TEXT_EXT4);
new FileChecker().deleteFile2(FILE_DIR,FILE_TEXT_PREFIX1);
new FileChecker().deleteFile2(FILE_DIR,FILE_TEXT_PREFIX2);
// new FileChecker().deleteFile2(FILE_DIR,FILE_TEXT_PREFIX3);
BufferedWriter bw = new BufferedWriter(new FileWriter(FILE_DIR+TemplatePDBID+".pdb", true));
bw.close();
BufferedWriter bw1 = new BufferedWriter(new FileWriter(FILE_DIR+Template+".pdb", true));
bw1.close();
new FileChecker().deleteFile3((FILE_DIR+TemplatePDBID), (FILE_DIR+Template));
这是在最后调用我FileChecker类的其他类的片段。
我粘贴了,我收到
file : F:/study\1OPL.pdb is deleted : false
file : F:/study\1OPL_A.pdb is deleted : false
file : F:/study\model.pdb is deleted : true
file : F:/study\alignment.ali is deleted : true
file : F:/study\tempAli.ali is deleted : true
file : F:/study\1OPL.fasta.txt is deleted : true
file : F:/study\ModelDescription.txt is deleted : true
file : F:/study\ModellerOutput.txt is deleted : true
file : F:/study\script.py is deleted : true
file : F:/study\target.D00000001 is deleted : true
file : F:/study\target.ini is deleted : true
file : F:/study\target.rsr is deleted : true
file : F:/study\target.sch is deleted : true
file : F:/study\target.V99990001 is deleted : true
file : F:/study\blastOutput.xml is deleted : true
请帮我这个异常..我无法理解为什么它到底是跳在所有情况下的第一个两个文件。
答
另一个类不会写入F:/study
(或者至少您在编辑之前显示的代码没有写入)您期望的文件的位置,所以没有。
此外,您可能需要使用构造
File(File, String)
通过目录列表中去的时候,即写
fileDelete = new File(dir, file)
,而不是在一个StringBuffer构建的名称。
答
鉴于您编写的代码以及其他文件被成功删除的事实,只能得出结论,前2个文件存在权限或锁定问题,无法删除它们。你有没有试图从命令行中删除它们?
+0
是的,我可以通过命令提示符将其删除。 – kuks 2013-03-16 19:10:43
是否有任何错误/异常? – 2013-03-16 18:31:05
没有..它只是在继续运行时删除这些文件..但是如果这个类被单独调用..它删除它们 – kuks 2013-03-16 18:33:58
其他类写入'F:/ study/Nirmiti/.....'你试试删除在F:/ study – Ingo 2013-03-16 18:35:02