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 属性,可以上传多个文件,上 ...
随机推荐
- git连接到https服务器时出现“gnutls_handshake() failed”
git连接到https服务器时出现"错误: gnutls_handshake()失败" 问题描述 当我尝试使用git连接到任何HTTPS服务器时(例如git clone),它会出现 ...
- Android 8.0 开机时间优化
Android 8.0 开机时间优化 背景 在嵌入式行业中,有些搭载 了Android系统的设备由于 开机时间 过长而导致无法被接受. 介绍 启动时间是系统性能的重要组成部分,因为用户必须等待启动完成 ...
- 缺氧debu模式
OxygenNotIncluded_Data(E:\SteamLibrary\steamapps\common\OxygenNotIncluded\OxygenNotIncluded_Data) 文件 ...
- Power BI进阶秘籍,干货满满!如何将度量值转化为切片器(动态切换分析指标),实操指南来了!
Power BI进阶秘籍,干货满满!如何将度量值转化为切片器(动态切换分析指标),实操指南来了! 想要在Power BI中让度量值也能像维度一样灵活筛选?没问题,这里就为你揭秘如何将度量值转化为切 ...
- react为什么不用数组的下标来绑定key
最近在看一本名叫<深入浅出React和Redux>这一书,里面谈到了react的dom更新比对,记录一下. 假设有这么一个组件 <ul> <ListItem text=& ...
- 小程序-云数据库的add,get,remove,update
云数据库的使用就是使用简单的原生封装wx.cloud.database().collection("list"),然后就是add,get,remove,update四个方法 初始化 ...
- 使用GSAP制作动画视频
GSAP 3Blue1Brown给我留下了深刻印象.利用动画制作视频,内容简洁,演示清晰.前两天刚好碰到一件事,我就顺便学习了一下怎么用代码做动画. 以javascrip为例,有两个动画引擎,GSAP ...
- git 更新某个目录或文件
不多说直接贴代码 更新文件 $ git fetch remote: Counting objects: 8, done. remote: Compressing objects: 100% (3/3) ...
- [oeasy]python0068_ 字体样式_正常_加亮_变暗_控制序列
字体样式 回忆上次内容 上次了解了一个新的转义模式 \33 逃逸控制字符 esc esc 让输出 退出标准输出流 进行控制信息的设置 可以清屏 也可以设置光标输出的位置 还能做什么呢? 可以设置字符的 ...
- 整数-笔记C
实际情况也确实如此,C语言并没有严格规定 short.int.long 的长度,只做了宽泛的限制: short 至少占用 2 个字节. int 建议为一个机器字长.32 位环境下机器字长为 4 字节, ...