文件流

发布于 2020-03-04  246 次阅读


以下代码是对文件的写入读取,图片的移动,复制

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

namespace FilesDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            //1、读取和写入D盘hello文件夹下的1.txt文件
            //写入
            // FileInfo file=new FileInfo("d:/hello/1.txt");
            //  if (file.Exists) //判断是否存在
            // {
            //假如要是把原有内容覆盖
            //  FileStream fs = new FileStream("d:/hello/1.txt", FileAccess.ReadWrite);
            // FileStream fs = file.OpenWrite();
            //string content = Console.ReadLine(); //用户输入的数据当作文本内容写入到文件
            ////把字符串转换字节数组
            byte[] buffer = Encoding.Default.GetBytes(content);
            //DriveInfo.GetDrives()获取磁盘驱动器
            //fs.Write(buffer, 0, buffer.Length);
            ////关闭文件流
            //fs.Close();

            // }
            //读取
            //FileStream fs = File.OpenRead("d:/hello/1.txt");
            //byte[] buffer = new byte[fs.Length * 2];  //乘以2是为了防止中文的字节
            //fs.Read(buffer, 0, 10);
            //fs.Close();
            //string content = Encoding.Default.GetString(buffer);
            //Console.WriteLine(content);
               //操作文本文件 建议使用StreamReader StreamWriter
            StreamReader sr = new StreamReader("d:/hello/1.txt", Encoding.UTF8); ;
            string content = sr.ReadToEnd();
            Console.WriteLine(content);

            //把d盘下的hello文件夹中的图片,读取到D盘下(可以换名称)
            FileStream fs=  File.OpenRead("d:/hello/move.jpg");
            byte[] buffer = new byte[fs.Length * 2];  //存储在buffer中
            fs.Read(buffer, 0, buffer.Length);
            fs.Close(); //关闭文件流
            //写入文件流
            FileStream fs2 = new FileStream("d:/move1.jpg", FileMode.OpenOrCreate, FileAccess.Write);
            fs2.Write(buffer, 0, buffer.Length);
            fs2.Close(); //关闭文件流

            //过滤C盘hello文件夹的所有图片,把后缀名位.jpg的图片复制到hello文件夹
            //1、要获取C hello下盘所有文件=》Directory.GetFiles .jpg .png
            //3、文件操作复制 Copy CopyTo
            //string[] files = Directory.GetFiles("c:/hello"); //获取数组中存储所有文件的名称
            // foreach (var item in files)
            // {
            //     FileInfo file = new FileInfo(item);
            // }
            DirectoryInfo dirs = new DirectoryInfo("c:hello");
            FileInfo[] files1 = dirs.GetFiles();
            foreach (var item in files1)
            {
                if (item.Extension==".jpg")
                {
                    //把文件复制到D盘中
                    item.CopyTo("d:/hello" + item.Name);
                }
            }

        }
    }
}