問題タブ [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 - OutputStream を文字列に取得する
出力をjava.io.OutputStreamからJavaの文字列にパイプする最良の方法は何ですか?
私が方法を持っているとしましょう:
オブジェクトから特定のストリームに特定のデータを書き込みます。ただし、この出力をできるだけ簡単に String に取得したいと考えています。
私はこのようなクラスを書くことを考えています(未テスト):
しかし、より良い方法はありますか?テストを実行したいだけです!
c# - 最小限のロックでファイルにアクセスする方法
私のアプリケーション (c# 3.5) では、1 つの xml ファイル (読み取りと書き込み) に非常に頻繁にアクセスするさまざまなプロセスがあります。ファイルにアクセスするコードは、かなりの数の他のアプリケーションによって参照されるアセンブリに配置されます。たとえば、Windows サービスは MyFileReaderWriter クラス (前述のアセンブリにある) をインスタンス化し、このクラスの読み取り/書き込みメソッドを使用する場合があります。
最小限のロックでファイルを読み取り、作成/追加するための最良/最速の方法を探しています。データは重要であるため、ファイル データをキャッシュし、新しいコンテンツを定期的にフラッシュすることはできません。
ファイルのコンテンツの読み取り/書き込みに現在 XDocument (LInq2Xml インフラストラクチャ) を使用していることを忘れていました。
java - Java InputStream が与えられた場合、ストリーム内の現在のオフセットを特定するにはどうすればよいですか?
getPosition()
ストリームの開始点から読み取ったバイト数を教えてくれる、汎用的で再利用可能なメソッドのようなものが欲しいです。理想的には、これがすべての InputStream で機能することを望みます。これにより、異なるソースから取得するときに、それらをすべてラップする必要がなくなります。
そのような獣は存在しますか?そうでない場合、誰かが count の既存の実装を推奨できますInputStream
か?
linux - GNU/Linux でディスクを使用しているプロセスまたはカーネル アクティビティを記録するにはどうすればよいですか?
特定の Debian サーバーで、iostat (および同様の) が、予期せぬ大量のディスク書き込み (バイト単位) を報告します。これらの書き込みを行っているプロセスを特定するのに苦労しています。
2 つの興味深い点:
システム サービスを一度に 1 つずつ無効にしようとしましたが、役に立ちませんでした。ディスク アクティビティはかなり安定しており、予想外に高くなっています。
書き込みにもかかわらず、ディスク上の全体的なスペースをより多く消費しているようには見えません。
どちらも、書き込みはカーネルが行っていることかもしれないと思いますが、私はスワップしていないので、Linux が何を書き込もうとしているかは明確ではありません。
上で試すことができます:
http://www.atcomputing.nl/Tools/atop/
しかし、カーネルにパッチを当てることは避けたいです。
これを追跡する方法についてのアイデアはありますか?
java - Javaでは、java.awt.image.BufferedImageを8ビットのpngファイルにどのように書き込みますか?
java.awt.image.BufferedImageからpngファイルを書き出そうとしています。すべて正常に動作しますが、結果のpngは32ビットファイルです。
pngファイルを8ビットにする方法はありますか?画像はグレースケールですが、これはオーバーレイ画像であるため、透明度が必要です。私はjava6を使用していますが、OutputStreamを返して、呼び出し元のクラスがファイルをdisk/dbに書き出すことを処理できるようにしたいと思います。
コードの関連部分は次のとおりです。
java - java.net と java.nio の比較
どの時点で java.net から java.nio に切り替えるのがよいでしょうか? .net (Microsoft エンティティではない) は理解しやすく親しみやすいのに対し、nio はスケーラブルであり、いくつかの気の利いた機能を備えています。
具体的には、この状況に対して選択を行う必要があります。複数のリモート サイトでハードウェアを管理する 1 つのコントロール センターがあります (各サイトには、複数のハードウェア ユニット (トランシーバ、TNC、およびローテータ) を管理する 1 台のコンピュータがあります)。私のアイデアは、コントロール センターから無線ハードウェアへのゲートウェイとして機能するサーバー アプリを各マシンに作成し、各ユニットに 1 つのソケットを用意することでした。私の理解では、NIO は 1 つのサーバー、多数のクライアントを対象としていますが、私が考えているのは 1 つのクライアント、多数のサーバーです。
3 番目のオプションは MINA を使用することだと思いますが、それが単純な問題を投げかけすぎているかどうかはわかりません。
各リモート サーバーには、すべて同じクライアントからの最大 8 つの接続があります (すべてのハードウェアを制御し、TX/RX ソケットを分離するため)。ただし、単一のクライアントは一度に複数のサーバーに接続する必要があります。各サーバーを異なるポートに配置する代わりに、クライアント側でチャネルセレクターを使用することは可能ですか、それともクライアント側でマルチスレッド io を使用してサーバーを別の方法で構成する方がよいでしょうか?
実際、リモート マシンは他のハードウェアと対話するためだけに機能するため、RMI または IDL/CORBA のほうが優れたソリューションでしょうか? 本当に、コマンドを送信してハードウェアからテレメトリを受信できるようにしたいだけで、アプリケーション層プロトコルを作成する必要はありません。
c# - ファイルをコピーするときにこの System.IO.IOException を防ぐにはどうすればよいですか?
次のコードを実行してディレクトリのコピーをテストすると、fileInfo.CopyTo メソッドが呼び出されているときに System.IO.IOException が発生します。エラー メッセージは次のとおりです。
エラーが発生している場所の数行上に作成された file1 (「C:\CopyDirectoryTest1\temp.txt」) にロックがあるようですが、そうであればこれを解放する方法がわかりません。何か案は?
c++ - I/O (C++) 用に独自のバッファ システムを構築するのはいつですか?
非常に大きなテキスト ファイル (2 GB) を処理する必要があるため、1 行ずつ読み書きする必要があります。ofstream を使用して 2,300 万行を書き込むのは非常に遅いため、最初は大量の行のチャンクをメモリ バッファー (たとえば 256 MB または 512 MB) に書き込み、そのバッファーをファイルに書き込むプロセスを高速化しようとしました。 . これは機能しませんでした。パフォーマンスはほぼ同じです。ファイルの読み取りに同じ問題があります。I/O 操作が STL I/O システムによってバッファリングされることはわかっています。これは、ディスク スケジューラ ポリシー (私の場合は Linux の OS によって管理される) にも依存します。
パフォーマンスを向上させる方法について何か考えはありますか?
PS: プログラムがデータを処理している間にバックグラウンドの子プロセス (またはスレッド) を使用してデータ チャンクを読み書きすることを考えていましたが、これが価値があるかどうかはわかりません (主にサブプロセスの場合)。
java - 情報量が少ない場合、java file i/o と derby はどちらが速いですか?
他のエージェントと対戦する小さなエージェントを Java で作成しています。過去の成功に基づいてエージェントのパフォーマンスを微調整できるように、プログラムの実行間で少量の状態 (おそらく最大で約 1kb) を保持したいと考えています。基本的に、各ゲームの開始時に少量のデータを読み取り、最後に少量のデータを書き込みます。ファイル I/O またはダービーの 2 つのオプションがあるようです。どちらにも速度の利点はありますか?それとも、そのような少量のデータでは問題になりませんか?
java - gzipで圧縮されたデータをバイト配列で解凍するにはどうすればよいですか?
オブジェクトをパラメータとして受け取るメソッドを持つクラスがあります。このメソッドは、RMIを介して呼び出されます。
MyFileには、バイト配列である「body」と呼ばれるプロパティがあります。
このプロパティは、別のアプリケーションによって解析されたファイルのgzip圧縮されたデータを保持します。
このバイト配列を使用してさらにアクションを実行する前に、このバイト配列を解凍する必要があります。
gzipで圧縮されたデータを解凍する例はすべて、データをディスクに書き込んで物理ファイルを作成することを前提としていますが、実際には作成していません。
どうすればよいですか?
前もって感謝します。