C#百识百例之十五-读写文件

目录

1.实例目标

2.编程思路

3.编程步骤


1.实例目标

    了解如何创建/读/写文件,如何获取文件的属性,以及重定向文件指针等

2.编程思路

  2.1 C#提供了一个抽象类Stream来读写存储媒介,FileStream类和读写器来创建/读/写一个文件,并且能获取关于文件的一些属性;

  2.2 首先使用FileStream类来创建一个文件,并且以可读写方式打开一个文件。接着使用StreamWriter类来写这个文件,其中用到writeLine方法,然后创建一个1streamreader对象来读这个文件;

 2.3 类streamreader中的basestream有seek()方法,使用该方法把流指针指向文件的开始,这样就可以使用readline方法读文件;

  2.4 BinaryReader类可以以二进制方式读取数据流,它提供readByte()方法,也可以用Binarywriter类以二进制方式写数据流;

  2.5 C#还提供了FileInfo类,该类提供了丰富的属性和方法获取一个文件的属性.

3.编程步骤

using System;
using System.IO;

namespace PRO16
{
    //读写文件
    public class FileAPP
    {
        public static void Main()
        {
            //在当前目录创建一个文件myfile.txt,对该文件具有读写权限
            FileStream fsMyfile = new FileStream("myfile.txt", FileMode.Create, FileAccess.ReadWrite);


            //创建一个数据流写入器,和打开的文件关联
            StreamWriter swMyfile = new StreamWriter(fsMyfile);

            //以文本方式写一个文件
            swMyfile.WriteLine("Hello,World");
            swMyfile.WriteLine("abcdefghijk");
            swMyfile.WriteLine("ABCDEFGHIJK");
            swMyfile.WriteLine("0123456789");


            //冲刷数据(把数据真正写入到文件中去)
            swMyfile.Flush();

            //以文本方式读文件
            StreamReader srMyfile = new StreamReader(fsMyfile);

            //把文件指针重新定位到文件的开始
            srMyfile.BaseStream.Seek(0, SeekOrigin.Begin);

            //打印提示消息
            Console.WriteLine("*********以文本方式读文件***********");

            //打印文件文本内容
            string sl;
            while((sl = srMyfile.ReadLine())!= null)
            {
                Console.WriteLine(sl);
            }
            Console.WriteLine();
            //以文本方式读文件结束

            //以二进制方式读文件

            //创建一个二进制数据流读入器,和打开的文件关联
            BinaryReader brMyfile = new BinaryReader(fsMyfile);

            //把文件指针重新定位到文件的开始
            brMyfile.BaseStream.Seek(0, SeekOrigin.Begin);

            //打印提示消息
            Console.WriteLine("*********以二进制方式读文件*********");

            //打印文件文本内容
            Byte bl;
            while(brMyfile.PeekChar() > -1)
            {
                bl = brMyfile.ReadByte();
                //13为\n,表示回车;10为\r,表示换行
                if(bl != 13 && bl != 10)
                {
                    Console.Write("{0}", bl.ToString());
                    Console.Write(".");
                }
                else
                {
                    Console.WriteLine();
                }
            }
            Console.WriteLine("\n");

            //以二进制方式读文件结束

            //关闭以上new的各个对象
            //  //关闭写入器和文件流 
            //C#使用在操作文件时,先关闭读写器,再关闭文件
            swMyfile.Close();
            brMyfile.Close();
           
            srMyfile.Close();
            fsMyfile.Close();

            //读取文件属性
            //打印提示信息
            Console.WriteLine("**********读取文件属性**********");
            FileInfo fiMyfile = new FileInfo("myfile.txt");
            Console.WriteLine("文件名   :{0}", fiMyfile.Name);
            Console.WriteLine("文件名(含路径):{0}", fiMyfile.FullName);
            Console.WriteLine("文件大小(bytes):{0}", fiMyfile.Length);
            Console.WriteLine("文件创建时间 :{0}", fiMyfile.CreationTime);
            Console.ReadKey();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值