問題タブ [java-io]
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.
java - Process Builder の waitFor() の問題とオープン ファイルの制限事項
私はいくつかのコードを継承しました:
基本的に、キーと値のペアをファイルとしてディスクに保存するのには、古くからブードゥー教に基づいた理由があります。私は本当にそれに入りたくありません。
ただし、IO 例外が多数残っています。
そして、私が意味する束とは、10,000〜数百万の領域を意味します
waitFor 呼び出しは、プロセスが完了して終了するのを待ってこれらの発生を停止するためのものだと感じましたが、ファイルが実際に閉じられる前に chmod が結果を返していると思います。それがこれらの例外の原因であるかどうかは誰にもわかりますか?
私のもう1つの傾向は、Java側で何千ものファイルの開閉が十分に迅速に行われておらず、何か他のことが起こっていることです. fw.close() が呼び出されています。
私はJavaにかなり慣れていませんが、これは私を困惑させた奇妙なものでした。(幸いなことに、アプリはまだ何らかの形で実行されています..非常に大きなログファイルを吐き出した後です)
他の誰かがこれを回避する方法を考えることができますか、バッファをクリアするか、ファイルのオープン制限をjvmがそれ自体に追いつくことができるものに増やします(それが問題であると仮定します)
java - Java I/O ストリーム。違いは何ですか?
java.io
多くの異なるI/Oストリーム (FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedStreams... など) があり、それらの違いを判断するのに混乱しています。あるストリーム タイプが別のストリーム タイプよりも優先される例は何ですか? また、それらの実際の違いは何ですか?
java - GzipInputstream を作成しようとするたびにクライアント コードが「ランダムに」失敗する
基本的に複数のクライアントに対応するサーバーがあります。私は基本的にgzip(入力/出力)ストリームを使用してクライアントサーバー間でデータを圧縮しています。
多くのクライアントが同時にサーバーにリクエストを送信できるため、各クライアントに対応するスレッドがあります。
現在、私が経験している問題は、サーバーへの接続が確立された後に実行しようとするたびに、「ランダムに」一部のクライアント コードが失敗することです。
私は得るjava.io.EOFException
。
そして、ランダムに言うと、例外で見つけることができるパターンがないことを意味します. リクエストは適切に送信されています (それ以外の場合、クライアントのリクエストに対しては機能しません)。
私はたくさん検索しました..しかし、何も見つかりませんでした.. :(
上記の問題に関する指針はありますか?
新しい接続を受け入れ、新しいスレッドを生成するサーバー コード。
スレッド内のコード..
取得した例外のスタックトレースは次のとおりです。
java - 進行状況レポート用の InputStream または Reader ラッパー
そのため、ファイル データを を受け取る API にフィードしていますReader
。進行状況を報告する方法が必要です。
FilterInputStream
をラップしFileInputStream
、読み取ったバイト数とファイルの合計サイズを追跡し、一部のupdate()
進行状況を報告するために何らかのイベントを発生させる (または何らかのメソッドを呼び出す)実装を作成するのは簡単なようです。
(あるいは、読み取った絶対バイト数を報告し、他の誰かが計算を行うこともできます。他のストリーミング状況では、より一般的に役立つかもしれません。)
私はこれを以前に見たことがあり、以前に行ったことがあるかもしれませんが、コードを見つけることができず、怠け者です。誰かがそれを敷設しましたか?または、誰かがより良いアプローチを提案できますか?
1年(と少し)後…
以下のAdamskiの回答に基づいて解決策を実装しましたが、うまくいきましたが、数か月使用した後はお勧めしません. 更新が多い場合、不要な進捗イベントの発生/処理は莫大なコストになります。基本的なカウント メカニズムは問題ありませんが、プログレス ポーリングを気にかけている人は、プログレス ポーリングをプッシュするよりもはるかに優れています。
(合計サイズがわかっている場合は、1% を超える変化ごとにイベントを発生させるなどの方法を試すことができますが、実際には問題を起こす価値はありません。多くの場合、そうではありません。)
java - JVM出口でファイルが削除されることを確認する
File.deleteOnExit()は、JVMが途中で強制終了された場合でも、ファイルが削除されることを保証しますか?
java - JARファイル内のファイルを一覧表示するにはどうすればよいですか?
ディレクトリからすべてのファイルを読み取るこのコードがあります。
それは素晴らしい働きをします。ディレクトリ「text_directory」の「.txt」で終わるすべてのファイルで配列を埋めます。
JARファイル内で同様の方法でディレクトリの内容を読み取るにはどうすればよいですか?
だから私が本当にやりたいのは、JARファイル内のすべての画像をリストして、それらをロードできるようにすることです。
(これは、「CompanyLogo」が「ハードコーディング」されているため機能しますが、JARファイル内の画像の数は10〜200の可変長である可能性があります。)
編集
したがって、私の主な問題は次のようになると思います。メインクラスが存在するJARファイルの名前を知る方法は?
確かに、を使用してそれを読むことができましたjava.util.Zip
。
私の構造は次のようなものです。
それらは次のようなものです:
今、私は例えば「images /image01.png」を使ってロードすることができます:
しかし、ファイル名を知っているという理由だけで、残りの部分については動的にロードする必要があります。
java - javaからのreadXmlfile
こんにちは私はJavaで小さなクラスを作成してxmlファイルを文字列として読み取りましたが、私の質問は次のとおりではありません:文字列を追加してPhysical_Order_List_Arrayタグの間にあるものだけを出力する方法
ここにJavaクラスがあります:
これは非常に大きなxmlファイルの一部です:
ご回答ありがとうございます
java - ファイルが存在する場合、Apache FileUtils.writeLines()を作成してファイルに追加できますか?
コモンズのFileUtilsはかなりかっこよく見え、ファイルに追加することができないとは信じられません。
上記は毎回ファイルの内容を置き換えるだけであり、このコードと同じように、このようなものにタグを付けて終了したいと思います。
javadocを検索しましたが、何も見つかりませんでした。私は何が欠けていますか?
java - java.io.Buffer* ストリームは通常のストリームとどう違うのですか?
1) バッファリングされたストリームはバックグラウンドでどのように機能しますか? 通常のストリームとどのように異なりますか? また、それらを使用する利点は何ですか?
2)DataInputStream
もバイトベースです。しかし、それにはメソッドがありreadLine()
ます。ここでのポイントは何ですか?
java - Java IO を使用してファイルを書き込む際に、このサイレント エラーを修正するにはどうすればよいですか?
commons-io/java-io で奇妙な問題が発生しています。基本的に、ファイルの作成は例外なく静かに失敗します。
コモンズコードを調べて、これがサイレントに失敗する理由を理解しようとしましたが、例外をスローする必要があるようです。( FileUtils.javaの 1338 行目と 163 行目、およびIOUtils.javaの 927 行目を参照してください。)
この問題を修正するために、前の行の後にこのチェックをコードに追加しました。
ただし、ファイルの作成に失敗した場合でも、このブロックには入っていません。
私はこれで頭がいっぱいです.Java IOの経験が豊富な人が助けてくれますか?