CStdioFile
来源:互联网 发布:佛山房地产数据 编辑:程序博客网 时间:2024/06/06 00:05
// 0610-5.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "0610-5.h"#ifdef _DEBUG#define new DEBUG_NEW#endif// 唯一的应用程序对象CWinApp theApp;using namespace std;int main(){ int nRetCode = 0; HMODULE hModule = ::GetModuleHandle(nullptr); if (hModule != nullptr) { // 初始化 MFC 并在失败时显示错误 if (!AfxWinInit(hModule, nullptr, ::GetCommandLine(), 0)) { // TODO: 更改错误代码以符合您的需要 wprintf(L"错误: MFC 初始化失败\n"); nRetCode = 1; } else { TCHAR *pszFileName = _T("H:\\test.txt"); // CStdioFile默认是以文本方式打开文件的,所以写入文件是要换行只需要写入\n // 流式文件是被缓冲的,而且可以以文本方式(缺省)或二进制方式打开。 // 文本方式提供对硬回车—换行符对的特殊处理。当你将一个换行符(0x0A) // 写入一个文本方式的CStdioFile 对象时,字节对(0x0D,0x0A)被发送给该文件。 // 当你读一个文件时,字节对(0x0D,0x0A)被翻译为一个字节(0x0A)。 // 读取一行文本到缓冲区,遇到“0x0D,0x0A”时停止读取,并且去掉硬回车“0x0D”, // 保留换行符“0x0A”,在字符串末尾添加“\0”(0x00)。nMax个字符里包含0x00这个字符。分析如下: // 1)如果nMax <= 字符数,读取(nMax-1)个字符 + 0x00 // 2)如果nMax = 字符数 + 1,读取nMax个字符 + 0x00 // 3)如果nMax > 字符数,读取nMax个字符 + 0x0A + 0x00 // CFile类默认的是按照二进制模式操作文件。 // 二进制模式:对于一行的结尾我们必须输入”\r\n”,才能表示回车换行的效果。 // CFile::typeText 以文本文件的形式打开文件 // CFile::typeBinary 以二进制文件的形式打开文件 // CFile::shareDenyNone 允许其他进程对文件进行读写 // CFile::shareDenyRead 不允许其他进程对文件进行读操作 // CFile::shareDenyWrite 不允许其他进程对文件进行写操作 // CFile::shareExclusive 以独占模式打开文件,不允许其他进程对文件进行读写 // CStdioFile 不支持Duplicate,LockRange,和UnlockRange 这几个CFile 函数。 // 如果在CStdioFile 中调用了这几个函数,将会出现CNoSupported 异常。 CStdioFile file; CFileException ex; // 判断文件是否存在,如果存在则去掉只读属性 if (PathFileExists(pszFileName) && !PathIsDirectory(pszFileName)) { DWORD dwAttrs = GetFileAttributes(pszFileName); if (dwAttrs != INVALID_FILE_ATTRIBUTES && (dwAttrs & FILE_ATTRIBUTE_READONLY)) { dwAttrs &= ~FILE_ATTRIBUTE_READONLY; SetFileAttributes(pszFileName, dwAttrs); } } if (!file.Open(pszFileName, CFile::modeCreate | CFile::typeText | CFile::modeReadWrite | CFile::modeNoTruncate | CFile::shareDenyWrite, &ex)) TRACE(_T("Can't open file %s, error = %u\n"), pszFileName, ex.m_cause); else { file.SeekToEnd(); CString str = _T("asdf\n"); file.WriteString(str); file.WriteString(_T("test\n")); TCHAR sz[] = _T("asdf\n"); file.WriteString(sz); file.Close(); } } } else { // TODO: 更改错误代码以符合您的需要 wprintf(L"错误: GetModuleHandle 失败\n"); nRetCode = 1; } return nRetCode;}
阅读全文
0 0
- CStdioFile
- CStdioFile
- CStdioFile
- CStdioFile
- CStdioFile
- CStdioFile
- CStdioFile
- CStdioFile
- CStdioFile
- CStdioFile类
- CStdioFile总结
- 关于CStdioFile
- 关于CStdioFile
- CStdioFile类
- CStdioFile乱码
- CStdioFile类
- CStdioFile类
- CStdioFile类
- 两数组的交
- 如何利用Python里面的json中的dump()/dumps()函数处理中文
- 《Unix环境高级编程》课后习题(1-6章)
- Mac上安装homebrew(类似于Linux上的apt-get)
- hdu-1232 畅通工程
- CStdioFile
- JSON & JSONP 的区别
- 队列和栈
- PHP7配置环境包
- Ubuntu 16.04 安装 VNC 及 gnome 桌面环境
- Python 的第一个 hello world 程序!
- Android recyclerView网格布局上拉加载更多视图的设计
- 学会Git玩转Github笔记(一)——Github基本概念 & 仓库管理
- GetSystemDirectory