当前位置:文档之家› VC读取写入EXCEL2003文件

VC读取写入EXCEL2003文件

VC读取写入EXCEL2003文件
VC读取写入EXCEL2003文件

利用automation

具体如下:

1。你要在新建的工程中导入excel的类库。

以新建基础对话框工工程test为例。建好后通过类向导(ctrl+w)addclass选from a type libray...,excel2003的是excel.exe文件,在c:/program files/microsoft office/office11/文件夹下。选excel.exe,把所有的类都导入,注意使用Shift按键选择。

2。在testApp::InitInstance()中初始化,

AfxOleInit();//加在initinstance方法里最前就好。

3. 在对话框中加一个按钮,双击按钮对应的处理函数如下:

别望了在加头文件:

在#include "stdafx.h"后面加#include "excel.h"

3.1//打开Excel文件,使用Excel程序显示,不读数据,也不写入数据,手工使用鼠标关闭Excel文件。

//声明操作excel文件类的对象

_Application objApp;// _application代表了EXCEL服务器

Workbooks objBooks; //workbooks表示整个Excel服务器(表现为一个.xls文件)里所有的表,(可以通过"新建"得到多个表,即MDI程序里的一个视窗一样,所有的视窗就是workbooks),

COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

//检测电脑上是否安装了Excel程序。

if(!objApp.CreateDispatch("Excel.Application"))

{ AfxMessageBox("无法启动Excel程序,请正确安装!");

return;

}

objApp.m_bAutoRelease = TRUE; //??什么意思?

objApp.SetVisible(TRUE); //打开Excel程序,没有显示任何数据。

objApp.SetUserControl(TRUE);//允许其它用户控制Excel,否则Excel将一闪即逝

//下面两句的功能和objBooks = objApp.GetWorkbooks(); 一样。

LPDISPATCH pWkBooks = objApp.GetWorkbooks(); //GetWorkbooks什么功能?

objBooks.AttachDispatch(pWkBooks,TRUE); //将一个IDispatch连接附着于COleDispatchDriver对象

//获得当前程序所在的路径,excel文件在此路径下。

char CurrentProgramPath[MAX_PATH];

GetCurrentDirectory(MAX_PATH,CurrentProgramPath);

CString ExcelFilePathName = CurrentProgramPath;//ExcelFilePathName表示excel文件的路径和文件名

ExcelFilePathName += "\\Data.xls";

//打开Excel文件,如果前面设置了objApp.SetVisible(TRUE),所以下句命令执行后,显示这个excel文件的数据。

//如果前面没有设置objAppApp.SetVisible(TRUE),下句命令执行后,不会显示这个Excel文件的数据。

//采用只读方式打开excel文件,_variant_t(true), true必须为小写,大写编译出错。

objBooks.Open(ExcelFilePathName,VOptional, _variant_t(true), VOptional, VOptional, VOptional, VOptional, VOptional,

VOptional, VOptional, VOptional, VOptional,

VOptional,VOptional,VOptional);

3.2//打开Excel文件,读出其中的数据,供后面设置Mschart控件使用。

//Excel文件使用三列,第一列表示序号,第二列表示第一组份的数据,第二列表示第二组份的数据。

//声明操作excel文件类的对象

_Application objApp; //_application代表了EXCEL服务器

Workbooks objBooks;//workbooks表示整个Excel服务器(表现为一个.xls文件)里所有的表,(可以通过"新建"得到多个表,即MDI程序里的一个视窗一样,所有的视窗就是workbooks),

_Workbook objBook;//_workbook就是一个表,相当于MDI中的一个视窗,

Worksheets objSheets; // worksheets表示所有的表单,每个表都可能有很多表单(建立一个Excel文件之后,打开,可以看到有sheet1,sheet2等,所有这些sheetn就组成了worksheets)

_Worksheet objSheet;//_worksheet就表示一个表单,

Range objRange,usedRange;//Range 表示元素的集合

COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

VARIANT ret;

CString cstr="";

//检测电脑上是否安装了Excel程序。

if(!objApp.CreateDispatch("Excel.Application"))

{ AfxMessageBox("无法启动Excel服务器!");

return;

}

// objApp.SetVisible(TRUE); //打开Excel程序,没有显示任何数据。

// objApp.SetUserControl(FALSE);//允许其它用户控制Excel,否则Excel将一闪即逝// objApp.m_bAutoRelease = TRUE; //??什么意思?

objBooks = objApp.GetWorkbooks();

//获得当前程序所在的路径,excel文件在此路径下。

char CurrentProgramPath[MAX_PATH];

GetCurrentDirectory(MAX_PATH,CurrentProgramPath);

CString ExcelFilePathName = CurrentProgramPath;//ExcelFilePathName表示excel文件的路径和文件名

ExcelFilePathName += "\\Data.xls";

//打开Excel文件,如果前面设置了objApp.SetVisible(TRUE),所以下句命令执行后,显示这个excel文件的数据。

//如果前面没有设置objAppApp.SetVisible(TRUE),下句命令执行后,不会显示这个Excel文件的数据。

//采用只读方式打开excel文件,_variant_t(true), true必须为小写,大写编译出错。

objBook = objBooks.Open(ExcelFilePathName,VOptional, _variant_t(true), VOptional, VOptional, VOptional,

VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional, VOptional);

