FileStream读写文件「建议收藏」

FileStream读写文件「建议收藏」FileStream读写文件FileStream类:操作字节的,可以操作任何的文件StreamReader类和StreamWriter类:操作字符的,只能操作文本文件。1、FileStream类FileStream类命名空间: System.IO(1)构造函数:FileStream(String, FileMode):使用指定的路径和创建模式初始

大家好,又见面了,我是你们的朋友全栈君。

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.Read,FileIOPermissionAccess.Read 权限是必需的。 如果文件访问是 FileAccess.Write,FileIOPermissionAccess.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[] buffer=new byte[1024*1024*2];    //定义一个2M的字节数组
            //返回本次实际读取到的有效字节数
            int r=fsread.Read(buffer,0,buffer.Length);    //每次读取2M放到字节数组里面
            //将字节数组中每一个元素按照指定的编码格式解码成字符串
            string s=Encoding.Default.GetString(buffer,0,r); 
            //关闭流
            fsread.Close();
            //释放流所占用的资源
            fsread.Dispose();
            Console.WriteLine(s);  //打印读取到的内容
            Console.ReadKey();
        }
    }
}

结果为:

FileStream读写文件「建议收藏」

FileStream读写文件「建议收藏」

(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[] buffer=Encoding.Default.GetBytes(str);
                fsWrite.Write(buffer, 0, buffer.Length);
            }
            Console.WriteLine("写入完成...");
            Console.ReadKey();
        }
    }
}

运行结果为:

FileStream读写文件「建议收藏」

(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.3M)
            string 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[] buffer=new byte[1024*1024*5];    //声明一个5M大小的字节数组
                    //因为文件有58.3M,要循环读取
                    while(true)
                    {
                        int r=fsread.Read(buffer, 0, buffer.Length);    //返回本次实际读取到的字节数
                        //如果返回一个0时,也就意味着什么都没有读到,读取完了
                        if(r==0)
                            break;
                        fswrite.Write(buffer,0,r);

                    }
                    
               }

            }
        }
    }
}

运行结果:

FileStream读写文件「建议收藏」

2、StreamReader类和StreamWriter类

(1)StreamReader 类

实现一个 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();
        }
    }
}

运行结果:

FileStream读写文件「建议收藏」FileStream读写文件「建议收藏」

(2)StreamWriter类

实现 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.Default
            using (StreamWriter st = new StreamWriter(@"F:\C#projects\abc.txt",true,System.Text.Encoding.Default))
            {
                
                   st.Write("非常好用的类1");
            }
            Console.WriteLine("写入完成...");
            Console.ReadKey();
        }
    }
}

结果:

FileStream读写文件「建议收藏」

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162844.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 交换机zone 的概念 和交换机指令「建议收藏」

    交换机zone 的概念 和交换机指令「建议收藏」配置Zone需要涉及到三个对象的配置Alias,Zone,Configuration。Alias可以把设备的WWN或Domain,Port声明为Alias,用于更好更直观的标示设备。使用Alias的主要目的是方便用户的使用,想象一下记住一个人的身份证号和名字的区别就可以明白其中的道理,使用Alias就想给设备启名字一样。声明Alias的另外一个益处是便于Zone中成员的更换。当Zone

    2022年5月21日
    35
  • 苹果手机软件开发教程_iOS 开发

    苹果手机软件开发教程_iOS 开发iPhone手机开发平台入门介绍和教程,网上碰到的IPhone手机开发的相关资料,收藏一下,关于在苹果的操作系统开发软件中国人了解的还非常少,中文资料也非常少,以后我就练练英语,也翻译一些吧,哈哈.1.iPhone手机介绍首先需要了解和激活成功教程iPhone手机,下面一个帖子介绍很详细:iPhone最权威[入门][激活成功教程][扫盲][资源][修砖]总汇帖http://www.weiphone.

    2022年8月12日
    3
  • golang激活码2021(JetBrains全家桶)

    (golang激活码2021)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~0UY7RF7AC5-eyJsaWNlb…

    2022年3月28日
    154
  • 突然的:图形设备驱动程序错误代码 43 -(已解决)

    突然的:图形设备驱动程序错误代码 43 -(已解决)昨天在使用Unity制作一些效果时,突然整体屏幕黑了,显示内容后,屏幕的分辨率变得很低,由原来的1920*1080,变成只有1024*768。然后我没管,继续使用Unity干活。然后发现Unity只要运行(PlayMode),CPU就占用了100%。我就知道电脑显卡之类的出问题了,我想准备要查看是什么问题的,但是刚好要搬家了。所以今天打开Unity运行后,发现CPU还是100%,然后使用:…

    2022年6月28日
    57
  • uniapp 真机调试_app调试

    uniapp 真机调试_app调试一:华为手机实时调试APP代码基座流程1.打开手机的开发者模式,允许USB调试,手机操作流程,进入设置-关于手机,长按版本号(开启开发模式),然后按图操作,下拉屏幕发行已连接USB调试,手机端就暂时不用再操作了2.电脑安装360手机助手,这个软件打开浏览器或者用360软件助手下载就好了,它是HBuildX和手机连接的桥梁3.HBuildX操作运行之后就可以在控制台查看进展,会自动在手机安装APK调试基座(用于调试的APK,APK就是安卓APP的安装包).

    2022年9月5日
    2
  • tensorflow_python中文手册

    tensorflow_python中文手册

    2021年6月20日
    99

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号