写入字符到文件中:

//    TODO: 写字符到文件
//    参数: CString类型的文件名FileName;char *类型的数据内容;unsigned int类型内容长度
//    返回: 成功返回TRUE,失败返回FALSE
BOOL WriteFileToFlash(CString FileName, char *ptr_Buffer,unsigned int bufferlength)
{
    //打开文件
    DWORD    dwBytesWritten;
    HANDLE    m_Handle    =    CreateFile(    FileName,           //    指定要创建或打开文件的文件名
                                GENERIC_WRITE | GENERIC_READ,     //    指定文件的访问权限为可读可写
                                FILE_SHARE_READ,                  //    指定赋予其它进程的访问权限
                                NULL,                             //    文件访问的安全属性
                                OPEN_ALWAYS,                      //    指定创建或打开文件的方式:打开已存在文件,若文件已存在,则覆盖此文件,并清空已存在属性
                                FILE_ATTRIBUTE_NORMAL,            //    指定文件的属性:默认属性
                                NULL);                            //    没有模板文件(CE不支持)
    if(m_Handle    ==    INVALID_HANDLE_VALUE)
    {    AfxMessageBox(_T("文件打开失败!"));
        return FALSE;
    }

    //文件指针指向文件末尾写入内容
    SetFilePointer(m_Handle,,NULL,FILE_END);
    BOOL    WriteFlags    =    WriteFile(  m_Handle,                //    指定文件句柄,CreateFile返回来的句柄
                                          ptr_Buffer,              //    指定将要向文件写入数据的数据缓冲区
                                          bufferlength,            //    指定将要写入文件的数据的字节数
                                          &dwBytesWritten,         //    表示实际写入文件的数据的字节数
                                          NULL);                   //    CE不支持的参数,设为NULL    

    //资源释放防止内存泄露
    CloseHandle(m_Handle);
    m_Handle    =    INVALID_HANDLE_VALUE;

    if (!WriteFlags)
    {    AfxMessageBox(_T("文件写入失败!"));
        return FALSE;
    }
    return TRUE;
}


void Example()
{
  CString m_FileName=_T("\\FLASH\\Test.csv");
  char *TobeWriteFirst="Test string\r\n";
   unsigned int bufferlength =strlen(TobeWriteFirst);

   WriteFileToFlash(m_FileName,TobeWriteFirst,bufferlength);
}

多个char *类型字符合并写入,此处申请内存是为了将来多数据的处理,简单的操作可以直接strcat()连接字符串:

//    TODO: 写入一行数据到文件
//    参数: 无
//    返回: 成功返回TRUE,失败返回FALSE
BOOL WriteOneLineData()
{
  BOOL ReturnValue=FALSE;
  char *c_ScanDate = "日期";
  char *c_ProName  = "名称";
  //计算将要写入数据的长度
    unsigned int bufferlength =strlen(c_ScanDate)+strlen(c_ProName);

    //申请一片内存用于临时存放将要写入文件的内容
    char *ptr_Buffer;
    )) == NULL)//+1是字符串后面的'\0'结束符,strlen函数计算的长度是不算'\0'结束符的
    {
        AfxMessageBox(_T("内存申请失败!"));
        return FALSE;
    }
    else
    {
        //使用申请的内存前一定要清空!
        memset(ptr_Buffer, , (bufferlength+));

        //数据处理
        strcat(ptr_Buffer, c_ScanDate);
        strcat(ptr_Buffer, c_ProName);
  
    //写入Flash
    if(WriteFileToFlash(g_FileName, ptr_Buffer,(bufferlength)))
    {
      ReturnValue=TRUE;
    }
    else
    {
      ReturnValue=FALSE;
    }
      //资源释放防止内存泄露
      free(ptr_Buffer);  }

    return ReturnValue;
}

CString转cahr *

//    TODO:Unicode的CString转为char*型,返回的是char*
//    参数: 将要转换的CString类型数据
//    返回: 转换好的char*类型数据
char* UnicodeCStringToChar(CString FromCStr)
{
    ,FromCStr,FromCStr.GetLength(),NULL,,NULL,NULL);//按字节计算宽字节字符的大小,FromCStr.GetLength()是按字符计算字符长度
    char * pTochar = new char[len];   //以字节为单位为多字节字符数组申请空间,数组大小为按字节计算的宽字节字节大小
    WideCharToMultiByte(CP_ACP,,FromCStr,FromCStr.GetLength(),pTochar,len,NULL,NULL);
    pTochar[len] = '\0';   //多字节字符以'\0'结束
    return pTochar;
}