objSheets = objBook.GetWorksheets();

//设定当前的工作表sheet是excel文件的第几个工作表sheet COleVariant((short)1)

表示第一个COleVariant((short)2)表示第二个

objSheet = objSheets.GetItem(COleVariant((short)1));

//获得已经使用的行数和列数。

usedRange.AttachDispatch(objSheet.GetUsedRange());

objRange.AttachDispatch(usedRange.GetRows());

long iRowNum=objRange.GetCount();//已经使用的行数

objRange.AttachDispatch(usedRange.GetColumns());

long iColumnNum=objRange.GetCount();//已经使用的列数

//设定读取的行列范围

//objRange = objSheet.GetRange(COleVariant("A1"), COleVariant("C1000"));

ret = objRange.GetValue(VOptional);

COleSafeArray sa(ret);

//读出内容。

long lNumRows; long lNumCols;

sa.GetUBound(1, &lNumRows); sa.GetUBound(2, &lNumCols);

long index[2];

VARIANT val;

int row, column;

for(row=1;row<=iRowNum;row++)//row表示行数

{ for(column=1;column<=iColumnNum;column++)//c表示列数

{ index[0]=row;index[1]=column;

sa.GetElement(index, &val);//val类对象中包含取的row行、column列的内容

switch(val.vt)

{ case VT_R8: //数字

{ //TRACE("\t\t%1.2f", val.dblVal);

CString cstr2=""; cstr2.Format("%1.1f",val.dblVal); cstr+=cstr2+"\n";

break;

}

case VT_BSTR: //文字

{//TRACE("\t\t%s",(CString)val.bstrVal);

cstr+=(CString)val.bstrVal+"\n";

break;

}

case VT_EMPTY://表示此row行、column列的内容为空。

break;

}

}

}

AfxMessageBox(cstr);

objBook.Close(COleVariant((short)FALSE),VOptional,VOptional);

objApp.Quit();

3.3//打开一个Excel文件,在前面的数据后面添加新的数据

//声明操作excel文件类的对象

_Application objApp; //组件服务器的各个classes //_application代表了EXCEL 服务器

Workbooks objBooks;//workbooks表示整个Excel服务器(表现为一个.xls文件)里所有的表,(可以通过"新建"得到多个表,即MDI程序里的一个视窗一样,所有的视窗就是workbooks),

_Workbook objBook; //_workbook就是一个表,相当于MDI中的一个视窗, Worksheets objSheets; // worksheets表示所有的表单,每个表都可能有很多表单(建立一个Excel文件之后,打开,可以看到有sheet1,sheet2等,所有这些sheetn就组成了worksheets)

_Worksheet objSheet; //_worksheet就表示一个表单,

Range objRange,usedRange; //Range 表示元素的集合

LPDISPATCH lpDisp; //LPDISPATCH就是一个指向excel对象的指针COleVariant VOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);

//检测电脑上是否安装了Excel程序。

if(!objApp.CreateDispatch("Excel.Application")) //启动服务器

{ AfxMessageBox("无法启动Excel服务器!");

return;

}

// objApp.m_bAutoRelease = TRUE; //??什么意思

objApp.SetUserControl(TRUE);//允许其它用户控制Excel,否则Excel将一闪即逝

//获得当前程序所在的路径,excel文件在此路径下。

char CurrentProgramPath[MAX_PATH];

GetCurrentDirectory(MAX_PATH,CurrentProgramPath);

CString ExcelFilePathName = CurrentProgramPath; //ExcelFilePathName表示excel文件的路径和文件名

ExcelFilePathName += "\\Data.xls";

objBooks.AttachDispatch(objApp.GetWorkbooks()); //此句的功能objBooks = objApp.GetWorkbooks();一样

//打开Excel文件,如果前面设置了objApp.SetVisible(TRUE),所以下句命令执行后,显示这个excel文件的数据。

//如果前面没有设置objAppApp.SetVisible(TRUE),下句命令执行后,不会显示这个Excel文件的数据。

lpDisp=objBooks.Open(ExcelFilePathName,VOptional,VOptional,VOptional,VOptional,V Optional,

VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOptional,VOp tional);

objBook.AttachDispatch(lpDisp);

//设定当前的工作表sheet

objSheets.AttachDispatch(objBook.GetWorksheets());

lpDisp=objBook.GetActiveSheet();

objSheet.AttachDispatch(lpDisp);

//获得已经使用的行数

usedRange.AttachDispatch(objSheet.GetUsedRange());

objRange.AttachDispatch(usedRange.GetRows());

long iRowNum=objRange.GetCount();//已经使用的行数

objRange.AttachDispatch(objSheet.GetCells());

//追加内容。

objRange.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(1)),COleVariant("aa "));

objRange.SetItem(COleVariant(long(iRowNum+1)),COleVariant(long(2)),COleVariant("bb "));

objBook.Save();//如果打开的这个excel文件被其它的进程已经打开了,此句代码执行后,会出现提示是否保存的对话框。

////如果打开的这个excel文件被其它的进程使用只读方式已经打开了,此句代码执行后,不会出现提示是否保存的对话框

// objApp.SetAlertBeforeOverwriting(FALSE); //取消提示是否保存的对话框

// objApp.SetDisplayAlerts(FALSE);//取消提示是否保存的对话框

