问题标签 [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() 时,我有很多可以返回真/假的路径。除了最后一个之外,我已经对所有这些都进行了单元测试......它尝试写入文件,如果由于某种原因甚至无法写入其中一个文件,它就会失败并返回错误。起初,我想如果我尝试设置一个错误的文件名,例如“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() 来将字符串写入管道。函数大致是这样的:

我对该函数进行了两次调用:

现在的问题是:程序在第二个 WriteString() 调用中的第一个 WriteFile() 调用中被阻塞。只有当管道被服务器关闭时,WriteFile() 调用才能返回错误。

这是可靠的可重现的。

什么在这里阻止了 WriteFile() 调用?我已经在使用 OVERLAPPED 文件标志。管道缓冲区已满?我一直从服务器端的管道读取。

非常感谢!

0 投票
2 回答
1037 浏览

.net - WriteFile 失败取决于要写入的数据长度?

编辑

奇怪的是,我已经解决了这个问题,但它仍然让我很烦。我通过发送太长的写入来解决它,并填充零;该代码有效,但发送了几百个不必要的字节。具体来说,我需要准确发送 992 字节的数据包,而不是 7 或 19 字节的数据包。但是,我的问题仍然存在,为什么 Logitech 代码能够进行 7 或 19 字节的写入,而我却不能。


我遇到了一个问题,即特定代码块失败或成功显然取决于传递给它的数据的长度。这对我来说毫无意义;我显然做错了什么,但我不知道是什么。

我在三种情况下尝试使用以下代码块,它将字节流写入 USB 设备(两个罗技 G 系列键盘之一):

在第一种情况下,我传递了一个 992 字节的流并且写入成功完成。在第二种和第三种情况下,我正在写入 7 个或 19 个字节,WriteFile 生成 7 个字节的错误 ERROR_INVALID_USER_BUFFER 或 19 个字节的 ERROR_INVALID_PARAMETER。我已经打开了读写手柄,不重叠。

使用 USBTrace 时,我可以看到默认的 Logitech 程序可以毫无问题地编写所有三种情况,但我自己的代码只能编写 992 字节的情况。无论我将代码编译为 x86 还是 x64,此行为都是相同的。

我用来打开句柄的代码是这样的:

调用 WriteData() 的确切代码块如下:

这些特定命令用于将板上的宏(“G”)键重新映射到不同的字符代码,在这种情况下,00 禁用该键。任何拥有 G15/G19/G510 键盘的人都可以通过禁用罗技游戏面板软件并重新插入键盘来看到这一点。G3 将像记事本中的 F3 一样(查找下一个),但重新启动游戏面板软件后将不再这样做。

0 投票
5 回答
250 浏览

java - 关于在 Java 文件中存储值的建议?

我有一个程序,我生成一个巨大的矩阵,一旦计算出来,我必须在以后重用它。出于这个原因,我想将它缓存到本地硬盘,以便以后可以读取它。我只是通过将数据写入文件然后再读取它来使用它。

但是,在 java 中执行此类任务时,我应该考虑什么特别之处。例如,我是否需要对其进行序列化或者可能会做一些特别的事情。在存储重要的应用程序使用数据的地方,我是否应该注意做这些事情。它应该是纯 ASCII/xml 还是什么?
数据不敏感,但数据的完整性很重要。

0 投票
1 回答
1612 浏览

c# - 在 WriteFile kernel32.dll 上检测到 PInvokeStackImbalance

从框架 2 迁移到框架 4 后,运行 WriteFile 函数时出现错误。

解决方案:

lpOverlapped 参数应该是一个 int32,它在 umanaged C++ 中是一个 unsigned long。

原始错误:

检测到 PInvokeStackImbalance 消息:对 PInvoke 函数 '' 的调用使堆栈不平衡。这可能是因为托管 PInvoke 签名与非托管目标签名不匹配。检查 PInvoke 签名的调用约定和参数是否与目标非托管签名匹配。

0 投票
2 回答
11245 浏览

c++ - WriteFile 返回错误 1784

我正在创建一个程序来使用虚拟文件系统填充磁盘。

目前,我正在使用WriteFile.

错误返回 #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 打开的,则以下条件生效:
• lpOverlapped 参数必须指向一个有效且唯一的 OVERLAPPED 结构,否则该函数可能会错误地报告写操作已完成。

lpOverlapepd省略参数时,ERROR_INVALID_PARAMETER由 . 返回GetLastError()。打开两个句柄,一个用于读取,一个用于写入也不起作用,因为第二个句柄会产生ERROR_ACCESS_DENIED错误。

如何打开文件进行异步读取和同步写入?我不想不必要地增加代码复杂性。

0 投票
1 回答
1206 浏览

visual-c++ - 通过网络共享在文件上写入文件

我有一个读写大数据的程序。当写入本地驱动器上的文件时,读取和写入效果很好。当目标是网络共享时,当我运行同一程序的两个实例时,第一个启动的程序挂在 WriteFile 上。当我调试时,网络共享上的 WriteFile 被阻塞。

我使用 WaitForSingleObject(超时 60 秒)在 WriteFile 上实现了重叠 IO。现在 WriteFile 不再阻塞,但即使整个数据通过网络写入一次也不会阻塞。当我通过网络共享使用 WriteFile 时是否必须考虑重试?如何通过网络在文件上正确使用 WriteFile?

更新:

我参考了以下链接以使用 WriteFile 实现重叠 IO。

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

该链接说我在没有 GENERIC_READ 的情况下单独使用了带有 GENERIC_WRITE 的 CreateFile。但是,如果我还想从文件中读取数据怎么办?这是否意味着我根本无法为 WriteFile 实现异步 io。实际上,在使用 Overlapped IO 写入文件之前,我必须从同一个文件中读取一个标题。我怎样才能做到这一点??

0 投票
5 回答
8243 浏览

winapi - 使用 WriteFile API 将 unicode CString 写入文件

如何将 CString 实例的内容写入 CreateFile 使用 WriteFile Win32 API 函数打开的文件?

请注意不使用 MFC,通过包含“atlstr.h”使用 CString

编辑:我可以吗

或者

?