如何用fstream打开软盘

时间:2011-01-29 10:03:12

标签: c++ windows 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;
}

2 个答案:

答案 0 :(得分:2)

您无法使用fstream打开设备 - 只能使用该设备上包含的文件系统中的文件。您需要使用特定于操作系统的功能来访问设备。

编辑:要清楚,可以使用fstream打开软盘设备,但这种对系统的访问级别超出了标准C ++库提供的抽象级别,因此应该使用特定于操作系统的函数来代替

答案 1 :(得分:0)

this MSDN documentation的备注部分所述,应使用FILE_SHARE_READ|FILE_SHARE_WRITE共享模式打开设备文件。默认情况下,fstream不支持此功能。您需要使用低级win32 CreateFile API直接打开文件句柄,然后使用ReadFileWriteFile进行读/写。完成后,使用CloseHandle关闭句柄。