// objBook.SaveAs(COleVariant(ExcelFilePathName),VOptional,VOptional, //把此文

件另存为别的文件名。

//

VOptional,VOptional,VOptional,0,VOptional,VOptional,VOptional,VOptional,VOptional);

objBook.Close(VOptional,COleVariant(ExcelFilePathName),VOptional);

objBooks.Close();

objApp.Quit();

汇编中文件的读写

汇编语言实验报告 (七) 班级:01540802班 姓名:南征 学号: 20080705 信息与电子学院

实验七文件的读写 一、实验目的 理解文件标记的概念,掌握利用文件标记读写文件的方法,学习使用文件指针读取文件。 二、实验要点 磁盘文件的读写有两种方法,一种称为文件控制块;另一种方法称为文件标记,前者在读写文件时首先要设定文件控制块,知名文件所在的当前磁盘的驱动器、文件名,同时还要制定所读写的文件所处的当前块号、当前记录号、记录长度等参量,此外还需要设置磁盘传输区。在读磁盘数据文件时,应先将磁盘上有关数据读入磁盘传输区,然后再传送至目的的内存区。在写磁盘数据文件时,要写入磁盘文件的数据也必须先送入磁盘传输区,然后再执行写操作。此种方法的缺点是不支持树形目录结构。目前常用的方法是利用文件标记读写文件,无论用什么方法读写文件,都要解决以下几个问题: A)用户程序要告诉操作系统将要存取那个文件。 B)无论是从磁盘独处的数据,还是要写入磁盘的数据都必须存放在一个制定的内 存缓冲区中,这个内存缓冲区叫数据传输区(DTA)。 C)在读一个磁盘文件之前,要先打开文件,然后才能将文件内容读入内存。而在 读写一个文件之前,要先建立一个新文件名,再将内存中的内容写入磁盘。 D)在存取文件之后,特别是在写入文件之后,务必将此文件关闭。 利用文件标记读写文件的主要特点是: 通过建立文件、打开文件,将磁盘路径名、文件名转换为文件标记或件号,在以后读写文件的操作中均要与文件标记打交道。在一个系统中,可同时打开多个文件,并配置相应的文件标记。在利用文件标记读写磁盘文件是要掌握以下几个要点: 1)使用建立文件、打开文件系统功能之前,都必须将DS:DX指向驱动器名、路径 名、文件名和以数值零为结尾的ASCIIZ字符串的首地址。 2)对于一个新文件要用3CH系统功能调用,建立文件。(如果不是新文件,此步 骤可略) 3)已存在的文件则利用3DH系统功能调用,打开此文件。 4)如果文件建立、打开成功,则CF=0,并且在AX寄存器中返回文件标记。 5)在建立、打开文件成功之后,即可对文件进行读、写操作。如果要对文件进行 读操作,则在打开文件之后,用3FH系统功能调用将文件读入数据缓冲区,调 用前的入口参数是:文件标记存入BX,读入文件的字节数放入CX,数据缓冲 区的起始地址存入DS:DX。调用完毕,AX返回实际读入的字节数。 6)读入数据缓冲区的文件,可利用40H系统功能调用将文件写入指定的磁盘。调 用入口参数是:文件标记存入BX,要写入的字节数放入CX,DS:DX指向要写入 数据缓冲区的首地址。调用结束后AX返回实际写入的字节数。如果AX

Linux下C语言的文件读写

Linux下C语言的文件(fputc,fgetc,fwrite,fread对文件读写操 作) //================================== fputc 向文件写入字符 #include #include main() { FILE *fp; char ch; if((fp=fopen("test.txt","w"))==NULL) { printf("不能打开文件\n"); exit(0); } while ((ch=getchar())!='\n') fputc( ch, fp ); fclose(fp); } ------------- 小提示: fp=fopen("test.txt","w") ,把"w"改为"a" 可以创建文件并且追加写入内容 exit(0); 需要包含stdlib.h 头文件,才能使用 //============================================================ fgetc 读取字符 #include #include main( int argc, char *argv[] ) { char ch;

FILE *fp; int i; if((fp=fopen(argv[1],"r"))==NULL) { printf("不能打开文件\n"); exit(0); } while ((ch=fgetc(fp))!=EOF) putchar(ch); fclose(fp); } 文件结尾,通过判断EOF //============================================================== fwrite 的使用 使数组或结构体等类型可以进行一次性读写 #include #include main() { FILE *fp1; int i; struct student{ char name[10]; int age; float score[2]; char addr[15]; }stu; if((fp1=fopen("test.txt","wb"))==NULL) { printf("不能打开文件"); exit(0); } printf("请输入信息,姓名年龄分数1 分数2 地址:\n"); for( i=0;i<2;i++) { scanf("%s %d %f %f %s",https://www.doczj.com/doc/6917601614.html,,&stu.age,&stu.score[0],&stu.score[1], stu.addr);

C语言读写配置文件代码

