問題タブ [bufferedoutputstream]
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.
android - 範囲でダウンロードするアンドロイドのHttpURLConnection
2 つの部分で HttpURLConnection を使用して単純なテキスト ファイルをダウンロードしようとすると、問題に直面しています。
コード:
これを実行すると、ファイルがダウンロードされます。ファイルの前半は、予想されるファイル テキストです。ファイルの 2 番目の部分には、最初に 2 番目の部分のテキストが少しあり、その後に再び最初の部分のテキストが続きます。
ただし、最初の部分をダウンロードするコードをコメント アウトすると、ファイルには問題なく 2 番目の部分が含まれます。
編集:(質問に詳細を追加)
私が書いたコードは、テキスト ファイルを 2 つの別々の接続で 2 つの部分に分けてダウンロードすることになっていました。最初の接続では、ファイルの前半がダウンロードされ、ファイルに書き込まれます。2 番目の接続は、ファイルの 2 番目の部分をダウンロードして、同じファイルに追加することです。
「最初の部分のダウンローダ」であるはずの以下をコメントアウトすると、残りのコードはファイルの 2 番目の部分を期待どおりにダウンロードして書き込みます。
ただし、コード全体をそのまま使用すると、代わりに最初の部分が 2 回ダウンロードされます。
java - 複数の開いているファイルへの書き込みの影響
Android アプリケーションのロギング システムを最適化しようとしていますが、これにより望ましくない遅延が発生します。さまざまな部分を記録する複数のファイルが開かれているため、別々に保管する必要があります。
私は低レベルのファイルシステムの設計にはあまり詳しくなく、(従来の HDD とは対照的に) 携帯電話で使用されている現在のフラッシュや SSD メモリについてはさらに詳しくありません。メモリはディスク ブロック (最近では 512B または 4096B) で編成されており、何らかの形式の連続した、リンクされた、またはインデックス付きの割り当てが使用されていると想定しています。バッファ サイズが 256B の s を使用してBufferedOutputStream
いますが、この値はランダムに選択されます (これはバッファ サイズの適切な答えです)。
開いている複数のファイルに追加モードで書き込むと、パフォーマンスが大幅に低下する追加のオーバーヘッドが発生します (例の割り当て戦略から)。バッファリングされた出力バッファ サイズ (複数ファイルのこの特定のケース) に大きく影響されますか?
私はさまざまなFSを持つ傾向がある Android を使用しており、それぞれが開いている複数のファイルへの追加にどのように影響するかを理解するのが難しくなっています。おそらく、Java やその他の I/O 関数は非常に似ています。
この特定の問題に対する私の検索は空になったか、検索になじみのないドメイン固有の用語が必要かもしれません。
java - FileInputStream を使用して PDF ファイルをコピーできません
PDF ファイルをある場所から別の場所にコピーしようとしていますが、次のコードを実行すると、PDF を開くことができません (次のエラーが表示されます)。
このドキュメントを開くときにエラーが発生しました。ファイルが破損しており、修復できませんでした
誰かが私が間違っていることについて私を助けることができますか?
android - ファイルへの加速度計センサー データの書き込みが正しくありません
タイムスタンプと 3 軸加速度センサー データ (タイムスタンプ、ax、ay、az) を csv ファイルに書き込む Android アプリを開発しています。最初に 2 つの問題が発生しています。いくつかのエントリのタイムスタンプが昇順でファイルに書き込まれていないことです (画像の黄色で強調表示されたタイムスタンプを参照してください)。
2 つ目は、単一のタイムスタンプ (重複したエントリではなく) に対して多くのエントリを取得していることです。理想的には、一意のタイムスタンプに対して単一のエントリのみを取得する必要があります。
私のアプリの設計は次のとおりです。バックグラウンドで実行され、すべてのセンサー データをファイルに記録するサービスを作成しています。BufferedOutputStream と FileOutputStream をラップする ZipOutputStream を使用して、センサー データをファイルに書き込みます。以下は のコード スニペットですAccelerometerLoggingService
。onDestroy()
サービスの方法でファイルを閉じています。私のコードまたは設計の潜在的な欠陥を教えてください。スレッドに問題がある可能性があると思いますが、デバッグ方法がわかりません。どんな助けでも大歓迎です。
更新 2:
問題はスレッドの同期が原因だと思いました。したがって、別のバックグラウンド スレッドで加速度計センサーを実行し、センサー データを同じスレッド内のファイルに書き込むことにしましたが、それでもファイル内のエントリが順不同になっています。以下は、私が行った新しいコードの変更です。