首页 > 代码库 > C++对文件的操作

C++对文件的操作

1.打开磁盘文件

打开文件是指在文件读写之前做必要的准备工作,包括:

(1)为文件流对象和指定的磁盘文件简历联系,以便使文件流流向指定的磁盘文件。

(2)指定文件的打开方式,如,该文件是作为输入文件还是输出文件,是二进制文件还是ASCII文件等。

2.关闭磁盘文件

在对已打开的磁盘文件的读写操作完成后,应关闭该文件,即解除该磁盘文件与文件流的关联。

此时可以将文件流与其他磁盘文件建立关联,通过文件流对新的文件进行输入输出。

3.什么是文件流

文件流是以外存文件为输入输出对象的数据流。输出文件流是从内存流向外存文件的数据,输入文件流是从外存流向内存的数据,每一个文件流都有一个内存缓冲区与之对应。


下面举例子来实现对文件的操作:

#include<iostream>
#include<fstream>
#include<ctime>

using namespace std;

//选择排序
void ran_sort(int a[],int n)
{
	int t;
	for(int i=0;i<n-1;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			if(a[i]>a[j])
			{
				t=a[i];
				a[i]=a[j];
				a[j]=t;
			}
		}
	}
}

int main()
{
	int i,a[100];

	//以下向磁盘文件写入数据
	ofstream out_ran;
	out_ran.open("F:\\new\\random.txt",ios::out);//以输出方式打开文件,如果文件不存在,则新建文件
	                                             //如果已有此名字的文件,则将其原有内容全部清除

	if(out_ran.fail())
	{
		cout<<"打开文件失败!"<<endl;
		exit(1);
	}

	srand((unsigned)time(NULL));

	for(int j=0;j<100;j++)
	{
		i=rand()%100;
		out_ran<<i<<" ";//向磁盘文件写入100个[0,100)的随机数
	}
	out_ran.close();//关闭磁盘文件

	//以下读取磁盘文件中的数据
	ifstream in_ran;
	in_ran.open("F:\\new\\random.txt",ios::in|ios::_Nocreate);

	if(in_ran.fail())
	{
		cout<<"打开文件失败!"<<endl;
		exit(1);
	}

	for(int i=0;i<100;i++)
	{
		in_ran>>a[i];//从磁盘文件读取100个整数,顺序存放在a数组中
	}
	in_ran.close();


	//对数组a中的数据排序
	ran_sort(a,100);


	//以下向磁盘文件写入数据--排序后的数据
	ofstream out_sort;
	out_sort.open("F:\\new\\random_sort.txt",ios::out);

	if(out_sort.fail())
	{
		cout<<"打开文件失败!"<<endl;
		exit(1);
	}

	for(int i=0;i<100;i++)
	{
		out_sort<<a[i]<<" ";
	}
	out_sort.close();

	system("pause");
	return 0;
}

请注意:在向磁盘文件输出一个数据后,要输出一个(或几个)空格或换行符,以作为数据间的分隔,否则以后从磁盘文件读数据时,很多整数的数字连成一片无法区分。





文件输入输出方式设置值:

ios::in     以输入方式打开文件

ios::out   以输出方式打开文件(默认打开方式),如果已有此名字文件,则将其原有内容全部清除

ios::app  以输出方式打开文件,写入的数据添加到文件末尾

ios::nocreate  打开一个已有的的文件,如文件不存在,则打开失败。nocreate的意思是不建立新的文件

ios::in|ios::out  以输入输出方式打开文件,文件可读可写

C++对文件的操作