MFC读写ini配置文件 1.新建头文件如:iniFunc.h,在编辑区域粘贴以下内容: ///////////////////////////////////////////////////////////////////////// // iniFunc.h: interface for the Cini class. #if !defined(AFX_OPINI_H__CE3F8B7B_1ACA_46CC_A91C_F8E23FA9B063__INCLUDED _) #define AFX_OPINI_H__CE3F8B7B_1ACA_46CC_A91C_F8E23FA9B063__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include class Cini { public: static DWORD ReadString (char *section, char * key, char stringtoread[], char * filename); static BOOL WriteString(LPCTSTR section, LPCTSTR key,char* stringtoadd, char *filename); Cini(); virtual ~Cini(); }; #endif // !defined(AFX_OPINI_H__CE3F8B7B_1ACA_46CC_A91C_F8E23FA9B063__INCLUDED_) 2.新建资源文件如:iniFunc.cpp,在编辑区域黏贴以下内容: ///////////////////////////////////////////////////////////////////////// // ini.cpp: implementation of the Cini class. #include "stdafx.h" #include "ini.h" ///////////////////////////////////////////////////////////////////////// //Cini类的构造函数和析构函数 Cini::Cini() { } Cini::~Cini()

c语言文件的读写格式

C程序文件的读写操作 在对文件进行读、写操作之前,首先要解决的问题是如何把程序中要读、写的文件与磁盘上实际的数据文件联系起来。在c语言中,其实这并不困难,只需要用c语言提供的库函数fopen“打开”文件就可以实现这些联系。Fopen函数的一般调用形式为: Fopen(文件名,文件使用方式); 函数返回一个指向file类型的指针。例如: FILE *fp; /*****定义一个文件指针*/ fp=fopen(”file_a”,”r”); foen函数调用中用两个字符串作为参数。第一个字符串中包含了进行读、写操作的文件名,用来指定所要打开的文件。在本例中,指定的函数名:file_a。第二个字符串中指定了文件的使用方式,用户可通过这个参数来指定对文件的使用意图。 如果以上函数调用成功,函数返回一个fille类型的指针,付给指针变量fp,从而把指针fp与文件file_a联系起来,也就是说,在此调用之后,指针fp就指向了文件file_a。 C语言中,最常用的文件使用用方式及其含义如下: (1)“r”。为读而打开文本文件。当指定这种形式时,对打开的文件只能进行“读”操作。若制定的文件不存在,则会出错,若去读一个不允许读的文件时也会出错。 (2)“rb”。为读而打开一个二进制文件,其余如“r”功能。 (3)“w”。为写而打开文本文件。这是。如果指定的文件不存在,系统将在指定位置建立一个新文件;如果文件已经存在,则将从文件的起始位置开始写,文件中原有内容将全部覆盖。 (4)“WB”. 为读而打开一个二进制文件,其余如“w”功能。 (5)“a”。为在文件后面添加数据而打开文本文件。这是。如果指定的文件不存在,系统将在指定位置建立一个新文件;如果文件已经存在,则将从文件的末尾位置开始写,文件中原有内容将保留。 (6)“ab”。为读而打开一个二进制文件,其余如“a”功能。 (7)“r+”。为读和写而打开文本文件。用这种方式时,指定的文件应当已经存在,既可以对文件进行读,也可以进行写。读写都是从文件起始位置开始。 关闭文件: fclose(文件指针); 程序例子: #include #include //fputc和fgetc函数所在文件 main() { FILE *fp=NULL; //定义文件指针 char ch; //定义字符变量 fp=fopen("d:\\wenjian.txt","w"); //打开或新建打开文件,并使指针 //指向文件 if(fp==NULL)

读取配置文件和修改配置文件(ServiceIP.properties)(原创)

读取配置文件和修改配置文件(ServiceIP.properties)(原创) package espeed.util; import java.io.*; import java.util.Properties; /* * 配置短信服务器IP(配置文件建在SRC下,ServiceIP.properties) */ public class EditServiceIP { private static Properties properties=new Properties(); private static EditServiceIP esip; public EditServiceIP(){} public static EditServiceIP getInstance(){ if(esip==null) esip=new EditServiceIP(); return esip; } //取得短信服务器IP public String getSmsServiceIP(){ InputStream

is=EditServiceIP.class.getClassLoader().getResourceAsSt ream("ServiceIP.properties"); try { properties.load(is); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("------------取得短信服务器IP地址发生IO异常"); } String provalue=properties.getProperty("SMS.ServiceIP"); return provalue; } //修改短信服务器IP public String modifySmsServieIP(String smsServiceIP){ File file=new File(EditServiceIP.class.getClassLoader().getResource("S erviceIP.properties").getPath()); try{ properties.load(new FileInputStream(file));

C语言读写文件操作

C语言读写文件操作 #include #include #include FILE *stream;//, *stream2; FILE *stream2; void main( void ) { int numclosed; char *list; list="这个程序由czw编写"; //试图打开文件data.txt,如果该文件不存在,则自动创建 if( (stream= fopen( "data.txt", "r" )) == NULL ) { printf( "试图打开'data.txt'\n" ); printf( "'data.txt'不存在\n" ); printf( "'data.txt'被创建\n" ); } else printf( "'data.txt'被打开\n" ); //以写入方式打开 if( (stream2 = fopen( "data.txt", "w+" )) == NULL ) printf( "'data.txt'不存在\n" ); else { printf( "'data.txt'成功被打开\n" ); fwrite(list,strlen(list),30,stream2); printf("写入数据成功\n"); } //如果文件data.txt存在,就会打开成功,则stream!=NULL,这时就关闭stream if (stream!=NULL) if( fclose( stream) ) printf( "文件流 stream 被关闭\n" ); //关闭所有打开的文件流,返回关闭的文件流个数 numclosed = _fcloseall( );

