問題タブ [fileutils]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
918 参照

java - Apache Commons lineIterator 使用時の OutOfMemory エラー

Apache Commons を使用して、1.2GB のファイルを 1 行ずつ反復処理しようとしていますFileUtils.lineIteratorLineIteratorただし、 が電話hasNext()をかけるとすぐにjava.lang.OutOfMemoryError: Java heap space. 私はすでに1GJavaヒープに割り当てています。

ここで何が間違っていますか?いくつかのドキュメントを読んだ後、LineIterator はファイル システムからファイルを読み取り、メモリにロードしないはずではないでしょうか?

コードは Scala であることに注意してください。

ここであなたの助けをありがとう!

0 投票する
1 に答える
4382 参照

java - Androidでファイル/フォルダーのアクセス許可をプログラムで変更する方法

アプリケーション データベースが格納されているフォルダのアクセス許可を変更したいと考えています。

Googleで検索した後、私はこれを見つけました:-

ここでは、FileUtilsクラスはandroid.osパッケージの一部である必要がありますが、パッケージのインポート中に見つけることができませんでした.

フォルダのアクセス許可を変更する方法FileUtilsやその他の方法はありますか?

データベースにアクセスしようとするとアプリをインストールした後、アプリが機能しなくなるため、権限を変更しています。私のデバイスはrootedそうであるため、データベースフォルダーの権限をからアプリの使用に変更すると、771完全777Root Browser機能し始めます。

では、アプリのインストール中にフォルダーのアクセス許可を変更する方法、つまりプログラムでunrootedデバイスに変更するにはどうすればよいですか?

DBHelperのクラス:-

0 投票する
2 に答える
590 参照

java - Java の FileVisitor.visitFile() が存在しないファイルで呼び出される可能性はありますか?

Java の java.nio.file.Files.walkFileTree() は、ファイルが存在しない (最近削除されたファイル) 場合でも、訪問者の visitFile() メソッドを実行します。

これは可能ですか?Windows を使用しており、ファイルはネットワーク ドライブにあります。

Files.walkFileTree() は FileTreeWalker.walk() を呼び出し、FileTreeWalker.walk() は Files.newDirectoryStream() を呼び出します。私が考えることができる唯一の説明は、 Files.newDirectoryStream が削除されたファイルを含む DirectoryStream を返すということです。

0 投票する
1 に答える
6982 参照

java - FileUtils.deleteDirectory は、ピリオドで終わるディレクトリの削除を試みます

プログラムで(Javaで)再帰的な解凍を行うディレクトリがあります(これは機能しているようです)が、最終的には多くのサブディレクトリとファイルを含むディレクトリが残ります。このメソッドを実行するたびに、白紙の状態から始めたいので、一時ディレクトリにあるフォルダーとその残りのファイルとサブディレクトリを常に削除します。

ただし、 FileUtils.deleteDirectory から本当に奇妙なエラーが発生します。

ディレクトリの末尾にピリオドがあると思われるようです (そうではないので、ピリオドを削除できないのは当然です)。このエラーは、サブディレクトリ内のフォルダーに表示されることがあります。誰もこれを見たことがありますか?

Commons IO 2.4 jar を使用しています。

編集ディレクトリにピリオドがないことを確認したので、非表示でない限り、メソッドがピリオドがあると考える理由がわかりません。そして、私がメソッドに与えるファイルのパスは、引数としてフィードする直前に設定され、誰でもわかるように、最後にピリオドがありません。

Windows 7でプログラムを実行しています。

編集これは、再帰的に解凍するために使用したコードです。

元の zip をルート ディレクトリに置き、そこから再帰的に解凍します。

これは、次のことを示す関連コードです。

最初に extractFolder の引数として rawFile.getCanonicalPath() (rawFile は最初のコードの抜粋で設定されます) を使用し、次に destFile.getAbsolutePath() に切り替えることに気付きました...おそらくそれと関係があります。これをテストする際の問題は、問題が決定論的ではないことです。起こることもあれば、起こらないこともあります。

0 投票する
2 に答える
605 参照

java - file.delete() は初回のみ機能します

現在、ファイルがデータベースにあるかどうかを確認する小さなプログラムを作成しています。さらに、データベースのハッシュが正しく計算されているかどうかを確認します (ここでは sha256)。ファイル名は、ファイルの (古くて間違っている可能性がある) sha です。

小さなワークフローをよりよく理解するには:

  1. (サブ) ディレクトリ (dir) からファイルを取得する
  2. ファイルから sha256 を計算する (shaNEW)
  3. ファイル名 (shaOLD) がデータベースにあるかどうかを確認します

    a) データベース内: shaOLD = shaNEW かどうかを確認します (sha が等しい場合: dir_inDB に移動します。そうでない場合: DB で更新し、名前を変更して dir_inDB に移動します)

    b) データベースにない: shaOLD = shaNEW かどうかを確認します (sha が等しい場合: dir_NOTinDB に移動します。そうでない場合: 名前を変更して dir_NOTinDB に移動します - データベースに追加しません)

私はそのようにsourceFileにアクセス/取得しています:

また、destinationFile は次のとおりです。

私の問題は次のとおりです。ファイルを移動した後、古いディレクトリ (dir) のファイルを削除したい [ただし、(サブ) ディレクトリ自体は削除しない]。移動も削除も正常に機能します (ただし、初回のみ)。ただし、2 回目以降はソース ファイルは削除されません。私はそのように移動/削除しています:

(独自のビルド以外のエラーや例外は発生しません)

私も試しました

しかし、その後、(時々)IOExceptionが発生します(ソースファイルを削除できません)

なぜsourceFile.delete()最初にしか機能しないのか、誰にも分かりますか?

よろしくお願いいたします。

ひし

編集:

私はそのように(コピーして削除するのではなく)ファイルを移動することを好みます:FileUtils.moveFile(sourceFile, destinationFile);

しかし、IOExeption をスローします。

スレッド「メイン」での例外 java.io.IOException: 元のファイルの削除に失敗しました ...\dir\c [0]c[1]\c[2]c[3]\shaOLD へのコピー後 ...\dir_inDB \c[0]c[1]\c[0]c[1]\shaNEW

org.apache.commons.io.FileUtils.moveFile(FileUtils.java:2835) で、metadatacheck.DatabaseCleanup.checkFiles(DatabaseCleanup.java:264) で、metadatacheck.DatabaseCleanup.checkFiles(DatabaseCleanup.java:225) で、metadatacheck.DatabaseCleanup で。メタデータcheck.DatabaseCleanup.main(DatabaseCleanup.java:49)でcheckFiles(DatabaseCleanup.java:225)

DatabaseCleanup.java:264:FileUtils.moveFile(sourceFile, destinationFile);

DatabaseCleanup.java:225: checkFiles(sourceFile)(機能: 上記参照)

DatabaseCleanup.java:49:checkFiles(dir);

EDIT2:

今試してみましsourceFile.renameTo(destinationFile);たが、ここでは関数renameTo()が実行されていません (単純な if-else を使用して renameTo() が実行されたかどうかを確認しました)。

EDIT3: (ハッシュ関数)