- PR -

FILEクラスについて

1
投稿者投稿内容
ケンジ
会議室デビュー日: 2003/12/04
投稿数: 7
お住まい・勤務地: 川崎市川崎区
投稿日時: 2003-12-22 18:09
フォルダを削除する場合、指定したディレクトリの中に何もない場合は削除できるのですが、ディレクトリの中にファイルがあった場合は削除できなくて困っています。
ディレクトリの中のファイルごとフォルダを削除する場合どの用にしたらいいのでしょうか? よろしくお願いします。

public class DeleteFile {
public DeleteFile(String fname){

try{

// ファイルを削除。
File fileDel=new File(fname);
fileDel.delete();

}
catch(Exception e){

}


}
}
おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2003-12-22 18:35
引用:

ディレクトリの中のファイルごとフォルダを削除する場合どの用にしたらいいのでしょうか?


ディレクトリ内のファイルを全て削除してからそのディレクトリを削除すれば良いだけですよ。
ディレクトリ内に更にサブディレクトリがある場合は、これを再帰的に行います。
一発で全部消してくれるようなAPIは無いと思いますよ。

# ちなみに、昔自分で作った気がします。
みーちく
大ベテラン
会議室デビュー日: 2002/08/29
投稿数: 131
投稿日時: 2003-12-22 19:02
みーちくです。

おばけさんのおっしゃる通りの方法できるとおもいます。
私の環境は、linuxなのでよく外部コマンドを使って削除してます。
参考になれば・・・。
コード:
/*----------------------------------------------------*/
/* 対象のディレクトリ以下のファイルを出力               */
/* dir     対象ディレクトリパス                        */
/* return  true 削除功                                */
/*---------------------------------------------------*/
public boolean Dir_Del(String dir){
	Runtime rt 		= Runtime.getRuntime();
	Process pr 		= null;
	String command 		= "rm -rf " + dir;
	try{
		// 指定されたコマンドを、独立したプロセスで実行
		pr = rt.exec(command);
		pr.waitFor();
		int end = pr.exitValue();
		File file = new File(dir);
		if(end != 0 || file.exists()){
			return false;
		}
	}catch(Exception e){
		e.printStackTrace();
		return false;
	}
	pr = null;
	return true;
}


おばけ
ぬし
会議室デビュー日: 2002/11/14
投稿数: 609
お住まい・勤務地: 東京都江東区
投稿日時: 2003-12-22 19:57
引用:

私の環境は、linuxなのでよく外部コマンドを使って削除してます。


う〜ん、エラーハンドリングできないし、あまりお勧めできませんが、、、

お手軽なのは分かります。
でも、"rm -rf"って、fつけるのは結構やばいんじゃあ、、、
このJavaプログラムがroot権限で動くところとかちょっと想像したくないかも
コガちゃん
会議室デビュー日: 2003/12/13
投稿数: 10
投稿日時: 2003-12-23 21:19
ウィンドウズOSでも動くようにするならこんな感じでいかがでしょう。
(でも怖いですねフォルダごと丸ごと削除って)
コード:

import java.io.*;
public class FileDelete{
public static void main(String args[]){
try{
fileDelete(args[0]);
}catch(IOException e){
e.printStackTrace();
}
}
public static void fileDelete(String file) throws IOException{
File f = new File(file);
fileDelete(f);
}
// 以下のメソッドがディレクトリ内のファイルを再帰的に消去する部分です
public static void fileDelete(File file) throws IOException{
if(file.isDirectory()){
File[] list = file.listFiles();
for(int i = 0; i < list.length; i++){
fileDelete(list[i]);
}
}
file.delete();
}
}



[ メッセージ編集済み 編集者: コガちゃん 編集日時 2003-12-23 21:31 ]

[ メッセージ編集済み 編集者: コガちゃん 編集日時 2003-12-23 21:43 ]
1

スキルアップ/キャリアアップ(JOB@IT)