C#读写配置文件

Windows 应用程序: ///

///发布后就可以读取了 /// private readonly string strFileName = AppDomain.CurrentDomain.BaseDirectory + "Windows_RWConfig.exe.config"; //获得配置文件的全路径 /// ///修改配置文件 /// ///key ///value private void UpdateConfig(string key, string value) { XmlDocument xDoc = new XmlDocument(); xDoc.Load(strFileName); //找出名称为“add”的所有元素 XmlNodeList nodes = xDoc.GetElementsByTagName("add"); for (int i = 0; i < nodes.Count; i++) { //获得元素的key属性 XmlAttribute att = nodes[i].Attributes["key"]; //根据元素的第一个属性来判断元素是不是目标元素 if (att.Value == key) { //对目标元素中的第二个属性赋值 att = nodes[i].Attributes["value"]; att.Value = value; break; } } //保存上面的修改 xDoc.Save(strFileName); } /// ///读取配置文件 /// ///

C语言中文件_数据的输入输出_读写

C语言中文件,数据的输入输出,读写. 文件是数据的集合体,对文件的处理过程就是对文件的读写过程,或输入输出过程。 所谓文件是指内存以外的媒体上以某种形式组织的一组相关数据的有序集合。文件分类: 顺序文件,随机文件。 文本文件和二进制文件。 文本文件也称为ASCII文件,在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。 文本文件可以在屏幕上按字符显示,源程序文件就是文本文件,由于是按字符显示,所以能读懂文件内容。 二进制文件是按二进制编码方式来存放的。这里主要讨论文件的打开,关闭,读,写,定位等操作。 文件的存取方法 C程序的输入输出(I/O)有两种方式:一种称为标准I/O或流式I/O,另一种称为低级I/O。流式I/O是依靠标准库函数中的输入输出函数实现的。低级I/O利用操作系统提供的接口函数(称为底层接口或系统调用)实现输入输出,低级I/O 主要提供系统软件使用。 在C语言中用一个FILE类型的指针变量指向一个文件,(FILE类型是系统在stdio.h中定义的描述已打开文件的一种结构类型),这个指针称为文件指针。FILE *指针变量标识符; 如 FILE *fp; 文件的打开与关闭 所谓打开文件,指的是建立文件的各种有关信息,并使文件指针指向该文件,以便对它进行操作。 关闭文件则是断开指针与文件之间的联系,也就禁止再对该文件进行操作。 1、fopen 函数原型:FILE *fopen(const char *filename,const char *mode); Fopen函数用来打开一个文件,前一部分用来说明文件路径及文件名,后一部分mode指出了打开文件的存取方式;返回值是被打开文件的FILE型指针,若打开失败,则返回NULL。打开文件的语法格式如下: 文件指针名=fopen(文件名,使用文件方式); 文件指针名必须被说明为FILE类型的指针变量。 FILE *fp; fp=fopen(“C:\\Windowss\\abc.txt”,”r”); 注意用两个反斜杠\\来表示目录间的间隔符。 存取文件的模式是一个字符串,可以由字母r,w,a,t,b及+组合而成,各字符的含

C#读写config配置文件

C#读写config配置文件 应用程序配置文件(App.config)是标准的XML 文件,XML 标记和属性是区分大小写的。它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序。 对于一个config文件: 对config配置文件的读写类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Configuration; using System.ServiceModel; using System.ServiceModel.Configuration; namespace NetUtilityLib { public static class ConfigHelper { //依据连接串名字connectionName返回数据连接字符串 public static string GetConnectionStringsConfig(string connectionName) { //指定config文件读取 string file = System.Windows.Forms.Application.ExecutablePath; System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(file); string connectionString = config.ConnectionStrings.ConnectionStrings[connectionName].ConnectionString.ToString(); return connectionString; } ///

///更新连接字符串 /// ///连接字符串名称 ///连接字符串内容 ///数据提供程序名称 public static void UpdateConnectionStringsConfig(string newName, string newConString, string newProviderName) { //指定config文件读取 string file = System.Windows.Forms.Application.ExecutablePath; Configuration config = ConfigurationManager.OpenExeConfiguration(file); bool exist = false; //记录该连接串是否已经存在 //如果要更改的连接串已经存在 if (config.ConnectionStrings.ConnectionStrings[newName] != null) { exist = true; } // 如果连接串已存在,首先删除它 if (exist) { config.ConnectionStrings.ConnectionStrings.Remove(newName); } //新建一个连接字符串实例

文件的读写与上锁

