問題タブ [fileoutputstream]
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 - java.io を使用したネイティブ Java 配列の効率的なシリアル化
Javaシリアライゼーションについて質問があります。
FileOutputStream と BufferedOutputStream を Dataoutputstream と組み合わせて使用して、サイズ int[] array = new int[2^28] の 10 個の配列をハード ディスクに書き出すだけです (これはちょっと大きいことはわかっていますが、そのようにする必要があります)。 . 各シリアル化の前に、新しい FileOutputstream と他のすべてのストリームを作成し、その後、ストリームを閉じてフラッシュします。
問題: 最初のシリアル化には約 2 秒かかり、その後 tp 17 秒増加し、このレベルにとどまります。ここで何が問題なのですか?コードを調べてみると、FileOutputStreams が writeByte(...) に膨大な時間を費やしていることがわかります。これは HDD キャッシング (フル) によるものですか? どうすればこれを回避できますか? クリアできますか?
これが私の簡単なコードです:
どこで dataOut.write(int[], 0, end)
そして `protected void checkBuf(int need) throws IOException {
BufferedDataOutputStream は BufferedOutputStream を拡張し、fits フレームワークに付属しています。単純に BufferedOutputStream と DataOutputStream を組み合わせて、大きな配列を書き込むときのメソッド呼び出しの数を減らします (これにより、はるかに高速になります... 最大 10 倍...)。
出力は次のとおりです。
ベンチマークの開始
スタートラン 0
2.001972271
スタートラン1
1.986544604
スタートラン2
15.663881232
スタートラン3
17.652161328
スタートラン 4
18.020969301
スタートラン 5
11.647542466
スタートラン 6
なぜこんなに時間が増えているのでしょうか?
ありがとうございました、
イース
java - ファイル全体を上書きせずに .properties の 1 つのプロパティを上書きする方法は?
基本的に、Java アプリを使用して .properties ファイル内の特定のプロパティを上書きする必要がありますが、Properties.setProperty() および Properties.Store() を使用すると、その 1 つのプロパティだけでなく、ファイル全体が上書きされます。
append = true で FileOutputStream を構築しようとしましたが、別のプロパティを追加し、既存のプロパティを削除/上書きしません。
ファイル全体を上書きせずに、1 つのプロパティを設定するとその特定のプロパティが上書きされるようにコーディングするにはどうすればよいですか?
編集:ファイルを読み取って追加しようとしました。更新されたコードは次のとおりです。
java - JOptionpane.showInputDialogの[OK]ボタンにアクションリスナーを配置するにはどうすればよいですか?
showInputDialogがあります。そのフィールドに何かを入力するときはいつでも、[OK]ボタンをクリックしたときにテキストファイルとして保存したいと思います。私の問題は、リスナーをどこに/どのように配置するかがわからないことです。
誰かがこの問題について私を助けてもらえますか?
java - 上書きせずにテキストファイルを保存するには?
現在のデータを上書きせずにテキストファイルに保存したい。保存される次のデータは、保存するたびに新しい/次の行に移動することを意味します。それが私の問題です。その方法がわかりません。
誰かがこの問題について私を助けてくれますか?
save() メソッドのコードは次のとおりです。
java - DataInputStreamを使用してファイル情報を受信し、書き込みます
クライアントがDataInputStreamを使用して送信するファイルを受信し、それをファイルに書き込もうとしています。
(クライアントはDataInputStream write(byte []、len、off)メソッドを使用してファイルを送信します)
これが私がやろうとしている方法ですが、完全なデータを受信しません。
上記の実装はエレガントではないかもしれないことを私は知っています。
しかし、私はJavaを初めて使用するので、悪いスタイルについてはご容赦ください。
(あなたが知っているなら、あなたがより良いものを推薦するならば、私は本当に感謝します)
結果ファイルはわずか4KBですが、401KBである必要があります
コードを機能させるには、このコードをどのように修正する必要がありますか?
どうもありがとうございます。
java - Tomcat 7.0.22 で Jar ファイルの内容をローカル サーブレットに書き込めない
こんにちは、
プログラムでjarファイルの内容を抽出しようとしていますが、サーブレットを使用せずにローカルマシンでjarファイルの内容を抽出できるコードスニペットを見つけました 。
コードが機能することがわかったので、ローカルのサーブレット環境、特に Tomcat 7.0.22 で使用しようとしています。これまでのところ、以下のコードがありますが、jar の内容を出力できませんでした。出力ストリームを正しく処理していないと思われるため、ローカル Tomcat サーバーのローカル ディレクトリに何も保存されません。
誰かが私を正しい方向に向けたり、読み取った内容をファイルに出力するようにコードを修正する方法についてアドバイスを提供したりできますか?
}
どなたでもご利用いただけますので、どうぞよろしくお願いいたします。
週末をお楽しみください!
hadoop - Hadoop ジョブの既存の出力パスを再度上書き/再利用する方法と agian
Hadoop ジョブを毎日実行するときに、既存の出力ディレクトリを上書き/再利用したいと考えています。実際には、出力ディレクトリには、毎日のジョブ実行結果の要約出力が格納されます。同じ出力ディレクトリを指定すると、「出力ディレクトリは既に存在します」というエラーが表示されます。
この検証をバイパスする方法は?
java - 大きなファイルを書き込むとき、FileOutputStream.closeは本当に遅いです
このコードを使用してTCPソケットを介してファイルを受信するメソッドがあります。
FileOutputStream.closeは、大きなファイルを受信するときに非常に長い時間がかかりますが、それはなぜですか?ご覧のとおり、受信したチャンクごとにストリームをフラッシュしています。
android - FileOutputStream は FileNotFoundException で失敗しましたが、ファイルが明らかに存在し、書き込み可能であり、アクセス許可を持っている場合でも
私は Android には比較的慣れていませんが、Java および C ベースのプログラミングの経験があり、現在、開発用に通常のツールセットを備えた Eclipse を使用しています。私はこの主題に関するほとんどの投稿を読み、すべての推奨事項とテストを含めて適用したと信じています。私は以前、FileOutputStream を使用して、内部のアプリケーション固有のファイルに書き込み、L8 用にビルドしましたが、問題はありませんでした。Build L7 for Android 2.1を使用して、SDカードのファイルに書き込もうとしています。次のコードは、基本コードをテストするために使用している 3 つのボタン (書き込み、読み取り、送信) を持つ単一のアクティビティからのものです。FileOutputStream (FOS) コンストラクターが AOK を渡すまでに含まれるすべてのテスト (exists、writeable、および createNewFile または mkdirs の IOException) が AOK に合格しますが、FOS 構成体は失敗し、FileNotFoundException をスローします。下記参照。デバッグを実行し、問題を確認しました。下部の LogCat を参照してください。これは、256kB のビルドに含まれる SD カードを使用して、ADB を介して Eclipse 標準エミュレーターで実行されます。
私の onw createExternalStorageFile() メソッドから。
>
私のマニフェストファイルには、次のように uses-permission 宣言が含まれています。
>
>
では、これは宣言の範囲外であり、問題ないはずですか?
私のすべてのテストが動作することを確認しているように見えるにもかかわらず、FileOutputStream が失敗する理由のこの謎を解決するのを手伝ってくれる人はいますか?
> LogCat: 11-02 15:40:54.754: DEBUG/MediaScannerService(154): スキャン ボリューム外部 11-02 15:40:54.764: VERBOSE/MediaProvider(154): /sdcard ボリューム ID: 300427547 11-02 15: 40:54.894: INFO/System.out(202): デバッガーが解決しました (1479) 11-02 15:40:55.024: VERBOSE/MediaProvider(154): 接続されたボリューム: 外部 11-02 15:40:55.904: VERBOSE/ MediaScanner(154): pruneDeadThumbnailFiles... android.database.sqlite.SQLiteCursor@44c434f0 11-02 15:40:55.915: VERBOSE/MediaScanner(154): /pruneDeadThumbnailFiles... android.database.sqlite.SQLiteCursor@44c434f0 11- 02 15:40:55.925: DEBUG/MediaScanner(154): プレスキャン時間: 715ms 11-02 15:40:55.955: DEBUG/MediaScanner(154): スキャン時間: 4ms 11-02 15:40:55.955: DEBUG/MediaScanner (154): ポストスキャン時間: 55ms 11-02 15:40:55.955: DEBUG/MediaScanner(154): 合計時間: 774ms 11-02 15:40:55。964: DEBUG/MediaScannerService(154): スキャン ボリューム外部 11-02 15:44:50.934: DEBUG/KeyguardViewMediator(52): pokeWakelock(5000) 11-02 15:44:51.334: DEBUG/KeyguardViewMediator(52): pokeWakelock (5000) 11-02 15:44:51.384: INFO/ActivityManager(52): 表示されたアクティビティ org.eddiem.adeveloper.filesendl7/.FileSendL7Activity: 239793 ミリ秒 (合計 255760 ミリ秒) 11-02 15:44:51.394: INFO/ Armassembler(52):生成されたScanline__00000077:03545404_00000A04_00000000 [29 IPP](51 INS)の[0x46AC60:0x46AD2C]の757079 NS 11-02 15:44:51.414:INFAMESM4:414:414:414:414:414:414:414 (98 ins) 657626 ns 11-02 15:45:05.884 の [0x46ad30:0x46aeb8]: DEBUG/FileSendL7Activity(202): フル ファイル パス: /sdcard/testFile.txt 11-02 15:45:22.484:エラー/FileSendL7Activity(202): fOS-FileNotFoundException 11-02 15:45:22.484: エラー/FileSendL7Activity(202): java.io.FileNotFoundException: /sdcard/testFile.txt 11-02 15:45:22.484: エラー/FileSendL7Activity(202): org.apache.harmony.luni.platform.OSFileSystem で。オープン (OSFileSystem.java:244) 11-02 15:45:22.484: エラー/FileSendL7Activity (202): java.io.FileOutputStream で。(FileOutputStream.java:97) 11-02 15:45:22.484: エラー/FileSendL7Activity (202): java.io.FileOutputStream.(FileOutputStream.java:168) 11-02 15:45:22.484: エラー/FileSendL7Activity(202): java.io.FileOutputStream.(FileOutputStream.java:147) 11- 02 15:45:22.484: エラー/FileSendL7Activity(202): org.eddiem.adeveloper.filesendl7.FileSendL7Activity.creatExternalStorageFileOS (FileSendL7Activity.java:149) 11-02 15:45:22.484: エラー/FileSendL7Activity(202): でorg.eddiem.adeveloper.filesendl7.FileSendL7Activity.access$0(FileSendL7Activity.java:124) 11-02 15:45:22.484: エラー/FileSendL7Activity(202): org.eddiem.adeveloper.filesendl7.FileSendL7Activity$1.onClick(FileSendL7Activity.java:176) 11-02 15: 45:22.484: エラー/FileSendL7Activity(202): android.view.View.performClick (View.java:2364) で
>
ありがとう
java - Javaで、入力ストリームから固定長を読み取り、ファイルとして保存するにはどうすればよいですか?
Javaで、入力ストリームから固定長を読み取り、ファイルとして保存するにはどうすればよいですか?例えば。inputStreamから5Mを読み取り、downloadFile.txtなどとして保存したい(BUFFERSIZE = 1024)