哈尔滨做网站设计,郑州网站建设技术托管,查收录网站,宁波做网站多少钱FileStream读写文件 FileStream类:操作字节的#xff0c;可以操作任何的文件
StreamReader类和StreamWriter类:操作字符的#xff0c;只能操作文本文件。
1、FileStream类
FileStream类
命名空间: System.IO
#xff08;1#xff09;构造函数#xff1a; FileStre…FileStream读写文件 FileStream类:操作字节的可以操作任何的文件
StreamReader类和StreamWriter类:操作字符的只能操作文本文件。
1、FileStream类
FileStream类
命名空间: System.IO
1构造函数 FileStream(String, FileMode)使用指定的路径和创建模式初始化FileStream 类的新实例。 FileStream(String, FileMode, FileAccess)使用指定的路径、创建模式和读/写权限初始化 FileStream 类的新实例。
FileMode 枚举 Append
如果它存在并且查找到该文件的末尾或者创建一个新文件请打开该文件。 这要求 FileIOPermissionAccess.Append 权限。 FileMode.Append 可以仅在结合使用 FileAccess.Write。 尝试查找该文件将引发结束之前将其置于 IOException 异常并且任何尝试读取失败将引发 NotSupportedException 异常。
Create
指定操作系统应创建一个新的文件。 如果该文件已存在则会覆盖它。 这要求 FileIOPermissionAccess.Write 权限。 FileMode.Create 等效于请求如果该文件不存在则使用 CreateNew; 否则为使用 Truncate。 如果该文件已存在但为隐藏的文件 UnauthorizedAccessException 则会引发异常。
CreateNew
指定操作系统应创建一个新的文件。 这要求 FileIOPermissionAccess.Write 权限。 如果该文件已存在 IOException 则会引发异常。
Open
指定操作系统应打开现有文件。 若要打开该文件的能力是依赖于指定的值 FileAccess 枚举。 一个 System.IO.FileNotFoundException 如果文件不存在将引发异常。
OpenOrCreate
指定操作系统应打开一个文件是否它存在则否则应创建一个新的文件。 如果使用打开该文件 FileAccess.ReadFileIOPermissionAccess.Read 权限是必需的。 如果文件访问是 FileAccess.WriteFileIOPermissionAccess.Write 权限是必需的。 如果使用打开该文件 FileAccess.ReadWrite这两个 FileIOPermissionAccess.Read 和 FileIOPermissionAccess.Write 权限是必需的。
Truncate
指定操作系统应打开现有文件。 当打开文件时应被截断以便其大小为零字节。 这要求 FileIOPermissionAccess.Write 权限。 尝试从文件中读取使用打开 FileMode.Truncate 导致 ArgumentException 异常。 FileAccess 枚举 Read对文件的读取访问权限。 可以从文件读取数据。 将与结合起来 Write 为读/写访问。 ReadWrite读取和写入到文件的访问。 可以写入和从文件中读取数据。 Write对文件的写入访问权限。 数据可以写入该文件。 将与结合起来 Read 为读/写访问 2方法 public override int Read(byte[] array, int offset, int count);public override void Write(byte[] array, int offset, int count); Dispose()释放由 Stream 使用的所有资源Close()关闭当前流并释放与之关联的所有资源如套接字和文件句柄。
3实例代码 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; //FileStream类的命名空间namespace Filestream读写文件
{class Program{static void Main(string[] args){//FileStream 操作字节的//1.创建FileStream类对象FileStream fsread new FileStream(F:\C#projects\abc.txt,FileMode.OpenOrCreate,FileAccess.Read);byte[] buffernew byte[1024*1024*2]; //定义一个2M的字节数组//返回本次实际读取到的有效字节数int rfsread.Read(buffer,0,buffer.Length); //每次读取2M放到字节数组里面//将字节数组中每一个元素按照指定的编码格式解码成字符串string sEncoding.Default.GetString(buffer,0,r); //关闭流fsread.Close();//释放流所占用的资源fsread.Dispose();Console.WriteLine(s); //打印读取到的内容Console.ReadKey();}}
}
结果为 4将创建文件流对象的过程写在using当中会自动的帮助我们释放流所占用的资源。
将数据写入文件代码为
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; //FileStream类的命名空间namespace Filestream读写文件
{class Program{static void Main(string[] args){//将创建文件流对象的过程写在using当中会自动的帮助我们释放流所占用的资源using (FileStream fsWrite new FileStream(F:\C#projects\abc.txt, FileMode.OpenOrCreate, FileAccess.Write)){string str看数据会不会被覆盖掉;byte[] bufferEncoding.Default.GetBytes(str);fsWrite.Write(buffer, 0, buffer.Length);}Console.WriteLine(写入完成...);Console.ReadKey();}}
}
运行结果为 5实现多媒体文件的复制
代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO; //FileStream类的命名空间namespace 多媒体文件复制
{class Program{static void Main(string[] args){//思路就是先将要复制的多媒体文件读取出来然后再写入到指定的地方string s_path C:\Users\mei\Desktop\1、复习.avi; //要读取的文件路径文件有58.3Mstring d_path C:\Users\mei\Desktop\new.avi; //存放的路径CopyFile(s_path, d_path);Console.WriteLine(复制完成...);Console.ReadKey();}public static void CopyFile(string source,string target) //自定义文件复制函数{//创建负责读取的流using (FileStream fsread new FileStream(source, FileMode.Open, FileAccess.Read)){//创建一个负责写入的流using (FileStream fswrite new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write)){byte[] buffernew byte[1024*1024*5]; //声明一个5M大小的字节数组//因为文件有58.3M,要循环读取while(true){int rfsread.Read(buffer, 0, buffer.Length); //返回本次实际读取到的字节数//如果返回一个0时也就意味着什么都没有读到读取完了if(r0)break;fswrite.Write(buffer,0,r);}}}}}
}
运行结果 2、StreamReader类和StreamWriter类
1StreamReader 类
实现一个 TextReader使其以一种特定的编码从字节流中读取字符。
构造函数 StreamReader(Stream, Encoding)用指定的字符编码为指定的流初始化 StreamReader 类的一个新实例。 属性 EndOfStream获取一个值该值指示当前的流位置是否在流结尾。 方法 ReadLine()从当前流中读取一行字符并将数据作为字符串返回。覆盖 TextReader.ReadLine()。
实例1--使用StreamReader 类读取一个文本文件 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace StreamReader类和StreamWriter类
{class Program{static void Main(string[] args){//使用StreamReader来读取一个文本文件using (StreamReader sr new StreamReader(F:\C#projects\abc.txt,Encoding.Default)){while (!sr.EndOfStream){Console.WriteLine(sr.ReadLine()); //读取一行之后在控制台打印输出}}Console.ReadKey();}}
}
运行结果 2StreamWriter类
实现 TextWriter 用于将字符写入到流中特定的编码。
构造函数 StreamWriter(Stream)新实例初始化 StreamWriter 类为使用 utf-8 编码及默认的缓冲区大小指定的流。StreamWriter(Stream, Encoding)新实例初始化 StreamWriter 为通过使用指定的编码及默认的缓冲区大小指定的流的类。StreamWriter(String, Boolean)新实例初始化 StreamWriter 类为指定的文件使用默认的编码和缓冲区大小。 如果该文件存在则可以将其覆盖或向其追加。 如果该文件不存在此构造函数将创建一个新文件。
方法 Write(String)将字符串写入流。覆盖 TextWriter.Write(String)。
实例---使用StreamWriter类向文件中写入内容 代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace StreamReader类和StreamWriter类
{class Program{static void Main(string[] args){//使用StreamWriter来写入一个文本文件,解决乱码使用System.Text.Encoding.Defaultusing (StreamWriter st new StreamWriter(F:\C#projects\abc.txt,true,System.Text.Encoding.Default)){st.Write(非常好用的类1);}Console.WriteLine(写入完成...);Console.ReadKey();}}
}
结果