2013-03-16 2 views
0
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()를 사용했다가 전체 파일 이름과 확장자를 알았을 때 다시 삭제했지만 다시는 삭제하지 않았다.자바를 사용하여 파일 삭제

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 

내가 정확하게 모든 경우에 1 개의 파일을 건너 뛰는 이유를 이해 할 수없는입니다 ..이 이상 저를 도와주세요 받았다.

+0

오류/예외가 있습니까? –

+0

아니요. 연속으로 실행하면 파일이 삭제됩니다.하지만 클래스가 단독으로 호출되면 ..이 파일이 삭제됩니다. – kuks

+0

다른 클래스가'F :/study/Nirmiti/..... ' F :/study – Ingo

답변

0

다른 클래스는 파일을 예상 한 곳의 F:/study (또는 편집하기 전에 표시 한 코드)에 쓰지 않으므로 아무 것도 없습니다.

는 또한, 당신은 대신 StringBuffer에있는 이름과 구성의

fileDelete = new File(dir, file) 

쓰기 생성자

File(File, String) 

디렉토리 목록을 통해가는, 즉를 사용할 수도 있습니다.

+0

안녕하세요. 당신의 도움을 주셔서 감사합니다. 그러나 모든 파일은 동일한 위치에 기록됩니다. 내가 처음 질문을 올렸을 때 타이핑 실수가있었습니다. 삭제 된 모든 파일은 동일한 위치에 저장됩니다. – kuks

+0

그럼 파일이 존재합니까? 임의로 삭제를 방지하는 파일 속성을 가지고 있습니까? f.exists && f.isWritable는 true 여야합니다. – Ingo

+0

예 이러한 파일이 있습니다 .. 내 폴더 위치에서 삭제되지 않은 파일을 볼 수 있습니다. 예가 존재하고 isWritable이 참입니다. – kuks

0

작성한 코드와 다른 파일이 성공적으로 삭제된다는 사실을 감안할 때 삭제되지 않도록 처음 두 파일에 대한 사용 권한 또는 잠금 문제가 있다고 결론 지을 수 있습니다. 명령 줄에서 삭제하려고 했습니까?

+0

예 명령 프롬프트에서 삭제할 수 있습니다. – kuks

관련 문제