-
2018-07-11 18:37:03
在日常的操作中,为了快速读取、写入较大的文件,采用FileStream方式会快很多。
这种用法是需要手动调用方法来释放资源的。使用using() { FileStream }这样来操作就不需要再手动调用了。using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { FileStream fs = new FileStream(@"E:\迅雷下载\冰雪奇缘BD双语双字.mkv", FileMode.OpenOrCreate); byte[] x = new byte[1024 * 1024 * 2]; //建立了一个2MB的字节数组 fs.Read(x, 0, x.Length); fs.Close(); fs.Dispose(); FileStream fsw = new FileStream(@"E:\1.mkv", FileMode.OpenOrCreate, FileAccess.Write); //重点是FileAccess为写入模式。 fsw.Write(x, 0, x.Length); fsw.Close(); fsw.Dispose(); Console.WriteLine("is ok"); Console.ReadKey(); } } }
更多相关内容 -
使用文件流操作文本文件(文件实训)
2020-04-30 07:34:52文件流操作文件 C 还可以使用文件流的方式操作文件,使用文件流的方式操作文件需要包含头文件,代码如下: #include <fstream> 头文件中定义了三个类:类 fstream、类 ifstream 和类 ofstream。 类 ifstream ...编写一个统计本月服装的销售情况的函数。
相关知识
文件流操作文件
C 还可以使用文件流的方式操作文件,使用文件流的方式操作文件需要包含头文件,代码如下:
#include <fstream>
头文件中定义了三个类:类 fstream、类 ifstream 和类 ofstream。
- 类 ifstream 实现文件的输入
- 类 ofstream 实现文件的输出
- 类 fstream 实现文件的输入输出
使用文件流操作文件依然可以分为三个步骤:打开文件、读写文件、关闭文件。
打开文件
打开文件用于读时可以使用类 fstream 或者 ifstream 函数。ifstream 函数
ifstream inFile("test.txt", ios::in);
- inFile 是声明的 ifstream 的一个对象(也可以叫变量,只是这个变量里面包含的东西较多,类似于结构变量),声明该对象时会自动执行一个特殊的函数(构造函数,学习面向对象部分的时候会了解)。
- test.txt和 ios::in 是传递给该函数的参数。test.txt是要打开的路径和文件名,ios::in 是文件打开的方式,表示打开文件用于输入。
- 执行该函数将会以读的方式打开当前目录下的文件test.txt。之后通过 inFile 调用一些函数就可以操作文件test.txt了。
fstream 函数
由于类 fstream 也可以打开文件用于输入,上面的语句也可以这样写:
fstream inFile("test.txt", ios::in);
类 fstream 的文件打开方式有:
打开方式 描述 ios::in 打开一个供读取的文件 ios::out 打开一个供写入的文件 ios::app 写入的所有数据将被追加到文件的末尾,此方式需要使用 ios::out ios::ate 写入的数据将追加到文件的末尾,但也可写到其他地方,此方式不需要用 ios::out ios::trunc 废弃当前文件内容 ios::nocreate 如果要打开的文件并不存在,那么以此参数调用 open 函数将无法进行 ios::noreplace 如果要打开的文件已存在,试图用 open 函数打开时将返回一个错误 ios::binary 以二进制的形式打开一个文件 其中适合于文件读的打开方式也可以用于类 ifstream ,适合于文件写的打开方式也可以用于 ofstream,ios::binary 两者都可以用。
读写文件
文件的读取
如果以文本的方式操作文件(没有属性 ios::binary ),则读文件的语法和用 cin 从键盘输入的语法很像。例如下面的语句可以从文件test.txt中读取一个整数和一个浮点数。int n; float f; inFile >> n >> f;
文件的写入
文件的写入也和输出到屏幕的语法很像。
例如下面的程序将整数100浮点数3.14入文件a.txt。// 声明对象ofile,以读的方式打开文件a.txt ofstream ofile("a.txt", ios::out); // 将100、空格、3.14、换行符写入文件a.txt ofile << 100 << " " << 3.14 << endl; // 关闭文件 ofile.close();
文件关闭
文件的关闭不管是 ifstream、ofstream 还是 fstream 的对象,都可以使用相同的语法关闭文件,即xx.close();。//test.cpp #include <iostream> #include <fstream> using namespace std; //声明外部函数,函数count在其它源文件中实现 extern void count(ifstream & fin, ofstream & fout); int main() { char s[100]; int n, i, num, p[100],k; //准备文件 ofstream cloth("cloth.txt"); cin>>n; //输入服装种类数量 for(i=0;i<n;i++) { cin>>s; //输入服装编号 cin>>num; //输入该服装销售数量 for(k=0;k<num;k++) { cin>>p[k]; //输入每件服装的销售价格 } //写入文件 cloth<<s<<" "<<num; for(k=0;k<num;k++) { cloth<<" "<<p[k]; } } //关闭文件 cloth.close(); //打开销售文件 ifstream fin("cloth.txt"); //打开统计文件 ofstream fout("count.txt"); //调用函数count count(fin,fout); //关闭文件 fin.close(); fout.close(); //读出统计信息并输出 ifstream f("count.txt"); f>>s; while(!f.eof()) { f>>n; cout<<s<<" "<<n<<endl; f>>s; } f.close(); return 0; }
#include <iostream> #include <fstream> using namespace std; /* 函数count:统计文件fin中每种服装的销售总额,并写入文件fout中 参数fin:文件每种服装的销售情况,fout:每种服装销售总额的写入文件 返回值:无 说明:文件fin中,每种服装信息占一行,分别为服装编号,销售件数,每件的销售价格(整型)。 文件fout:每种服装统计信息占一行,分别为服装编号,销售总额(整型),中间用一个空格隔开。 */ void count(ifstream & fin, ofstream & fout) { char s[100]; fin>>s; while(!fin.eof()) { int i,n,c=0,t; fin>>n; for(i=0;i<n;i++) { fin>>t; c+=t; } fout<<s<<" "<<c<<endl; fin>>s; } }
-
使用文件流操作二进制文件(文件实训)
2020-04-30 07:42:52文件流操作二进制文件的读写 写二进制文件 以文件流的方式操作文件一样可以支持二进制方式的块读写。 例如: ofstream cl("c.dat", ios::binary); int n = 10; cl.write((char*)&t,sizeof(t)); 第一行程序申明了...编写一个在文件中查找某种服装的数量并返回的函数。
相关知识
文件流操作二进制文件的读写
写二进制文件
以文件流的方式操作文件一样可以支持二进制方式的块读写。
例如:ofstream cl("c.dat", ios::binary); int n = 10; cl.write((char*)&t,sizeof(t));
第一行程序申明了 ofstream 的对象 cl,并以二进制方式( ios::binary )打开文件c.dat(如果文件c.dat不存在,会先创建)用于输出( fstream 的对象的对象都是用于文件输出)。
第三行则将整数 t 以块写入的方式写入文件c.dat。函数 write 的第一个参数是要写入文件的数据首地址,必须是char*类型,要写入的数据是 t,所以该实参为&t,并进行了类型转换。第二个参数是要写入文件的字节数,t 整型变量,所占字节数可以用sizeof(t)求得。读二进制文件
二进制的块读出方式和块写入方式类似。
例如下面的程序可以将写到文件c.dat中的整数读出:ifstream fl("c.dat", ios::binary); int n; fl.read((char*)&n,sizeof(n));
第一行程序申明 ifstream 的对象 fl ,并以二进制方式打开文件c.dat用于读。
第三行从文件中读出一个整数。read 函数的第一个参数是读出的数据要放到内存中的位置,类型为char*。读出的整数要赋值给 n,所以该实参为&n,并进行了类型转换。第二个参数是读出的字节数,一个整数的字节数可以用sizeof(n)求得。//test.cpp #include <iostream> #include <fstream> using namespace std; //结构clothing struct clothing { char label[12]; //编号 int numberRemaining; //剩余件数 }; //声明外部函数,函数getNumber在其它源文件中实现 extern int getNumber(ifstream &ifile, char *label); int main() { int n,i; char le[100]; clothing t; //准备文件 //打开文件,二进制方式 ofstream cloth("cloth.dat", ios::binary); cin>>n; //输入服装种类数量 for(i=0;i<n;i++) { cin>>t.label; //输入服装编号 cin>>t.numberRemaining; //输入服装剩余数量 //写入文件 cloth.write((char*)&t,sizeof(t)); } //关闭文件 cloth.close(); //打开文件用于读,二进制方式 ifstream fin("cloth.dat",ios::binary); //输入要查找的服装标签 cin>>le; //调用函数getNumber n = getNumber(fin,le); //输出服装件数 cout<<n<<endl; //关闭文件 fin.close(); return 0; }
//streambin.cpp #include <fstream> #include <string.h> #include <iostream> using namespace std; // 结构clothing struct clothing { char label[12]; // 编号 int numberRemaining; // 剩余件数 }; /* 函数getNumber:在文件ifile中查找标签为lable的服装数量 参数ifile:存放服装信息的文件,label:要查找的服装标签 返回值:标签为label的服装数量 说明:文件中ifile中存放着服装信息,服装信息为以二进制写入的一个个clothing结构变量 */ int getNumber(ifstream &ifile, char *label) { clothing t; // 读出种服装信息到t中 ifile.read((char*)&t,sizeof(clothing)); while(!ifile.eof()) { if(strcmp(label, t.label)==0) { return t.numberRemaining; } ifile.read((char*)&t,sizeof(clothing)); } return 0; }
-
C++之文件流操作(File Stream)
2019-02-15 10:13:58文件流对象(fstream) 2.1 流对象的定义 2.2 流对象关联文件 2.2.1 .open 函数 2.2.2 关闭流对象(close 函数) 三. 文件读写 3.1 读写文件本文件 3.2 读写二进制文件 3.3 随机文件读写 一.引言 ...目录
一.引言
首先我们自实现对 FILE*fp 的包装,实现对象对文件的访问。实现成员函数 put/get 函数。例子代码如下:
#include <iostream> #include <fstream> using namespace std; int main() { fstream fs("abc",ios::in|ios::out|ios::trunc); if(!fs) cout<<"open error"<<endl; fs.put('a'); fs.put('b'); fs.put('c'); fs.put('d'); fs.seekp(0,ios::beg); char ch; while(fs.get(ch),!fs.eof()) { cout<<ch; } fs.close(); return 0; }
二.文件流对象(fstream)
对文件的操作是由文件流类完成的。文件流类在流与文件间建立连接。由于文件流分为三种:文件输入流、文件输出流、文件输入/输出流,所以相应的必须将文件流说明为 ifstream、ofstream 和 fstream 类的对象,然后利用文件流的对象对文件进行操作。
对文件的操作过程可按照以下四步进行:即定义文件流类的对象、打开文件、对文件进行读写操作、关闭文件,下面分别进行介绍。
2.1 流对象的定义
ifstream ifile; //定义一个文件输入流对象
ofstream ofile; //定义一个文件输出流对象
fstream iofile; //定义一个文件输出/输入流对象2.2 流对象关联文件
2.2.1 .open 函数
定义了文件流对象后,就可以利用其成员函数 open()打开需要操作的文件,该成员函数的函数原型为:
void open(const unsigned char *filename,int mode,int access=filebuf:openprot);其中:filename 是一个字符型指针,指定了要打开的文件名;mode 指定了文件的打开方式,其值如下所示;access 指定了文件的系统属性,取默认即可。
- ios::in :以输入(读)方式打开文件,若文件不存在则报错。 0x01
- ios::out :以输出(写)方式打开文件, 若文件不存则创建。 0x02
- ios::app :打开一个文件使新的内容始终添加在文件的末尾,若文件不存在,则创建。0x08
- ios::trunc:若文件存在,则清除文件所有内容;若文件不存在,则创建新文件。 0x10
- ios::binary:以二进制方式打开文件,缺省时以文本方式打开文件。 0x80
- ios::nocreate:打开一个已有文件,若该文件不存在,则打开失败。 0x20
- ios::noreplace:若打开的文件已经存在,则打开失败。 0x40
几点说明:
a. 在实际使用过程中,可以根据需要将以上打开文件的方式用"|" 组合起来。如:
ios::in|ios::out 表示以读/写方式打开文件
ios::in|ios:: binary 表示以二进制读方式打开文件
ios::out|ios:: binary 表示以二进制写方式打开文件
ios::in|ios::out|ios::binary 表示以二进制读/写方式打开文件
b. 如果未指明以二进制方式打开文件,则默认是以文本方式打开文件。
c. 构造函数打开文件
对于 ifstream 流, mode 参数的默认值为 ios::in,
对于 ofstream 流,mode 的默 认值为 ios::out|ios::trunc,
对于 fstream 流, mode 的默认值为 ios::int|ios::out|ios::app按位或(运算或)(“|”)和逻辑或(“||”)的区别
- 按位或 | 输出运算结果,逻辑或 || 输出true 或者 false 例如: 1|2 = 3 1||2 = 1
- 按位或 | 对所有的表达式都要判断,逻辑或 ||运算符第一个表达式不成立的话,后面的表达式不运算,直接返回
除此之外还有 桉位与& 与逻辑与 &&
2.2.2 关闭流对象(close 函数)
在文件操作结束(即读、写完毕)时应及时调用成员函数 close()来关闭文件。该函数比较简单,没有参数和返回值。
三. 文件读写
3.1 读写文件本文件
3.2 读写二进制文件
3.3 随机文件读写
与文件指针相关的函数如下:
参照位置:
示例代码:
infile.seekg(100); //输入文件中的指针向前移到 100 个字节的位置
infile.seekg(-50,ios::cur); //输入文件中的指针从当前位置后移 50 个字节
outfile.seekp(-75,iso::end); //输出文件中指针从文件尾后移 75 个字节 -
基本文件流操作(C语言)
2017-12-20 12:58:17void main()//基本文件流操作 { file *input,*output; int i; int a[10]; output=fopen("d://python.txt","r");/*d://python.txt为文件地址和名字*/ input=fopen(&... -
C++流和文件流操作
2012-10-22 16:40:01在程序设计中,数据输入/输出(I/O)操作是必不可少的,C++语言的数据输入/...在进行I/O操作时,首先是打开操作,使流和文件发生联系,建立联系后的文件才允许数据流入和流出,输入或输出结束后,使用关闭操作使文件与 -
iOS文件流操作类-NSFileHandle
2016-07-05 16:16:43Objective-C使用NSFileHandle类对文件进行流操作。 -
C++:文件流读写操作
2018-06-11 14:09:00ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间 在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O. stream这个类有两个重要的运算符:... -
Java操作pdf文件与Base64编码相互转换与文件流操作
2018-07-25 13:00:41总的思路就是,先弄几个文件流的引用,将文件转换成二进制流读取存到数组中,然后利用bc包中的Base64的函数toBase64String将二进制数组转换成Base64的操作。 3.Base64转换成pdf文件。 Base64一般比pdf文件要大... -
C++ 文件流详解
2020-02-05 14:20:31C++使用流进行操作文件 -
[工作笔记]PostMan处理文件流,上传和下载文件流
2020-12-08 16:08:22PostMan处理文件流,上传和下载文件流 一.遇到的问题 postman 进行call api的时候,如果得到的是文件,将会出现一堆乱码 二.解决方案 这时候可以直接下载 在返回body的右上角下载保存就行 也可以在call api的时候就... -
unity使用文件流操作streamingassets下的文件
2018-10-29 14:42:142、Unity-android平台上的的这种操作只能使用www去加载streamingassets下的文件,导致速度问题。 备注: 1、此方案需要您对安卓有一点点的了解。 解决方案: 1、在打包的时候,将streamingassets下的文件目录做... -
java中有关文件流的操作
2018-03-25 22:10:32文件流: 顾名思义,程序和文件打交道. 此时我们谈及的文件,值得是纯文本文件(txt的,不要使用Word,Excel), 在字节流中,暂时不要使用中文. FileInputStream: 文件的字节输入流 FileOutputStream: 文件的字节输出... -
C# 文件流的操作
2016-11-30 17:52:01在我们编写程序的时候经常会用到文件流的操作,这里作为一种便签的方式记录下,方便日后查找。 一.文件流 /* 写文件流,方式1 FileStream fst = new FileStream("test2.txt", FileMode.Append, System.IO.File... -
文件和文件流
2019-08-08 20:16:26文件和文件流 1. File类 Java.io.File类可以获取文件以及文件夹的一些基本的属性 常用的方法 文件名称,路径,大小,判断是否存在,删除,创建 // 创建一个文件对象(可以是文件,可以是文件夹) File file = new ... -
C++ fstream文件流读写文件操作详解
2014-10-11 21:13:24在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般... -
C++利用一个fstream流读写文件
2018-05-09 22:06:47fstream对象可以同时具有ifstream和ofstream的功能,尝试使用一个流对文件进行读写的代码如下:#include <iostream> #include <fstream> using namespace std; int main() { char ... -
C# 文件流操作 之 删除、复制、转移多个文件
2012-07-11 11:15:18string[] format = { "*.jpg", "*.doc", "*.exe", "*.pdf", "*....C# 文件流操作 之 删除、复制、转移多个文件 /// /// 删除文件夹下面所有图片 /// /// 待删除文件路径 /// 删除到的新目录 /// 操作文件的格 -
C++文件操作与文件流
2016-02-17 16:55:111.3对用户来说常用的文件类型有两大类,一类是程序文件,如C++的源程序文件(.cpp),目标文件(.obj),可执行文件(.exe)。一类是数据文件,程序里面常常需要把一些数据存放起来,这种磁盘文件就是数据文件。程序中的... -
前端接收后端传回来的文件流相关操作
2022-01-31 11:11:07前端接受后端返回的文件流并下载到本地相关操作以及避坑 -
Node之文件流与文件路径操作
2019-12-29 20:28:22流的基本概念 用途 使用异步方式 使用同步方式1 将文件完整写入缓存区 readFile readFileSync 将文件部分读入缓存区 read readSync 将数据完整写入文件 writeFile writeFileSync 将缓存区中的部分内容... -
Dart 语言标准流与文件操作
2019-09-15 22:33:13文章目录标准输入输出流文件操作写文件读文件文件的其他操作关注我的公众号:编程之路从0到1 标准输入输出流 stdin stdout stderr // 导入io包 import 'dart:io'; void main() { // 向标准输出流写字符串 ... -
安卓中文件读写-流操作
2019-06-27 16:12:35字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,所以InputStream需要提前设置缓存区大小,而字符流在操作的时候是使用到缓冲区的。 字节流在操作文件时,即使不关闭资源(close方法)... -
C++文件流读写详解(ofstream,ifstream,fstream)
2016-04-01 17:28:36在看C++编程思想中,每个练习基本都是使用ofstream,ifstream,fstream,以前粗略知道其用法和含义,在看了几位大牛的博文后,进行整理和总结: ...#include ofstream //文件写操作 内存写入存储设备 -
C++ 流 文件操作(输入输出流)
2018-09-26 20:37:15到目前为止,我们已经使用了 iostream 标准库,它提供了 cin 和 cout 方法分别用于从标准输入读取流和向标准输出写入流。...该数据类型表示输出文件流,用于创建文件并向文件写入信息。 ifstream 该数据类型... -
Java实现文件写入——IO流
2021-02-12 14:52:34流是一组有序的数据序列,根据操作的类型,分为输入流和输出流。程序从输入流读取数据,向输出流写入数据。Java是面向对象的程序语言,每一个数据流都是一个对象,它们提供了各种支持“读入”与“写入”操作的流类。... -
文件输入(FileInputStream)、输出(OutputStream)流操作
2022-02-12 15:58:05文件输入(FileInputStream)、输出(OutputStream)流操作 -
Java输入输出流和文件操作
2015-06-23 14:46:45文件和流操作系统中的文件和目录概念文件与文件系统文件是信息的一种组织形式,是存储在外部存储介质上的具有标志名的一组相关信息集合。 文件系统用文件概念来组织和管理存放在各种介质上的信息。文件系统提供目录... -
C++ fstream 对文件输入输出流的操作
2018-09-12 23:17:40ofstream //文件写操作,内存写入存储设备(文件) 输出流 通常我们所说的对一个文件进行写操作,就是把内存里的内容,也就是缓冲区的内容写到硬盘,可以将标准输出设备理解为显示器 ifstream //文件读操作,存储设备到...