Win32 API 读取文件
昨天又用Win32来读取文件的时候,又出现了字符编码的问题。
用TCHAR字符来写文件呢,用系统的记事本打开是乱码。
用CHAR字字符来写呢,在读取汉字的时候后面有一串乱码,
用CHAR[]数组读取就没有后面多出来的空格或是乱码的情况,
用New CHAR[]就不行,我用memset()清零也没解决问题

图中后面是没有乱码了,但是后面多了好几个空格。有时后面是乱码。
真心的晕呀。
唉,闹心呀,
**********************************
今天又来研究的时候,突然想起读取数据完了要在后面加上个/0,试了下,居然没有问题了,真是醉了,
现记录下,以免以后又忘记了。
写入文件
void WriteFile(void)
{
HANDLE hFile = ::CreateFile(L"CreateFileDemo.txt", //创建文件的名称
GENERIC_WRITE | GENERIC_READ, //读写模式
0, //不共享读写
NULL, //缺省安全属性
CREATE_ALWAYS, //如果文件存在也创建
FILE_ATTRIBUTE_NORMAL, //一般的文件
NULL); //没有模板 if (hFile == INVALID_HANDLE_VALUE)
{
OutputDebugString(L"创建文件出错!");
} //往文件中写入数据 char chBuffer[] = "你是我的小苹果!abc"; DWORD dwWritenSize = 0;
BOOL bRet = ::WriteFile(hFile, chBuffer, strlen(chBuffer), &dwWritenSize, NULL);
if (bRet)
{
OutputDebugString(L"WriteFile 写入文件成功.\r\n");
} CloseHandle(hFile);
}
//读取文件
void ReadFileRead(void)
{
HANDLE hFile = ::CreateFile(L"CreateFileDemo.txt", //创建文件的名称
GENERIC_WRITE | GENERIC_READ, //读写模式
0, //不共享读写
NULL, //缺省安全属性
OPEN_EXISTING, //打开一个存在的文件,不存在函数调用失败
FILE_ATTRIBUTE_NORMAL, //一般的文件
NULL); //没有模板 if (hFile == INVALID_HANDLE_VALUE)
{
OutputDebugString(L"创建文件出错!");
} int nFileLong =GetFileSize(hFile, NULL);//获得文件长度
DWORD drReadSize = 0;
char *pChar=new char[nFileLong+1];//要多加一个,后面删除指针才不会报异常
memset(pChar,0,nFileLong);
BOOL bRet = ::ReadFile(hFile, pChar, nFileLong, &drReadSize, NULL);
//注意读取文件完了要在字符数组后面加上个0,昨天就是忘记这个了,弄了一晚上都没弄好。
pChar[drReadSize]=0;
if (bRet)
{
OutputDebugString(L"ReadFile 读取文件成功\r\n"); SetDlgItem(hWnd,IDC_EDIT1,pChar); }
else
{
//获取出错码
DWORD dwError = GetLastError();
//处理出错.
TCHAR chErrorBuf[1024];
wsprintf(chErrorBuf, L"GetLastError()=%d\r\n", dwError);
OutputDebugString(chErrorBuf);
}
Delete pChar;
CloseHandle(hFile);
}
效果图:

