問題タブ [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.
classpath - Javaでjarファイルからファイルにアクセスする際の問題
App.jarというjarがあり、その構造は次のとおりです。
今私が欲しいのは私がからconfig.properties
ファイルにアクセスしたいということですMyClass.class
java - Java を使用して新しいファイルが生成されるまで、以前の XML ファイルを削除する
定期的に、PrintWriterを使用して指定された場所にある xml ファイルにデータベースからのデータを書き込んでいます。xml の生成中に問題が発生した場合、xml ファイルが残らないため、現在の実行で xml の生成が完全に完了するまで、既存の xml ファイルを削除したくありません。現在の実行でファイルの生成/書き込みが完全に完了するまで、現在のファイルの削除が保留されるこのシナリオの処理に関する推奨事項をいただければ幸いです。
java - Javaで画像をつなぎ合わせる
javaを使用していくつかの画像をつなぎ合わせようとしています。つなぎ合わせたい画像がたくさんありますが、それらはすべて同じ寸法なので、実際にはそれらを並べて配置するだけの問題だと思います。私はそれを動作させていますが、それは非常に遅く、おそらく非常にメモリを消費します。もっと簡単な方法があるかどうか疑問に思います:
java - ユーザーが確認または変更できるように、java.io.Console にデフォルトを表示させるにはどうすればよいですか?
新しいhttp://download.oracle.com/javase/6/docs/api/java/io/Console.htmlクラスは、コンソールからのユーザー入力には問題ないようですが、行を読み取る方法はないようですが、デフォルトはすでに入力されています(したがって、ユーザーはEnterを押して確認するか、削除して変更するだけです)。
クラスでこれを行うにはどうすればよいですか?
java - 1秒あたりのメソッド呼び出しを制限します(制限に達したときに拒否します)
IOを実行するメソッドがあり、バックエンドが処理できない同時リクエストのバーストを取得しないように、呼び出し(1秒あたり)をこのメソッドに制限したいと思います。
要件が「1秒あたり」なしで発生した場合は、スタック(基本的にはカウンターのみ)を使用しoffer()
、要求を開始するとき、および完了しpoll()
たときに使用できます。「1秒あたり」の要件では、特定の時間の経過よりも古いスタック上のスロットをどうにかしてクリーンアップする必要があります。
どうすればそれを正しく行うことができますか?明らかに、構造はスレッドセーフである必要があります。
お時間をいただきありがとうございます!
java - Javaコードで開くファイルの数を減らす
こんにちは私はブロックを使用するいくつかのコードを持っています
ただし、このアプリケーションの特徴は、平均で4000を超える多数の一時ファイルを生成する必要があることです(パーティションテーブルへのHiveの挿入に使用されます)。
問題は時々私が例外をキャッチすることです
アプリの実行中。
ファイルがすでに閉じられていて、もう使用されていないことをOSに伝える方法があるとしたら、私は傷つきます。
開いているファイルの数は減りません。Javaコードでこれを行う方法はありますか?
で開いているファイルの最大数をすでに増やしました
更新: 問題を解決しようとしたので、コードを分けて各部分を調査しました(ファイルの作成、ハイブへのアップロード、ファイルの削除)。
クラス「File」または「RandomAccessFile」の使用は、「開いているファイルが多すぎます」という例外を除いて失敗します。
最後に私はコードを使用しました:
そして、これは大量のファイルで機能します(それぞれ5KBのサイズで20Kでテストされています)。コード自体は、前の2つのクラスのように例外をスローしません。ただし、本番コード(ハイブ付き)にはまだ例外がありました。そして、JDBCを介したハイブ接続がその理由のようです。さらに調査します。
java - 行を分割するために使用された行区切り文字BufferedReader#readLine()を見つける方法は?
BufferedReaderを介してファイルを読み取っています
行が「\n」または「\r\ n」で区切られているかどうかを知る必要があります。それを見つける方法はありますか?
FileInputStreamを開きたくないので、最初にスキャンします。理想的には、BufferedReaderは知っている必要があるので、聞いてみたいと思います。
BufferedReaderをオーバーライドしてハッキングできてうれしいですが、ファイルストリームを2回開きたくありません。
ありがとう、
注:ファイルは別のオペレーティングシステム上の別のアプリによって書き込まれた可能性があるため、現在の行区切り記号(System.getProperty( "line.separator")によって返される)は使用できません。
java - FileInputStream.read(byte [])の何が問題になっていますか?
ファイル読み取りの質問に対する私の回答に応えて、コメント投稿者FileInputStream.read(byte[])
は「バッファをいっぱいにすることは保証されていません」と述べました。
(コードは、ファイルの長さが2GBを超えないことを前提としています)
とは別に、メソッドがファイルの内容全体を取得しないIOException
原因は何ですか?read
編集:
コードのアイデア(および私が答えた質問のOPの目標)は、ファイル全体を1回の急降下でメモリのチャンクに読み込むことです。そのため、buffer_size = file_sizeです。
java - Javaを使用してバイナリファイルから整数値を読み取る
DataOupPutStream.write()
メソッドを使用して256より大きい値を書き込もうとしています。それを使用して同じ値を読み取ろうとするとDataInputStream.read()
、0が返されます。したがって、256を超える値を書き込んだり取得したりするためのメソッドを使用DataOutputStream.writeInt()
しましたが、正常に機能しています。DataInputStream.readInt()
以下のコードスニペットを参照してください。ステートメントin.readInt()
内でのコンパイラの動作を知りたいです。while
このスニペットを実行したときの出力は次のとおりです。
しかし、デバッグモードで実行すると、次の出力が得られます。
java - ソケット:BufferedReader readLine()ブロック
私はBufferedReader.readLine()
メソッドを使用してリモートサーバーからの応答を読み取ります(これはCで記述されており、ソースコードにアクセスできません)。
ただし、タイムアウトになるまで、常に最後の行でブロックされます。だから私は次のコードを使用しました:
そして、最後に読み取られたバイトの整数値が13であることがわかりました。これは、キャリッジリターンだと思います。
では、なぜreadLine
メソッドがブロックするのでしょうか。サーバーは通常、ストリームの終わりに到達したことをどのように通知しますか?ありがとう。