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 以输入输出方式打开文件,文件可读可写
原文地址:http://blog.csdn.net/lanzhihui_10086/article/details/39780351