2010-12-20 14 views
0

このコードでは、基本的にユーザーが変数 'c​​atName'に保持されている削除したいファイルの名前を入力できるようにしてから、次のコードを実行してファイルのパスを削除して削除します。しかし、この方法ではファイルを削除しないため、動作していないようです。ただし、パス全体を入力するとファイルが削除されます。実行時にパスを検索してファイルを削除する

File file = new File(catName + ".txt"); 
String path = file.getCanonicalPath(); 
File filePath = new File(path); 
filePath.delete(); 

答えて

1

プログラムが実行されているのと同じディレクトリにあるファイルを削除する場合は、パスを指定する必要はありませんが、プログラムが実行されているディレクトリと同じディレクトリになく、あなたのファイルがどのディレクトリにあるのか知るためのプログラムですが、それは起こりません。

上記のコードに関して:次の例はすべて同じことをしています。あなたのパスが/ home/kim/filesであり、それがプログラムを実行した場所だとしましょう。

// deletes /home/kim/files/somefile.txt 
boolean result = new File("somefile.txt").delete(); 

// deletes /home/kim/files/somefile.txt 
File f = new File("somefile.txt"); 
boolean result = new File(f.getCanonicalPath()).delete(); 

// deletes /home/kim/files/somefile.txt 
String execPath = System.getProperty("user.dir"); 
File f = new File(execPath+"/somefile.txt"); 
f.delete(); 

つまり、削除可能なファイルが配置されているパスを指定する必要があります。ファイルが異なる場所や場所にある場合は、そのファイルのファイルシステムの検索を実装する必要があります。ファイルシステムが大きい場合は、時間がかかることがあります。それを実装する方法についてはHere's an articleを参照してください。

0

削除すると、それが保存されている場合は、チャンスはあなたが魔法のようにファイルを見つけるためにJavaを期待していることが何であるかに応じて、ファイル。

String catName = 'test' 
File file = new File(catName + '.txt'); 

プログラムは、たとえばCで実行されている場合:\ TESTPROG \ test.txtの:\ TESTPROG \を、そしてFileオブジェクトは、位置Cにあるファイルを指しています。ファイルオブジェクトは単なるヘルパーのものであるため、存在しないファイルを指すことに問題はありません(Fileは新しいファイルの作成に使用できます)。

特定の場所にあるファイルを削除しようとしている場合は、フォルダ名を標準、または実行場所からの相対パスでファイルパスに追加する必要があります。今

String catName = 'test' 
File file = new File('myfiles\\'+ catName +'.txt'); 

fileはCで募集しています:\ TESTPROG \ MyFilesフォルダ\ test.txtの。

ファイルをどこにでも見つけたい場合は、ファイルシステムを横断する再帰的な検索アルゴリズムが必要です。

0

あなたが提供されているコードの一部は、これに圧縮することができます。

boolean success = new File(catName + ".txt").delete(); 

削除が成功した場合success変数がtrueになります。完全な絶対パス(例:C:\Temp\test.txtファイルの場合はC:\Temp\test)を指定しない場合、プログラムはパスが現在の作業ディレクトリ(通常は起動元のディレクトリ)からの相対パスであるとみなします。

絶対パスまたは現在のディレクトリからの相対パスを指定する必要があります。プログラムは、他の場所で削除するファイルを見つけようとしません。

関連する問題