| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> c++ 文件操作方式 -> 正文阅读 |
|
[移动开发]c++ 文件操作方式 |
1.使用标准C运行库函数,包括fopen、fclose、fseek、fwrite、fread、fprintf等.需要 FILE *fopen(const char *filename, const char *mode);
#include <stdio.h> void fLog() 2.使用fstream、ofstream、ifstream流要通过一个流对象打开一个文件,我们使用它的成员函数open():void open (const char * filename, openmode mode); 这里filename 是一个字符串,代表要打开的文件名,mode 是以下标志符的一个组合: ios::in 为输入(读)而打开文件 #include <fstream> ofstream file; 当文件读写操作完成之后,我们必须将文件关闭以使文件重新变为可访问的。关闭文件需要调用成员函数close(),它负责将缓存中的数据排放出来并关闭文件。它的格式很简单:void close (); tellg() 和 tellp() seekg() 和seekp() 使用重载的插入操作符<< 或者 >> ,或者是cout <<??或?cin >>? 如: #include <iostream> #include <fstream> #include <cstdlib> using namespace std; int main () { char buffer[256]; ifstream examplefile("example.txt"); if (! examplefile.is_open()) { cout << "Error opening file"; exit (1); } while (!examplefile.eof()) { examplefile.getline(buffer,100); cout<<buffer<< endl; } return 0; } 在二进制文件中,使用<< 和>>,以及函数(如getline)来操作符输入和输出数据,没有什么实际意义。文 件流包括两个为顺序读写数据特殊设计的成员函数:write 和 read。 它们的原型是: 如: #include <iostream> #include <fstream> using namespace std; int main () { const char * filename = "example.txt"; char * buffer; long size; ifstream file(filename, ios::in|ios::binary|ios::ate); size = file.tellg(); file.seekg(0, ios::beg); buffer = new char [size]; file.read(buffer, size); file.close(); cout <<"the complete file is in a buffer"; delete[] buffer; return 0; } 3.使用Win32下的文件和目录操作函数,如CreateFile,CloseHandle,SetFilePointer,ReadFile、WriteFile、CopyFile,DeleteFile,FindNextFileWin32 下,打开和创建文件都由CreateFile完成,成功的话,得到一个Win32下的句柄,这不同于“C”的fopen返回的句柄。关闭文件使用Win32的CloseHandle。 HANDLE CreateFile( lpFileName:要打开的文件名; dwDesiredAccess:如果是GENERIC_READ表示允许对设备进行读访问;如果是GENERIC_WRITE表示允许对设备进行写访问(可以组合使用);如果是0,表示只允许获取与一个设备有关的信息; dwShareMode:定义共享模式。如果是0表示不共享;是FILE_SHARE_READ和/或FILE_SHARE_WRITE表示允许对文件进行共享; lpSecurityAttributes:指向一个SECURITY_ATTRIBUTES结构的指针,定义了文件的安全特性; dwCreationDisposition:指定当文件存在或不存在时的操作。常见的操作有5种: CREATE_NEW:创建文件,如果文件存在会出错; FILE_ATTRIBUTE_ARCHIVE:标记为归档属性; HANDLE hFILE=CreateFile("1.txt",GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL); 在成功调用CreateFile函数之后,返回所打开的或创建的文件句柄,可调用ReadFile或WriteFile函数来读写文件 BOOL WriteFile( BOOL ReadFile( DWORD 例子: #include <stdio.h> 4.如果是mfc,MFC用一些类来封装文件访问的Win32 API。以CFile为基础,从CFile派生出几个类,如CStdioFile,CMemFile,MFC内部使用的CMiororFile,等等.构造一个CFile对象。 调用CFile::Open()函数创建、打开指定的文件。Open调用Win32函数::CreateFile打开文件,并把文件句柄保存到成员变量m_hFile中。 调用CFile::Read()和CFile::Write ()进行文件操作。 调用CFile::Close()关闭文件句柄。 文件指针的位置设置可以使用: Seek( LONG lOff, UINT nFrom )???把文件指针移动到指定位置 lOff :是指针偏移字节数,若向后偏移则为正数,若向前偏移,则为负数。 nFrom :MSDN上有三种取值: CFile::begin 从文件开头开始算起,lOff为正数; CFile::current??当前位置开始算起; CFile::end??? 从文件结尾开始算起,lOff为负数; SeekToBegin( )??????把文件指针移到文件开头 SeekToEnd( )??????????把文件指针移到文件末尾 GetPosition( )????????返回当前文件指针的位置 file.open( LPCTSTR lpszFileName, UINT nOpenFlags, CFileException* pError = NULL ); //pszFileName是文件名,可包含文件路径,若只有文件名,则默认路径为工程路径,nOpenFlags是文件打开模式,pError是打开失败时用来接收失败信息,一般设置为NULL。 nOpenFlags的常用模式有
写入文件: CFile file; file.Open("E:\\VC\\1.txt",CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate,NULL); file.Write("HelloWorld",strlen("HelloWorld"));?? file.close( ); |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:58:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |