急,求助:关于VC++6中对文件的操作?。。。

jessiepan 2006-05-19 10:41:29
俺是菜鸟,VC的初学者,我想问问 CreateFile,OpenFile....VC++中有关对文件操作的函数怎么用啊?哪位大虾能不能给个例子呢,具体一点的。。

thanks..
...全文
548 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
一条晚起的虫 2006-06-23
  • 打赏
  • 举报
回复
static int i = 0;
CString strFileName;
strFileName.Format("e:\\recordpic%d.bmp", i);
CreateFile();
i++;
jessiepan 2006-06-21
  • 打赏
  • 举报
回复
我想问一下,楼上的各位大哥用的MSDN都是什么版本的呢?

我用的是 [MSDN.Library.2006年1月3CD版].Microsoft.MSDN.Library.January.2006-ZWTiSO ,感觉这个版本的 MSDN 里,介绍 .NET 技术方面的东西比较多点。 我用的是 VC++ 6.0 的开发环境,是不是要找个老版本的MSDN ,对VC++ 6的支持比较好?

顺便再顶一下,我楼上还没解决的问题。。
jessiepan 2006-05-23
  • 打赏
  • 举报
回复
OK, 用 fopen, fclose, fread, fwrite ... 大概搞定了! 谢谢楼上的各位朋友啊 :)

