ここで鍵となるのはJavaです。ファイルを削除できるようにする必要がありますが、ユーザーはごみ箱から「削除を取り消す」ことができることを期待しています。私が知る限り、これは不可能です。他に誰か知っていますか?
9 に答える
10 年後の Java 9 では、ファイルをごみ箱に移動する方法が組み込まれています。
java.awt.Desktop.moveToTrash(java.io.File):
public boolean moveToTrash(File file)指定したファイルをごみ箱に移動します。
パラメーター:
ファイル - ファイル
戻り値:
ファイルがゴミ箱に移動された場合は true を返します。
基盤となるプラットフォームでこの機能が利用できるかどうかは、 でテストできますDesktop.isSupported(Desktop.Action.MOVE_TO_TRASH)。
さまざまな理由から、Windowsには単にごみ箱に対応するフォルダーという概念がありません。
正しい方法は、JNI を使用して Windows SHFileOperationAPIを呼び出し、構造体にFO_DELETEフラグを設定することです。SHFILEOPSTRUCT
- SHFileOperation ドキュメント
- SHFileOperation を使用してファイルをコピーする Java の例(同じ記事のごみ箱のリンクは機能しません)
SHFileOperation を使用してファイルをごみ箱に送信する例への正しいリンクは次のとおりです。
I have found this RFE on suns site: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5080625
This tells me there is not a native java way to do this. and as @John Topley just posted the only solution is a JNI call.
fileutil incubator プロジェクト ( Java Desktop Integration Componentsプロジェクトの一部) を参照してください。
このインキュベータ プロジェクトは、これらのファイル ユーティリティ機能をホストするために作成されます。そのほとんどは、J2SE の java.io.File クラスの拡張機能です。ファイルをごみ箱に送る、ディスクの空き容量を確認する、ファイル属性にアクセスするなどの機能について、Java 開発者から頻繁に要求があります。このプロジェクトは、そのような頻繁に要求される API に対処します。
これは Windows だけでなく、他のプラットフォーム (Linux、Mac OS X) でも機能するはずです。
John Topley が示唆しているように、ネイティブ操作でこれを行う必要があります。一部の JNI で手を汚したくない場合は、Java Native Accessと呼ばれるライブラリを使用してネイティブ呼び出しを行うことができます。