这下后面就没有空格和乱码的现象了。
唉,基础知识不牢的表现。
Win32 API 读取文件的更多相关文章
- HTML5 file api读取文件的MD5码工具
1.工具的用途:用HTML5 file api读取文件的MD5码.MD5码在文件的唯一性识别上有很重要的应用,业内常用MD5进行文件识别.文件秒传.文件安全性检查等: 2.适用性:IE.Chrome皆 ...
- Java8 新API读取文件内容
import java.io.IOException;import java.nio.charset.Charset;import java.nio.file.Files;import java.ni ...
- HTML5的File API读取文件信息
html结构: <div id="fileImage"></div> <input type="file" value=" ...
- File API 读取文件小结
简单地说,File API只规定怎样从硬盘上提取文件,然后交给在网页中运行的JavaScript代码. 与以往文件上传不一样,File API不是为了向服务器提交文件设计的. 关于File API不能 ...
- 使用Win32 API 查找文件
头文件:#include <windows.h> //FindFirstFile() 获得指定目录的第一个文件 HANDLE FindFirstFile( LPCTSTR lpFileNa ...
- WIN32 API 获取文件版本信息
CString strVersion; CString strPath(_T("xxxxxxxx.exe")); // 读文件信息 DWORD dwVerHnd = 0; DWOR ...
- 使用FileSystem自带的api读取hdfs中的文件
博客搬家自https://my.oschina.net/itsyizu/blog/ 1. 创建hadoop MapReduce项目 输入项目名称 创建好的项目初始化状态如下 编写java类 impor ...
- 使用 JavaScript File API 实现文件上传
概述 以往对于基于浏览器的应用而言,访问本地文件都是一件头疼的事情.虽然伴随着 Web 2.0 应用技术的不断发展,JavaScript 正在扮演越来越重要的角色,但是出于安全性的考虑,JavaScr ...
- 调用Web API将文件上传到服务器的方法(.Net Core)
最近遇到一个将Excel通过Web API存到服务器的问题,其中涉及到Excel的读取.调用API.Web API怎么进行接收. 一. Excel的读取.调用API Excel读取以及调用API的代 ...
- File API 读取上传的文件
1, 在html 文档中,<input type="file"> 我们可以选择文件进行上传,但这时只能上传一个文件.如果加上multiple 属性,可以上传多个文件,上 ...
随机推荐
- JS神奇的或0(|0)
按照常识,位运算x|0,要么等于x,要么等于0 那么在JS的世界你的认知就要被颠覆了 下面请看 不带或0运算: (window.crypto.getRandomValues(new Uint32Arr ...
- webdav协议及我的笔记方案(私有部署)
背景 用markdown用于文章写作,有几年时间了,不是很喜欢折腾,主要就是在电脑上写,用的笔记软件就是typora.由于里面有很多工作相关的,以及个人资料相关的(包含了各种账号.密码啥的),所以不敢 ...
- JSP快速上手与MVC模式和三层架构的知识点总结+综合案例
阅读提示: 说明 由于JSP实在是太 难读 难写 复杂 占资源 难调试 不分离 了,拉跨!(节目效果哈,勿喷),作为一种有(ji)更(hu)好(jiu)的(yao)上(bei)位(tao)替(tai) ...
- Http基础协议
浏览器请求方法 http1.0定义了三种: GET: 向服务器获取资源,比如常见的查询请求 POST: 向服务器提交数据而发送的请求 Head: 和get类似,返回的响应中没有具体的内容,用于获取报头 ...
- Spring DI(依赖注入)自动装配 @Autowired、@Resource注解
@Autowired:一部分功能是查找实例,从Spring容器中根据类型(Java类)获取对应的实例:另一部分功能就是赋值,将找到的实例,装配给另一个实例的属性值.(注:一个Java类型在同一个Spr ...
- Java-Cookie客户端会话技术
会话技术 会话:一次对话中包含多次请求和响应 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cook ...
- PowerBuilder编程新思维6:装饰(用最简单的方式做框架)
To be, or not to be - that is the question. PowerBuilder编程新思维6:装饰(用最简单的方式做框架) 问题 这一章,是写得最艰难的一章,原因有四: ...
- 解决方案 | 外接键盘win+d失效,绿联键盘win+d,win+e失效
按下fn + 右边的win键 即可解决.如下图所示.
- oeasy教您玩转vim - 9 - # 换行插入
插入新行 回忆上节课内容 上上次是 i.I 在光标前面插入 又加了 a.A 可以在光标后面插入 a 是在光标后插入 A 是在当前行最后插入 关于插入,还有什么命令吗? 我们继续去查阅 help :h ...
- 学习笔记--Java构造方法
Java构造方法 关于构造方法 构造方法又被称作:构造函数/构造器/Constructor 语法结构: [修饰符列表] 构造方法名(形式参数列表){ 构造方法体; } 对比普通方法语法结构 [修饰符列 ...