void Example()
{
    char *c_ScanDate ="";
    CString m_EditScanDate=_T("Test Data");
    c_ScanDate =UnicodeCStringToChar(m_EditScanDate);
}

打开文件查找字符串:

//    TODO:查找字符串
//    参数:CString类型数据
//    返回:找到返回TRUE,失败返回FALSE
BOOL Check(CString ProSN)
{
    BOOL ReturnValue=TRUE;

    //    打开文件查找字符是否存在,如果存在则返回FALSE并提示,不存在返回TRUE
    char *Temp_ProSN=UnicodeCStringToChar(ProSN);
    char ch_Temp;
    unsigned ;

    //打开文件
    FILE *pFile;
    if((pFile=fopen("\\FLASH\\Configure","rb"))==NULL)
    {
        AfxMessageBox(_T("打开文件失败!"));
        return FALSE;
    } 

    //读取文件并比对是否存在
    while((ch_Temp=fgetc(pFile))!=EOF)
    {
        if(ch_Temp==Temp_ProSN[CompareTime])
        {
            CompareTime++;
        }
        else
        {
            CompareTime=;
        }

        if(CompareTime>=strlen(Temp_ProSN))
        {
            AfxMessageBox(_T("字符串已找到!"));
            ReturnValue=FALSE;
            break;
        }
    }

    //资源释放防止内存泄露
    fclose(pFile);

    return ReturnValue;
}

打开文件查找字符并读出所在行的数据:

//    TODO:导入数据,在数据里搜索该字符串并读出所在行数据
//    参数:CString类型字符串
//    返回:成功找到数据信息返回TRUE,其它返回FALSE
BOOL SearchDateToDisplay(CString ProSN)
{
    BOOL ReturnValue=TRUE;//不出意外返回TRUE

    char ch_ReadByte;
    char *c_TobeFind=UnicodeCStringToChar(ProSN);
    char *ptr_OneLineData;
    unsigned ,iCount=,bufsize=(),chNum=;
    BOOL IsFindOut=FALSE;    

    if ((ptr_OneLineData = (char *)malloc(bufsize)) == NULL)
    {
        AfxMessageBox(_T("内存申请失败!"));
    }
    memset(ptr_OneLineData, , bufsize);

    FILE *pFile;
    if((pFile=fopen("\\FLASE\\Test.csv","rb"))==NULL)
    {     AfxMessageBox(_T("打开文件失败!"));
        return FALSE;
    }

    //读文件和查找字符并导出查找字符所在行所有数据===========================================
    while((ch_ReadByte=fgetc(pFile))!=EOF)
    {
        if(ch_ReadByte=='\n')    //读到行尾
        {
            if(IsFindOut==TRUE)
            {
                break;
            }
            else
            {
                chNum=;
                memset(ptr_OneLineData, , ());
            }
        }
        else    //正常读字符
        {
            if(chNum < bufsize) //防止缓冲区溢出
            {
                ptr_OneLineData[chNum] = ch_ReadByte;
                chNum++;
            }

            //比对字符串
            if(ch_ReadByte==c_TobeFind[CompareTime])
            {
                CompareTime++;
                if(CompareTime>=strlen(c_TobeFind))
                {
                    //AfxMessageBox(_T("数据已找到!"));
                    IsFindOut=TRUE;
                }
            }
            else
            {
                CompareTime=;
            }
        }
    }

    //若已从源文件取得数据则存放在ptr_OneLineData所指向的内存中
    if(IsFindOut==FALSE)
    {
        ReturnValue=;//返回状态2,由用户操作
    }
    else
    {
        CString CStrOneLineData =(CString)ptr_OneLineData;    //    把数据转为CString类型进行处理
     AfxMessageBox(CStrOneLineData);  
    
      //通过CString分割字符串,分割点",",找到","然后计算CString位置,然后取所在位置前面值,删除再找,取值再删除……
      ;
      divisionPoint = CStrOneLineData.Find(_T(","));
      m_EditScanDate = CStrOneLineData.Left(divisionPoint);
      CStrOneLineData.Delete(,(divisionPoint+));
      divisionPoint = CStrOneLineData.Find(_T("\n"));
      m_EditProName = CStrOneLineData.Left(divisionPoint);
      CStrOneLineData.Empty();

    }

    //资源释放防止内存泄露
    fclose(pFile);
    free(ptr_OneLineData);

    return ReturnValue;
}

