問題タブ [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 投票する
5 に答える
505 参照

c# - C# (単体テスト): コードでファイルに書き込めないようにする必要があります

基本的にはこんな状態です。私は次のものを持っています:

基本的に、DoFoo() のテストでは、true/false を返すパスがたくさんあります。最後のファイルを除いてすべてのユニットをテストしました...ファイルを書き込もうとし、何らかの理由でファイルの1つでも書き込めない場合、失敗してfalseを返します。最初は、「bad*file」などの不適切なファイル名を設定しようとすると、WriteFile で例外がスローされると考えましたが、不正な文字を使用して FileInfo オブジェクトを作成できないため、そこまで到達しませんでした。だから私はそれを作成する別の方法を探しているので、ファイルを書き込むことが不可能になり、偽を取り戻すことができます。

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

java - プログラム全体を閉じずにJTextFieldsから変数をクリアする方法は?

テキストフィールドから取得したいくつかの変数を格納するテキストファイルを作成しました。ただし、このテキストファイルに新しい変数を送信するには、プログラムを閉じてから再度開く必要があります。dispose();コマンドを閉じるとメインJFrameメニューに移動しますが、メニューを再度開いて別の値を送信すると、前回の値が再送信されています。これを修正する簡単な方法はありますか?

これが私の.txtコードへの書き込みです:

そして、メソッドが私のaddpropertyクラスで呼び出される場所

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

c++ - WriteFile() ブロック (名前付きパイプを介して C++ クライアントから C# サーバーに書き込みます)

ここで立ち往生しています、助けてください。C# という名前のパイプ サーバーがあり、パイプは次の方法で作成されます。

C++ では、次のようにクライアントを作成しました。

パイプ タイプを に設定し、パイプにPIPE_READMODE_BYTE | PIPE_TYPE_BYTE
文字列を書き込む関数 WriteString() を作成しました。関数はおおよそ次のようになります。

関数に 2 つの呼び出しを行いました。

問題は次のとおりです。プログラムは、2 回目の WriteString() 呼び出しの最初の WriteFile() 呼び出しでブロックされます。パイプがサーバーによって閉じられている場合にのみ、WriteFile() 呼び出しでエラーが返されます。

これは確実に再現可能です。

ここで WriteFile() 呼び出しをブロックしているのは何ですか? 既に OVERLAPPED ファイル フラグを使用しています。パイプバッファがいっぱい?サーバー側のパイプから読み続けます。

どうもありがとう!

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

.net - 書き込むデータの長さに応じて WriteFile が失敗しますか?

編集

奇妙なことに、私はこの問題を回避しましたが、それでも私を悩ませています。私はこれを回避するために、長すぎる書き込みを送信し、ゼロを埋めました。コードは機能しますが、数百の不要なバイトが送信されます。具体的には、7 または 19 バイトのパケットではなく、正確に 992 バイトのパケットを送信する必要があります。しかし、私の疑問は依然として残っています。なぜ、7 バイトまたは 19 バイトの書き込みを行うことができないのに、Logitech コードができるのでしょうか。


渡されたデータの長さに応じて、特定のコード ブロックが失敗または成功するという問題が発生しています。これは私には意味がありません。私は明らかに何か間違ったことをしていますが、何を言うことはできません。

USB デバイス (2 つの Logitech G シリーズ キーボードの 1 つ) にバイト ストリームを書き込む、次のコード ブロックを使用しようとしている 3 つのケースがあります。

最初のケースでは、992 バイトのストリームを渡し、書き込みが正常に完了しました。2 番目と 3 番目のケースでは、7 バイトまたは 19 バイトを書き込んでおり、WriteFile は 7 バイトのエラー ERROR_INVALID_USER_BUFFER または 19 バイトの ERROR_INVALID_PARAMETER を生成します。読み取りと書き込みのためにハンドルを開きましたが、重複していません。

USBTrace を使用すると、デフォルトの Logitech プログラムは 3 つのケースすべてを問題なく書き込めますが、私のコードでは 992 バイトのケースしか書き込めません。この動作は、コードを x86 としてコンパイルしても x64 としてコンパイルしても同じです。

ハンドルを開くために使用しているコードは次のとおりです。

WriteData() を呼び出す正確なコード ブロックは次のとおりです。

これらの特定のコマンドは、ボード上のマクロ (「G」) キーを別の文字コードに再マップするために使用されます。この場合、00 はキーを無効にします。G15/G19/G510 キーボードを使用している場合は、Logitech ゲームパネル ソフトウェアを無効にしてキーボードを再接続することで、この問題を確認できます。G3 はメモ帳の F3 (次を検索) のように機能しますが、ゲームパネル ソフトウェアを再起動すると機能しなくなります。

0 投票する
5 に答える
250 参照

java - Javaのファイルに値を保存することについての提案はありますか?

私は巨大な行列を生成するプログラムを持っていて、それが計算されたら、後でそれを再利用する必要があります。そのため、後で読み取ることができるように、ローカルハードディスクにキャッシュしたいと思います。私は単にデータをファイルに書き込んでから後でそれを読み取ることによってそれを使用しています。

しかし、Javaでそのようなタスクを実行するために考慮すべき特別なことはありますか。たとえば、シリアル化する必要がありますか、それとも何か特別なことをする必要がありますか。重要なアプリケーションの使用状況データを保存するようなことをするために注意しなければならないことがありますか。プレーンASCII/xmlである必要がありますか、それとも何ですか?
データは機密ではありませんが、データの整合性は重要です。

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

c# - PInvokeStackImbalance が WriteFile kernel32.dll で検出されました

フレームワーク 2 からフレームワーク 4 に移行した後、WriteFile 関数を実行するとエラーが発生します。

解決:

lpOverlapped パラメータは、umanaged C++ の unsigned long である int32 である必要があります。

元のエラー:

PInvokeStackImbalance が検出されました メッセージ: PInvoke 関数 '' の呼び出しにより、スタックのバランスが崩れました。これは、マネージド PInvoke 署名がアンマネージド ターゲット シグネチャと一致しないことが原因である可能性があります。PInvoke シグネチャの呼び出し規約とパラメーターがターゲットのアンマネージド シグネチャと一致することを確認します。

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

c++ - WriteFileがエラー1784を返す

ディスクにダミーのファイルシステムを追加するプログラムを作成しています。

現在、を使用して可変サイズのファイルを書き込んでいますWriteFile

errは#1784を返します。これは次のように変換されます

指定されたユーザーバッファは、要求された操作に対して無効です。ERROR_INVALID_USER_BUFFER

したがって、最初の24ファイルについては、書き込み操作が機能します。ファイル#25がオンの場合、書き込み操作は失敗します。ファイルは引き続き作成されますが、WriteFile関数はファイルにデータを入力しません。

乗り越える方法について何かアイデアはありますERROR_INVALID_USER_BUFFERか?

エラーについて私が見つけることができるすべての参照は、クラッシュするプログラムに限定されており、それが私が経験している問題にどのように関連しているかを理解することはできません。

編集:

FileDataは、最大予測バッファーのサイズに設定および割り当てられます。iは、最大サイズ(k)まで増加するまで繰り返すループ変数です。

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

c - FILE_FLAG_OVERLAPPED で開かれたファイルへの同期書き込み

を使用してファイルを開きました

ファイル ハンドルは、非同期読み取り操作に使用されます。

これは機能します。ただし、今は同期書き込みを行いたいです。WriteFileドキュメンテーションは次のように述べています

hFile が FILE_FLAG_OVERLAPPED で開かれた場合、次の条件が
有効になります。

lpOverlapepdパラメータが省略された場合、ERROR_INVALID_PARAMETERによって返されGetLastError()ます。2 つのハンドル (1 つは読み取り用、もう 1 つは書き込み用) を開くことも、2 番目のハンドルがERROR_ACCESS_DENIEDエラーを生成するため機能しません。

非同期読み取りおよび同期書き込み用にファイルを開くにはどうすればよいですか? コードの複雑さを不必要に増やしたくありません。

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

visual-c++ - ネットワーク共有上のファイルに対する WriteFile

大きなデータを読み書きするプログラムがあります。読み取りと書き込みは、書き込みがローカル ドライブ上のファイルに対して行われる場合にうまく機能します。ターゲットがネットワーク共有で、同じプログラムの 2 つのインスタンスを実行すると、最初に起動したプログラムが WriteFile でハングします。デバッグすると、ネットワーク共有の WriteFile がブロックされます。

WaitForSingleObject(timeout 60 Sec) を使用して、WriteFile にオーバーラップ IO を実装しました。現在、WriteFile はブロックされなくなりましたが、データ全体がネットワーク経由で 1 回書き込まれることはありません。ネットワーク共有経由で WriteFile を使用する場合、再試行を考慮する必要がありますか?? ネットワーク上のファイルで WriteFile を適切に使用するには?

アップデート:

以下のリンクを参考に、WriteFile でオーバーラップした IO を実装しました。

http://social.msdn.microsoft.com/Forums/en/vcgeneral/thread/a5e9514b-53e0-410c-a975-41a5ca91e4be

リンクには、GENERIC_READ なしで GENERIC_WRITE だけで CreateFile を使用したことが示されています。しかし、ファイルからも読み取りたい場合はどうなりますか?それは、WriteFile に ayn io をまったく実装できないことを意味しますか? 実際には、重複した IO を使用してファイルに書き込む前に、同じファイルからヘッダーを読み取る必要があります。これどうやってするの??

0 投票する
5 に答える
8243 参照

winapi - Write a unicode CString to a file using WriteFile API

How can I write contents of a CString instance to a file opened by CreateFile using WriteFile Win32 API function?

Please note MFC is not used, and CString is used by including "atlstr.h"

edit: Can just I do

or

?