問題タブ [writefile]

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.

0 投票する
1 に答える
4805 参照

c++ - Windows 7 で生データをハード ドライブ (PhysicalDrive) に書き込む最速の方法

私の会社は、Windows 7 で動作する「派手な」USB 大容量記憶装置を開発しています。クライアント側で実際の記憶媒体の読み取りと書き込みを処理する大容量記憶装置クライアント ドライバーは、C++ で記述されています。私たちが抱えている問題は、書き込み速度が非常に遅いことです。予想よりも約 30 倍遅い。WriteFile() の呼び出しを使用して、ホスト デバイスから受信したデータ ブロックをストレージ メディア (具体的には物理ドライブ 'PhysicalDrive2') に書き込みます。私は他の多くのフォーラムで、特に Windows 7 で WriteFile() を使用して書き込み速度が非常に遅いという経験があることを読みました。そのため、この特定のタスクに最適なメソッドと関数呼び出しを使用しているかどうかを把握しようとしています。

以下に 2 つのコード ブロックを示します。1 つは、初期化中にプログラムによって 1 回呼び出され、実際にはボリュームをアンマウントするだけの LockVolume() 関数用です。もう 1 つのコード ブロックは WriteSector() です。これは、USB クライアント コントローラー ドライバーによって受信されたときに、実際のデータを物理ドライブに書き込むために使用されます。誰かが私が間違っている可能性があることを明らかにしたり、これを実装するためのより良い方法について提案したりできることを願っています.

編集#1(2015年2月10日)

そこで、Ben Voigt の提案を取り入れたところ、(ドライブにデータを書き込むたびにではなく) CreateFile と CloseHandle を 1 回だけ呼び出すと、書き込み速度が大幅に向上することがわかりました。80% 増加。その増加にもかかわらず、書き込み速度は予想よりもはるかに遅かった. 約6倍遅い。そこで、彼が提案した他の変更を取り入れました。これには、SetFilePointer() への元の呼び出しを削除し、それを、WriteFile に渡される OVERLAPPED 構造に置き換えることが含まれます。その変更を行った後、「変数 'MyOverLappedStructure' の周りのスタックが壊れています」というエラーが表示されます。以下は、私の SectorWrite 関数の更新バージョンと、物理ドライブへの初期ハンドルを取得する新しい Disk_GetHandle() 関数です。また、Disk_GetHandle() を呼び出した後、まだ Disk_LockVolume() を呼び出しています。ただし、関数の最後でボリュームへのハンドル (この場合) が閉じられないように、Disk_LockVolume() 関数を変更しました。最終的には、物理​​ドライブのハンドルを閉じる前に、プログラムの最後に閉じられます。この新しいエラーに関するご意見をお待ちしております。ああ、FILE_FLAG_NO_BUFFERING によるパフォーマンスへの影響は見られませんでした。

編集#2(2015年2月10日)

そのため、Ben のコメントに従って CreateFile() 呼び出しから FILE_FLAG_OVERLAPPED を削除しました。また、WriteSector() 関数の一部を変更して、WriteFile() の呼び出し後に IO が保留中かどうかを確認するチェックを含めました。その場合、IO 操作が完了するまで無期限に待機する WaitForSingleObject() を呼び出します。最後に、OVERLAPPED 構造体 hEv​​ent で CloseHandle() を呼び出します。これらの変更を行っても、「変数 'osWrite' の周りのスタックが壊れています」というエラーが表示されます。ここで、osWrite は OVERLAPPED 構造です。以下は、変更を示すコード スニペットです。

編集#3(2015年2月10日)

これで、コードは Ben の入力を処理するようになりました。上記のコードは、これらの変更を反映するように変更されています。今日の午後まで、クライアント側のストレージ メディアが USB フラッシュ ドライブである場合にすべてのテストが行​​われたことに言及する必要があります。その後、クライアントが接続された SSD に書き込むように変更しました。USB フラッシュ ドライブの設定により、USB 接続を介してクライアントにデータを書き込むことができる速度は、クライアント SBC が同じファイルをそれ自体からストレージ メディアに直接転送できる速度と実質的に同じになりました (ホストを介さずに)接続されています)。しかし、現在SSDが使用されているため、これは当てはまりません。私が使用している 34MB のテスト ファイルは、クライアント SBC から SSD に直接転送すると 2.5 秒かかります。USB 経由でホストからクライアントまで 2.5 分かかります。

0 投票する
3 に答える
2873 参照

python - Pythonで複数のリストをテキストファイルに書き込む - 2.7

元々、リストは別のリスト内にネストされていました。リストの各要素は一連の文字列でした。

リスト内の文字列を結合し、結果に追加しました。

各リストをテキスト ファイルに書き込もうとしています。リストの数はさまざまです。

私の現在のコード:

テキスト ファイルの最初のリストのみを返します。

テキスト ファイルにすべての結果を含めたい

0 投票する
1 に答える
97 参照

java - Java で文字列をファイルに書き込み、読み戻す

Javaに一連の文字列 (Stringオブジェクト) があり、それらを後で取得できるようにファイルに書き込みたいと考えています。

Java は UTF-16 を使用して文字列を内部に保存することを理解しています。文字列をきちんと読み書きしないと、フォーマットの問題で何かを台無しにしてしまうのではないかと心配しています。String オブジェクトを生のままファイルにダンプしたくありません。標準のテキスト エディタでファイルを開いて確認できるようにしたいためです。各文字列は、適切な方法で独自の行に表示されます (文字列には改行が含まれます)。

PrintWriterクラスをメソッドで使用するだけprintln(String x)で (文字列に改行がないと仮定して)、nextLine()それらを読み戻すときに Scanner クラスのメソッドと組み合わせて使用​​できますか? これにより、まったく同じ文字列が返されることが保証されますか?

さらに、文字列に改行が含まれていると仮定すると、それらを記述する適切な方法は何ですか? 改行を除外して (アドホックなエスケープ コードなどに置き換えて)、上記のようにprintlnメソッドを使用する必要がPrintWriterありますか?

0 投票する
2 に答える
158 参照

c - ファイルを作成してそこに何かを書き込むと、思い通りに動作しません

次のコードを書きます。

というわけで、ご覧の通り。デスクトップに file.txt という名前のファイルを作成し、それに短いテキストを書き込むプログラム。Microsoft Visual C++ Express を使用しており、エラーなしでコンパイルされます。しかし、緑色の再生ボタンをクリックして実行すると、デスクトップにそのようなファイルが作成されません。

考えられる障害を検索することで、https://msdn.microsoft.com/en-us/library/windows/desktop/bb540534%28v=vs.85%29.aspxで、ほぼ同じコードを使用していることも確認しました。ただし、表示エラー部分は含めておりません。

だから、私の質問: それが機能しない理由は何ですか? 私(プログラム)はそれを行うために追加の権限が必要ですか?たとえば、「/tmp/file.txt」を宛先ディレクトリとして使用することを除いて、open() & write() を使用して Ubuntu で同じことを書きました。また、追加の権限なしで機能します。

よろしくお願いします、

0 投票する
1 に答える
141 参照

prolog - Prolog の回答をファイルに保存する

私は SWI-Prolog で ALEPH 推論エンジンを使用しています。ALEPH が推測して SWI-Prolog コンソールに表示するルールを保存したいのですが、どうすればよいかわかりません。サンプル結果は下の図に示されています。

これらのルールは、次のコマンドで誘導手順を呼び出した後に表示されます:
- read_all(aleph_files)。-誘導します。

これらのルールを txt ファイルに自動的に保存する方法を考えています。