CE 文件读写操作的更多相关文章

  1. c语言文件读写操作总结

    C语言文件读写操作总结 C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程 ...

  2. [转]Android - 文件读写操作 总结

     转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...

  3. PHP文件读写操作之文件写入代码

    在PHP网站开发中,存储数据通常有两种方式,一种以文本文件方式存储,比如txt文件,一种是以数据库方式存储,比如Mysql,相对于数据库存储,文件存储并没有什么优势,但是文件读写操作在基本的PHP开发 ...

  4. Java 字节流实现文件读写操作(InputStream-OutputStream)

    Java 字节流实现文件读写操作(InputStream-OutputStream) 备注:字节流比字符流底层,但是效率底下. 字符流地址:http://pengyan5945.iteye.com/b ...

  5. Java 字符流实现文件读写操作(FileReader-FileWriter)

    Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...

  6. python(三)一个文件读写操作的小程序

    我们要实现一个文件读写操作的小程序 首先我们有一个文件 我们要以"============"为界限,每一个角色分割成一个独立的txt文件,按照分割线走的话是分成 xiaoNa_1. ...

  7. 实现动态的XML文件读写操作

    实现动态的XML文件读写操作(依然带干货) 前言 最近由于项目需求,需要读写操作XML文件,并且存储的XML文件格式会随着导入的数据不同而随时改变(当然导入的数据还是有一定约束的),这样我们要预先定义 ...

  8. ios 简单的plist文件读写操作(Document和NSUserDefaults)

    最近遇到ios上文件读写操作的有关知识,记录下来,以便以后查阅,同时分享与大家. 一,简单介绍一下常用的plist文件. 全名是:Property List,属性列表文件,它是一种用来存储串行化后的对 ...

  9. java文件读写操作类

    借鉴了项目以前的文件写入功能,实现了对文件读写操作的封装 仅仅需要在读写方法传入路径即可(可以是绝对或相对路径) 以后使用时,可以在此基础上改进,比如: 写操作: 1,对java GUI中文本框中的内 ...

随机推荐

  1. iOS - Mac 锁屏快捷键设置

    Mac 锁屏快捷键设置 control + shift + Eject 锁屏快捷键 如果用户要离开电脑一段时间,可以选择直接把笔记本直接合上.但是这样原先在跑的进程就会挂起或者结束,如果正在下载,那么 ...

  2. Less入门到上手——前端开发利器<一>

    摘录less官网的解释: LESSCSS是一种动态样式语言,属于CSS预处理语言的一种,它使用类似CSS的语法,为CSS的赋予了动态语言的特性,如变量.继承.运算.函数等,更方便CSS的编写和维护. ...

  3. USACO2016Splitting the Field分割牧场

    Description FJ的N头奶牛分别位于他二维的牧场的不同位置.FJ想用一个矩形栅栏围住这些牛(牛可以在栅栏边上),并使这个栅栏尽可能小.这个栅栏的边与x轴或y轴平行.不幸的是,FJ上个季度的牛 ...

  4. web应用程序测试方法和测试技术详述

    1.界面测试 现在一般人都有使用浏览器浏览网页的经历,用户虽然不是专业人员但是对界面效果的印象是很重要的.如果你注重这方面的测试,那么验证应用程序是否易于使用就非常重要了.很多人认为这是测试中最不重要 ...

  5. CENTOS修改主机名

    1.临时修改主机名 显示主机名: zhouhh@zzhh64:~$ hostname zhh64 修改主机名: zhouhh@zzhh64:~$ sudo hostname zzofs zhouhh@ ...

  6. (37) 在命令行调用API

    l 前言 有时为了更好地调整和改动数据会和到cli ,这会给我们带来更高的效率,基于官网的文档很是简单,这里就带大家一起运用 cli l 搭建 在项目下面有文件odoo.py 这个文件 ,对就是用这个 ...

  7. 字符串与Objec之间互相转换

    字符串与Objec之间互相转换可通过json实现. JSON.parse(str);// 字符串转Json Object JSON.stringify(obj);// Obj转字符串

  8. C/C++-----------http协议发送字段,文件,单个和多张图片

    关于c/c++ 网络编程,无论在linux还是windows,要说到自由性,和安全性,socket无疑是比较好的!对于socket,因为它的传输协议只有两种tcp和udp,属于网络层,这里我们不去重点 ...

  9. Aspose 强大的服务器端 excel word ppt pdf 处理工具

    Aspose 强大的服务器端 excel word ppt pdf 处理工具 http://www.aspose.com/java/word-component.aspx

  10. Mongodb异常关闭重启失败解决

    情况再现,连接mongodb的网站没有关,直接关闭了mongodb的cmd窗口.再次打开mongodb出现失败. 解决办法:网上说是删除 *.lock文件,再进行 --repair ,最后再打开mon ...