1.实验目的 通过编写文件读写及上锁的程序,进一步熟悉Linux中文件I/O相关的应用开发,并且熟练掌握open()、read()、write()、fcntl()等函数的使用。 2.实验内容 在Linux中FIFO(先进先出)是一种进程间的管道通信机制。本实验通过使用文件操作,仿真FIFO结构以及生产者-消费者运行模型。 3.实验步骤 (1)流程图 该实验流程图如图所示 (2)程序说明 本实验需要打开两个虚拟终端,分别运行生产者程序(producer)和消费者程序(customer)。此时两个进程同时对同一个文件进行读写操作。因为这个文件是临界资源,所以可以使用文件锁机制保证两个进程对文件的访问都是原子操作。 先启动生产者进程,它负责创建仿真FIFO结构文件(实际是一个普通文件)并投入生产,就是按照给定的时间间隔,向FIFO文件写入自动生成的字符(在程序中用宏定义选择使用数字还是使用英文字符),生产周期以及要生产的资源数通过参数传递给进程(默认生产周期1S,要生产的资源数为10个字符)。 后启动的消费者进程按照给定的数目进行消费,首先从文件中读取相应数目的字符并在屏幕显示,然后从文件中删除刚才消费过的数据。为了仿真FIFO结构,此时需要使用两次