还有一个关于文件创建的问题。
HANDLE FileHandle = CreateFile( "e:\\recordpic1.bmp", GENERIC_WRITE, FILE_SHARE_READ, NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
如果我要求第一次文件建立时,是自动生成 recordpic1.bmp 的文件,而第二次是生成 recordpic2.bmp,第三次是 recordpic3.bmp 。。。。文件后的那个序号依次递加,该如何做呢? 文件名的动态变化该怎么实现呢?不需要手工来输入创建的文件名。

请各位大虾帮一下忙啊! thanks...
bladestar 2006-05-19
  • 打赏
  • 举报
回复
MSDN!!
tufaqing 2006-05-19
  • 打赏
  • 举报
回复
WINBASEAPI HANDLE WINAPI CreateFile ( LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile )

WINBASEAPI BOOL WINAPI ReadFile ( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped )

WINBASEAPI BOOL WINAPI WriteFile ( HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped )

WINBASEAPI DWORD WINAPI SetFilePointer ( HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod )
LeiShi 2006-05-19
  • 打赏
  • 举报
回复
CFile的文件读写

void CChildView::OnFileOpen()
{
// TODO: Add your command handler code here
try
{
CFile file(_T("wyp.txt"),CFile::modeRead);

BYTE buffer[0x1000]; //4k byte readed once a time;
DWORD dwBytesRemaining=file.GetLength(); //Get length of the file
while(dwBytesRemaining)
{
UINT nBytesRead=file.Read(buffer,sizeof(buffer));
dwBytesRemaining-=nBytesRead;
}

}
catch(CFileException* e)
{
e->ReportError();
e->Delete();
}

}

//改成大写再写回原文件例程
void CChildView::OnFileOpen()
{
// TODO: Add your command handler code here
try
{
CFile file(_T("wyp.txt"),CFile::modeReadWrite);

BYTE buffer[0x1000]; //4k byte readed once a time;
DWORD dwBytesRemaining=file.GetLength(); //Get length of the file
while(dwBytesRemaining)
{
DWORD dwPosition=file.GetPosition();

UINT nBytesRead=file.Read(buffer,sizeof(buffer));
::CharUpperBuff((LPTSTR)buffer,nBytesRead);
file.Seek(dwPosition,CFile::begin);
file.Write(buffer,nBytesRead);
dwBytesRemaining-=nBytesRead;
}

}
catch(CFileException* e)
{
e->ReportError();
e->Delete();
}
}

Try it!
cpio 2006-05-19
  • 打赏
  • 举报
回复

VC里面有CFile类,提供对文件的读取,写入功能

打开时也有参数,可设置为文件不存在则创建

你查MSDN
syy64 2006-05-19
  • 打赏
  • 举报
回复
MSDN上有很多例子。
Alan S1 2006-05-19
  • 打赏
  • 举报
回复
MSDN




include all your ask
nvampire 2006-05-19
  • 打赏
  • 举报
回复
关于怎么读主要要看你是怎么写的,如果是直接用MFC的串行化写的那就在用串行化读,如果你的数据是自己写入的,那就按照你写入的顺序读。其实就是文件格式的问题。
zhuan 2006-05-19
  • 打赏
  • 举报
回复
// open recordv.mp4 file
char *pData;

HANDLE FileHandle = CreateFile( "e:\\recordpic.bmp", GENERIC_READ, FILE_SHARE_READ, NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (FileHandle == INVALID_HANDLE_VALUE)
{

}
OpenFile( "e:\\recordpic.bmp", pData, OF_READ);
^^^^^^^^^
搂主这里用OpenFile是想干什么呢?读取文件内容?CreateFile已经打开文件了呀?晕~~~~~~~~~~~~~
HFILE OpenFile(
LPCSTR lpFileName, // pointer to the filename
LPOFSTRUCT lpReOpenBuff, // pointer to the file information struct
UINT uStyle // specifies the action and attributes
);
你的pData也不是文件信息结构的呀?编译的时候不报错?再晕~~~~~~~~~~~~~

iLen = GetFileSize(FileHandle, NULL);
iLen = *(int*)(pData+12);

iLen到底是什么,GetFileSize还有什么意义?
pPlayVideo的参数是如何定义的?
如果要读取文件内容的话,用ReadFile,另外能不能把问题说得更清楚一些?
ripyu 2006-05-19
  • 打赏
  • 举报
回复
............晕倒。。。。。。。。。看msdn,一个建立,写,关闭,读的过程
jessiepan 2006-05-19
  • 打赏
  • 举报
回复
lfchen(一条晚起的虫) ( ) 信誉:100

大哥,这么巧啊!到处都能看到您的身影啊。。。

有必要要知道我想干什么吗?好的,那我大概说一下吧。。 我现在在做MP4方面的处理,我现在在完成一个MP4视频拍照的功能模块:先把一帧的视频流用一个文件保存下来(所以我要先建立一个文件),然后再把那个保存下来的MP4文件里的视频数据流读出来,在我程序的主界面上显示出来。。。。 所以,现在涉及到了一点点关于文件的操作。。

应该是很简单的啊! 请各位大虾照顾一下小弟啊。。。
唉!~ 别让我再看 MSDN 了啊! 写个简单的 sample ,不更好么
plphoenix 2006-05-19
  • 打赏
  • 举报
回复
不用MFC的话用c的stdio.h里面的文件操作比较好,不像OpenFile那样那么多参数看得头大。
fopen,fread,fwrite,fclose,fcreate,fseek
一般的文件操作这几个函数应该足够了
另外还有个比较有用的是_access
具体这些怎么用MSDN里面有很详细的帮助的
一条晚起的虫 2006-05-19
  • 打赏
  • 举报
回复
不知道楼主要干什么?
-------------
HANDLE FileHandle = CreateFile( "e:\\recordpic.bmp", GENERIC_READ, FILE_SHARE_READ, NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); //建立一个文件??

Mr_Ldh 2006-05-19
  • 打赏
  • 举报
回复
OpenFile?

学VC不看MSDN是不行的。
jessiepan 2006-05-19
  • 打赏
  • 举报
回复
谢谢楼上的这几位朋友啊! 我不用VC里面的CFile类,我是直接用的CreateFile,OpenFile,WriteFile....

我现在已经完成了写一个FILE,代码如下:
// save to recordv file
DWORD NumToWrite=0;

HANDLE FileHandle = CreateFile( "e:\\recordv.mp4", GENERIC_WRITE, FILE_SHARE_READ, NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
WriteFile(FileHandle, recordvbuf, dealptr, &NumToWrite, NULL);
SetEndOfFile(FileHandle);
CloseHandle(FileHandle);
FileHandle = INVALID_HANDLE_VALUE;

我现在是打开上面的这个文件,不会写啊! 哎。。。

// open recordv.mp4 file
char *pData;

HANDLE FileHandle = CreateFile( "e:\\recordpic.bmp", GENERIC_READ, FILE_SHARE_READ, NULL,CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (FileHandle == INVALID_HANDLE_VALUE)
{

}
OpenFile( "e:\\recordpic.bmp", pData, OF_READ);
iLen = GetFileSize(FileHandle, NULL);
iLen = *(int*)(pData+12);
if (pPlayVideo) pPlayVideo(0, pData+16, iLen,&m_video_rect);

这段代码有问题,大家帮忙看看,好吗?。。 谢谢了啊

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