如何用fstream打开软盘
如何用fstream打开软盘? 我正在尝试这样的事情: 但它总是返回错误
#include <iostream>
#include <fstream>
using namespace std;
char a='k';
int main()
{
fstream stream;
stream.open( "\\\\.\\A:", ios::binary );
if( stream.good() == false )
{
cout <<"Error";
}
for( int i = 0 ; i < 512 ; i++ )
{
stream >> a;
//cout << a;
}
stream.close();
cin.get();
return 0;
}
How to open floppy disc with fstream?
I'm trying something like this:
but it always returns error
#include <iostream>
#include <fstream>
using namespace std;
char a='k';
int main()
{
fstream stream;
stream.open( "\\\\.\\A:", ios::binary );
if( stream.good() == false )
{
cout <<"Error";
}
for( int i = 0 ; i < 512 ; i++ )
{
stream >> a;
//cout << a;
}
stream.close();
cin.get();
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不能使用 fstream 打开设备 - 只能打开该设备上包含的文件系统中的文件。您需要使用操作系统特定的功能来访问设备。
编辑:需要明确的是,可以使用 fstream 打开软盘设备,但这种对系统的访问级别超出了标准 C++ 库提供的抽象级别,因此应使用特定于操作系统的函数。
You cannot use fstream to open a device - only a file within the filesystem contained on that device. You need to use operating system specific functionality to access a device.
EDIT: To be clear, it might be possible to open the floppy device using fstream but this level of access to the system goes beyond the level of abstraction provided by the Standard C++ Library and so OS-specific functions should be used instead.
如此 MSDN 文档<的备注部分所述< /a>,设备文件应以
FILE_SHARE_READ|FILE_SHARE_WRITE
共享模式打开。默认情况下,fstreams 不支持此功能。您需要使用低级 win32CreateFile
API,然后使用ReadFile
和WriteFile
。完成后,使用CloseHandle 关闭句柄
。As described in the Remarks section of this MSDN documentation, device files should be opened with
FILE_SHARE_READ|FILE_SHARE_WRITE
sharing mode. By default, fstreams do not support this. You will need to directly open a handle to the file using the low-level win32CreateFile
API, then read/write usingReadFile
andWriteFile
. When done, close the handle withCloseHandle
.