2010-11-29 5 views
5

私はLinuxからWindowsにいくつかのコードを移植しようとしています。私は実際にはWindowsについてよく知らないので、私は一種の飛行機である。問題のコードはorg.apache.commons.io.FileUtilsWindowsでこのコードが死んでいるのはなぜですか?

// If the mergesegs worked, delete the segment dirs 
    for (File file : segments.listFiles()) 
    { 
     if (!file.equals(mergedSegFile)) 
     { 
      LOG.debug("deleting segment dir " + file); 
      FileUtils.deleteDirectory(file); 
     } 
    } 

segmentsを使用して、いくつかのディレクトリを削除しようとするmergedSegFileがあるとして、ファイルです。それはIOException "Unable to delete file: c:\www\tomcat\crawls\test\TestingCode.site\crawldir\segments\20101128194700\parse_test\part-00000\data"で死ぬ。

これらのファイルは、同じプログラムの以前の実行(Nutchのクロールを実行する)によって作成されたものです。 cygwinの下ls -lを行うと、ユーザーやグループが正しい示しているが、パーマは000

ですさらに情報:

  • dirは私の権限については何も教えてくれありません。
  • cmd.exeウィンドウでdel、またはcygwin bashウィンドウでrm -rfのディレクトリを削除できます。
  • 問題のファイルとそのディレクトリは、同じプログラムの同じ実行で以前に作成されたものです。
  • コンピュータはWindows 7を実行しているので、NTFSであることを前提としています。
+0

ディレクトリを削除しようとするプログラムが、そのディレクトリまたはファイルを使用している可能性がありますか?ディレクトリを削除するコードを抽出し、そのディレクトリをコマンドライン引数として取り出して削除する小さなテストコードを作成します。それは動作しますか? – khachik

+0

例外のStackTraceでもっと詳しい情報が得られるかもしれませんか? – keuleJ

答えて

3

多くの可能性があります。パス自体は悪く見えません。あなたの最善の策は、コマンドプロンプトからそのディレクトリを手動で削除し、どのようなエラーが表示されるかを確認することです。チェックする

もの:

  • は、アプリケーションで使用され、ディレクトリ、またはその内容のいずれかのですか?
  • ディレクトリまたはそのファイルのいずれかが読み取り専用ですか。 (dirで確認してください。lsではありません)。
  • ディレクトリまたはそのファイルのいずれかに特別な権限があり、あなたは管理者ではありませんか?
  • Btw、これはNTFSです、私は推測しますか?
+0

- "del"でファイルを削除できます。 –

+0

- dirはすべてのアクセス許可について何も教えてくれません。私はそれがNTFSだと仮定します - それはWindows 7です。 –

+0

"data"はファイルかディレクトリですか?また、特別な権限を持っていますか? – EboMike

関連する問題