复制来实现文件内容的偏移。每次消费的资源数通过参数传递给进程,默认值为10个字符。 (3)代码 /* lock_set.c */ int lock_set(int fd, int type) { struct flock old_lock, lock; lock.l_whence = SEEK_SET; lock.l_start = 0; lock.l_len = 0; lock.l_type = type; lock.l_pid = -1; /* 判断文件是否可以上锁 */ fcntl(fd, F_GETLK, &lock); if (lock.l_type != F_UNLCK) { /* 判断文件不能上锁的原因 */ if (lock.l_type == F_RDLCK) /* 该文件已有读取锁 */ { printf("Read lock already set by %d\n", lock.l_pid); } else if (lock.l_type == F_WRLCK) /* 该文件已有写入锁 */ { printf("Write lock already set by %d\n", lock.l_pid); } } /* l_type 可能已被F_GETLK修改过 */ lock.l_type = type; /* 根据不同的type值进行阻塞式上锁或解锁 */ if ((fcntl(fd, F_SETLKW, &lock)) < 0) { printf("Lock failed:type = %d\n", lock.l_type); return 1; } switch(lock.l_type) { case F_RDLCK: { printf("Read lock set by %d\n", getpid());

MFC-txt文件读写

文本文件的读写 正确的文本文件读写过程 1.定义文件变量; 2.打开指定的文件; 3.向从文本文件中写入信息; 4.从文本文件中读取信息; 5.关闭文件 1、定义文件变量 定义文件变量格式:CStdioFile 文件变量; 例如,定义一个名称为f1的文件变量,语句如下:CStdioFile f1; 2、打开指定文件 可以直接通过CStdioFile的构造函数来打开磁盘文件,同时可以用标志位指定打开方式(只读、只写、读写等): CStdioFile(LPCTSTR lpszFileName,UINT nOpenFlags); 其中,lpszFileName表示要打开的文件名,可以是相对路径或绝对路径 nOpenFlags设置文件打开方式标志位,可以指定用“|”连接多个标志位。下面是常用的打开标志: CFile::typeText:以文本文件的形式打开文件 CFile::typeBinary:以二进制文件的形式打开文件 CFile::modeCreate:如果指定文件名的文件不存在,则新建文件;如果文件存在并且没有设置CFile::modeNoTruncate标志,则清空文件。 CFile::modeNoTruncate:如果文件存在,不把它的长度删除为0(即不清空文件中的数据)。

:以只读方式打开文件 CFile::modeReadWrite:以可读可写方式打开文件 CFile::modeWrite:以只写方式打开文件 CFile::shareDenyNone:文件打开后,不禁止其他进程对文件的读写操作CFile::shareExclusive:文件打开后,禁止其他进程对文件的读写操作CFile::shareDenyRead:文件打开后,禁止其他进程对文件的读操作

配置文件(ini)的读写

用系统函数读写ini配置文件 一INI文件基础 文件扩展名为ini的文件常用于操作系统、软件等初始化或进行参数设置。ini是initial的缩写。这类文件可以用文本编辑器(如记事本)打开、编辑。 文件格式 节/段sections [section] 参数/键名parameters name=value 注解comments 注解使用分号表示(;)。在分号后面的文字,直到该行结尾都全部为注解。 ;comment text 示例 如QQ安装目录下有一个kernelInfo.ini文件,里面的内容。 [kernel] version=788 packetname=QQPetKernel.EXE ini用途 编写软件的时候需要将一些初始化的信息写入到一个配置文件中,软件启动的时候从这个配置文件中读取这些初始化的信息。软件中的一些过程数据也需要保存到ini文件中。 现在软件大都将这些配置信息写到XML中,因为XML的树形描述层次结构性清晰。这就涉及到XML 的解析,可以自己写解析方法,也可以用第三方库(如TinyXML、CMarkup等)来解析XML。 更多类容可以参考https://www.doczj.com/doc/6917601614.html,/u/5135093875 二应用程序的ini读写 系统提供给了读写ini文件的函数,都是以GetPrivateProfile开头的,常用的有下面3个。作一个简要介绍。 GetPrivateProfileString DWORD GetPrivateProfileString( LPCTSTR lpAppName,//points to section name段名 LPCTSTR lpKeyName,//points to key name键名 LPCTSTR lpDefault,//points to default string默认的键值,这个参数不能为 NULL。如果在ini文件中没有找到lpKeyName,就将赋值lpDefault,给lpReturnedString LPTSTR lpReturnedString,//points to destination buffer指向缓冲区的指针,用于保存键值 DWORD nSize,//size of destination buffer缓冲区的大小 LPCTSTR lpFileName//points to initialization filename ini文件的路径 ); 功能:读取对应段和键的值。 返回值: 返回复制到缓冲区的字符个数,并不包括字符串结尾的NULL。 如果lpAppName和lpKeyName都不为空,并且键值的长度大于了缓冲区的长度,那么就将键值切断,并在末尾添加’\0’字符,返回nSize-1。

c读写配置文件

MSXML2::IXMLDOMDocumentPtr pDoc; MSXML2::IXMLDOMElementPtr xmlRoot ; // 创建DOMDocument对象 HRESUL T hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); if ( ! SUCCEEDED(hr)) { MessageBox( " 无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库! " ); return ; } // 根节点的名称为Book // 创建元素并添加到文档中 xmlRoot = pDoc -> createElement((_bstr_t) " Book " ); // 设置属性 xmlRoot -> setA ttribute( " id " ,( const char * )m_strId); pDoc -> appendChild(xmlRoot); MSXML2::IXMLDOMElementPtr pNode; // 添加“author”元素 pNode = pDoc -> createElement((_bstr_t) " A uthor " ); pNode -> Puttext((_bstr_t)( const char * )m_strA uthor); xmlRoot -> appendChild(pNode); // 添加“Title”元素 pNode = pDoc -> createElement( " Title " ); pNode -> Puttext(( const char * )m_strTitle); xmlRoot -> appendChild(pNode); // 保存到文件 // 如果不存在就建立,存在就覆盖 pDoc -> save( " d://he.xml " ); ------------------------------------------------------------------------------------------------------------------------------------------------ MSXML2::IXMLDOMDocumentPtr pDoc; HRESUL T hr; hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); if (FA ILED(hr)) { MessageBox( " 无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库! " ); return ; } // 加载文件 pDoc -> load( " d://he.xml " ); MSXML2::IXMLDOMNodePtr pNode; // 在树中查找名为Book的节点," // "表示在任意一层查找

C语言文件操作之文件的读写[1]

C语言文件操作之----文件的读写 当文件按指定的工作方式打开以后,就可以执行对文件的读和写。下面按文件的性质分类进行操作。针对文本文件和二进制文件的不同性质,对文本文件来说,可按字符读写或按字符串读写;对二进制文件来说,可进行成块的读写或格式化的读写。 1. 读写字符 C提供fgetc和fputc函数对文本文件进行字符的读写,其函数的原型存于stdio.h头文件中,格式为: int fgetc(FILE *stream) fgetc( )函数从输入流的当前位置返回一个字符,并将文件指针指示器移到下一个字符处,如果已到文件尾,函数返回EOF,此时表示本次操作结束,若读写文件完成,则应关闭文件。 int fputc(int ch,FILE *stream) fputc()函数完成将字符c h的值写入所指定的流文件的当前位置处,并将文件指针后移一位。fputc()函数的返回值是所写入字符的值,出错时返回EOF。 [例8-2] 将存放于磁盘的指定文本文件按读写字符方式逐个地从文件读出,然后再将其显示到屏幕上。采用带参数的main( ),指定的磁盘文件名由命令行方式通过键盘给定。 #i nclude main(argc,argv)

int argc; char *argv[]; { char ch; FILE *fp; int i; if((fp=fopen(argv[1],"r"))==NULL) /* 打开一个由argv[1]所指的文件*/ { printf("not open"); exit(0); } while ((ch=fgetc(fp))!=EOF) /* 从文件读一字符,显示到屏幕*/ putchar(ch); fclose(fp); } 程序是一带参数的main( )函数,要求以命令行方式运行,其参数argc是用于记录输入参数的个数,argv是指针数组,用于存放输入参数的字符串,串的个数由argc描述。假设我们指定读取的文件名为L8-2.c,并且列表文件内容就是源程序。经过编译和连接生成可执行的文件L8-2.exe。运行程序l8-2.exe,输入的命令行方式为:c:\tc>l8-2 L8-2.c

使用ConfigurationManager类 读写配置文件

使用ConfigurationManager类读写配置文件 使用ConfigurationManager类读写配置文件app.config,以下为代码: view plaincopy to clipboard print? using System; using System.Configuration; static class Program { static void Main() { showConfig(); UpdateAppSettings(); showConfig(); Console.ReadKey(true); } private static void showConfig() { string = ConfigurationManager.AppSettings["Directory"]; Console.WriteLine("AppSetting配置节Path key的value为:" + dir + "\n"); } ///

/// UpdateAppSettings /// public static void UpdateAppSettings() { // Get the configuration file. Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); Console.WriteLine("config.FIlePath: " + config.FilePath + "\n"); config.AppSettings.Settings["Directory"].Value = "tset"; // Save the configuration file. config.AppSettings.SectionInformation.ForceSave = true; config.Save(ConfigurationSaveMode.Modified); // Force a reload of the changed section. ConfigurationManager.RefreshSection("appSettings"); } using System; using System.Configuration;

C语言文件读写

C语言文件读写(基于缓冲技术) Syd168 2011.10.1 当文件按指定的工作方式打开以后,就可以执行对文件的读和写。下面按文件的性质分类进行操作。针对文本文件和二进制文件的不同性质,对文本文件来说,可按字符读写或按字符串读写;对二进制文件来说,可进行成块的读写或格式化的读写。 0. 文件打开与关闭 1. 读写字符 C提供fgetc和fputc函数对文本文件进行字符的读写,其函数的原型存于stdio.h头文件中,格式为: ?int fgetc(FILE *stream) fgetc( )函数从输入流的当前位置返回一个字符,并将文件指针指示器移到下一个字符处,如果已到文件尾,函数返回EOF,此时表示本次操作结束,若读写文件完成,则应关闭文件。 ?int fputc(int ch,FILE *stream) fputc()函数完成将字符c h的值写入所指定的流文件的当前位置处,并将文件指针后移一位。 fputc()函数的返回值是所写入字符的值,出错时返回EOF。 [例] 将存放于磁盘的指定文本文件按读写字符方式逐个地从文件读出,然后再将其显示到屏幕上。 采用带参数的main( ),指定的磁盘文件名由命令行方式通过键盘给定。

参数argc是用于记录输入参数的个数,argv是指针数组,用于存放输入参数的字符串,串的个数由argc描述。假设我们指定读取的文件名为L8-2.c,并且列表文件内容就是源程序。经过编译和连接生成可执行的文件L8-2.exe。运行程序l8-2.exe,输入的命令行方式为: c:\tc>l8-2 L8-2.c 上述程序以命令行方式运行,其输入参数字符串有两个,即argv[0]="c:\tc>l8-2"、argv[1]=" L8-2.c ",argc = 2。故打开的文件是L8-2.c 。程序中对fgetc( )函数的返回值不断进行测试,若读到文件尾部或读文件出错,都将返回C的整型常量EOF,其值为非零有效整数。程序的运行输出为源程序本身:c:\tc>l8-2 L8-2.c

java读写Properties属性文件公用方法

java读写Properties属性文件公用方法 在Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置文件中很多变量是经常改变的,这样做也是为了方便用户,让用户能够脱离程序本身去修改相关的变量设置。在Java中,其配置文件常为.properties文件,格式为文本文件,文件的内容的格式是“键=值”的格式,文本注释信息可以用"#"来注释。 Properties提供了如下几个主要的方法: 1.getProperty ( String key),用指定的键在此属性列表中搜索属性。也就是通过参数key ,得到key 所对应的value。 2.load ( InputStream inStream),从输入流中读取属性列表(键和元素对)。通过对指定的文件(如test.properties 文件)进行装载来获取该文件中的所有键- 值对。以供getProperty ( String key) 来搜索。 3.setProperty ( String key, String value) ,调用Hashtable 的方法put 。他通过调用基类的put方法来设置键- 值对。 4.store ( OutputStream out, String comments),以适合使用load 方法加载到Properties 表中的格式,将此Properties 表中的属性列表(键和元素对)写入输出流。与load 方法相反,该方法将键- 值对写入到指定的文件中去。 5.clear (),清除所有装载的键- 值对。该方法在基类中提供。 以下提供一套读写配置文件的公用实用方法,我们以后可以在项目中进行引入。 import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.FileOutputStream;

PB读写TXT文件

PB读写TXT文件 可以用读\写ini文件一样的方式,用profilestring()和fileopen()函数来实现. PB中有这些函数 FileExists(filename)判断文件是否存在 FileRead(file#,variable)读取文件 int filemum string filedata filenum=fileopen('c:\pb.txt',linemode!,write!)//没有文件的话自动创建 fileread(filenum,filedata) .. fileclose(filenum) 对我有用[0]丢个板砖[0]引用举报管理TOP精华推荐:数据窗口有哪些常见问题?使用技巧? yangxiaowenbing (xiaobing) 等级: #4楼得分:0回复于:2004-03-3013:13:11li_num=fileopen(ls_file,linemode!,write!) for ll_row=1to ll_count filewrite(li_num,"AA") next 对我有用[0]丢个板砖[0]引用举报管理TOP精华推荐:回复:死守pb,死路一条PB将会带来新的Web开发的狂潮,4GL语言的王者风范唯有PB具备!yangxiaowenbing

(xiaobing) 等级: #5楼得分:5回复于:2004-03-3013:15:33li_num=fileopen(ls_file,linemode!,write!) for ll_row=1to ll_count ls_ss=dw_1.object.aa[ll_row] filewrite(li_num,ls_ss) next fileclose(li_num) //读取文件 integer li_FileNum string ls_Emp_Input long ll_FLength li_FileNum=FileOpen("e:\aa.txt",StreamMode!,Read!,LockWrite!, Replace!) ll_FLength=FileLength("e:\aa.txt") IF ll_FLength<32767THEN FileRead(li_FileNum,ls_Emp_Input) END IF FileClose(li_FileNum) //保存到数组 ls_Emp_Input=trim(ls_Emp_Input) ll_FLength=len(ls_Emp_Input) string aa[10] long ll_start,ll_pos,i ll_start=1 ll_pos=1 i=1 do while ll_FLength>0 ll_pos=pos(ls_Emp_Input,'',ll_start) if ll_pos>0then aa[i]=mid(ls_Emp_Input,ll_start,ll_pos-ll_start) i++ ls_Emp_Input=trim(mid(ls_Emp_Input,ll_pos+1)) ll_FLength=len(ls_Emp_Input)

相关主题
文本预览
相关文档 最新文档