C#文件操作

 1. 流概述

1)流提供了一种向后备存储写入字节以及从后备存储读取字节的方式。后备存储为文件、网络和内存。对应不同后备存储有不同的流,包括文件流、内存流和网络流。 
2)Stream类为这一组的核心基类,其下派生了几个重要的数据流类BufferedStream、3)FileStream和MemoryStream,分别提供了特定字节数据输入和输出的相关操作。
3)Stream类还提供了NetworkStream及CryptoStream两个类。它们不属于IO命名空间,主要的功能分别是提供跨越网络的IO操作和数据加密。


2.FileStream类

1)文件数据流(FileStream类)用于读写文件。其也支持异步文件读写操作,允许对文件进行随机访问等。

2)FileStream类的构造方法有多个重载方法,最常用的构造方法形式为:

public FileStream(
           string path,  //指定要访问的文件路径
           FileMode mode, //设定文件打开的方式
           FlieAccess access, //设定访问的方式
           FileShare share); //设定文件的共享方式

3.StreamReader类

程序代码:
        static void Main(string[] args)
        {
            //定义一个StreamReader对象
            StreamReader mySteamReader;
            try
            {
                //打开指定路径下的文本文件
                mySteamReader = File.OpenText("C:\\temp\\MyFile.txt");
            }
            catch
            {
                Console.WriteLine("文件打开失败!");
                return;
            }
            //用Peek()方法读取文本文件,并输出到屏幕
            while(mySteamReader.Peek()!= -1)
            {
                String myString = mySteamReader.ReadLine();
                Console.WriteLine(myString);
            }
            Console.WriteLine("文件读取结束!");
            //关闭文本文件
            mySteamReader.Close();
        }

4.StreamWriter类

程序代码:
           //定义StreamWriter对象
            StreamWriter myStreamWriter;
            try
            {
                //在指定路径下创建file.txt文本文件
                myStreamWriter = File.CreateText("C:\\temp\\file.txt");
            }
            catch
            {
                Console.WriteLine("文件创建失败!");
                return;
            }
            //写入重载参数指定的某些数据,后跟行结束符
            myStreamWriter.WriteLine("China");
            myStreamWriter.WriteLine("USA");
            myStreamWriter.WriteLine("Japan");
            //关闭当前的 StreamWriter 对象和基础流。
            myStreamWriter.Close();
        }

5.文件、目录操作概述

1)在编写应用程序时,常常需要以文件的形式来保存和读取一些信息,这时就不可避免地要进行各种文件操作,还可能会需要设计自己的文件格式。
2)文件是计算机管理数据的基本单位,同时也是应用程序保存和读取数据的一个重要场所。
3)目录是一个容器,可以存放多个文件和子目录
4).NET框架在命名空间System.IO中为我们提供了Directory类来进行目录管理。利用它,我们可以完成对目录进行创建、移动、浏览、删除等操作。命名空间System.IO还为我们提供了File类,File类通常和FileStream类一起协作来完成对文件的创建、删除、复制、移动、打开等操作。


6.文件目录的创建,删除,求文件大小,复制

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace ConsoleApplication1
{
    /// <summary>
    /// 计算目录大小
    /// </summary>
    class Program
    {
    }
    class ShowDirSize
    {
        public static long DirSize(DirectoryInfo d)
        {
            long Size = 0;
            // 返回当前目录的文件列表,累加字节数
            FileInfo[] fis = d.GetFiles();
            foreach (FileInfo fi in fis)
            {
                Size += fi.Length;
            }
            // 返回当前目录的子目录,累加子目录的字节数
            DirectoryInfo[] dis = d.GetDirectories();
            foreach (DirectoryInfo di in dis)
            {
                //递归调用DirSize函数,提取子目录并递归地查看它们,并累加字节数
                Size += DirSize(di);
            }
            //以字节数返回目录与其子目录的大小
            return (Size);
        }
    

        static void Main(string[] args)
        {
            #region 创建目录
            string path = @"d:\MyDire";
            if (Directory.Exists(path))
            {
                Console.WriteLine("目录已存在");
                return;
            }
            Directory.CreateDirectory(path);
            Console.WriteLine("创建目录成功:{0}", Directory.GetCreationTime(path));
            #endregion
            #region 求文件大小
            string FilePath = @"C:\WEXAM\00000000答案";
            if (FilePath.Length < 0)
            {
                Console.WriteLine("目录路径错误,请设定正确的目录路径!");
            }
            else
            {
                //参数是一个字符串,它指定要在其中创建 DirectoryInfo 的路径。
                DirectoryInfo d = new DirectoryInfo(FilePath);
                //调用DirSize函数
                Console.WriteLine("{0} 目录和它的子目录总大小为: {1} bytes.", d, DirSize(d));
            }
            
            #endregion
            #region 复制文件
            string path1 = @"d:\temp\text.txt";
            string path2 = @"d:\temp\text1.txt";
            try
            {
                File.Delete(path2); //文件删除
                File.Copy(path1, path2);
                Console.WriteLine("{0}复制到{1}", path1, path2);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
            }
            Console.Read(); 
            #endregion

        }
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值