zoukankan      html  css  js  c++  java
  • C#的常用I/O操作

    对于常用的I/O操作有文本的读写,二进制文件读写,文件的读写。

    1.文本文件读写可以使用:SteamReader/SteamWriter

    string pathRead = @"e:File	est.txt";
    string s=null;
    if (File.Exists(pathRead))
    {
        StreamReader read = new StreamReader(pathRead, System.Text.Encoding.Default);
        Console.WriteLine(s=read.ReadToEnd());
                    
    }
    string pathWrite = @"E:File	est2.txt";
    if (!File.Exists(pathWrite))
    {   
        FileInfo file = new FileInfo(pathWrite);
        file.Delete();
        file.Create();
    }
    StreamWriter write = new StreamWriter(pathWrite);
    write.Write(s);
    write.Close();

    这是简单的使用streamreader和streamwriter,中间需要注意:

    (1).读取时需要设置编码格式,C#默认是Unicode,但是和本机的编码不同,需要统一编码。

    (2).写入流需要关闭Close,否则不能将写入的保存在文本中。

     2.对于非文本文件需要采用二进制流读写,保证完整性。

    BinaryReaderBinaryWriter 类用于二进制文件的读写。

    Stream stream=null;
    byte[] bufbyte = null;
    if (File.Exists(@"E:FileKoala.jpg"))
    {
        FileStream readStream = new FileStream(@"E:FileKoala.jpg", FileMode.Open);
        BinaryReader binaryStream = new BinaryReader(readStream);
        long size=binaryStream.BaseStream.Length;
        bufbyte = new byte[size];
        bufbyte=binaryStream.ReadBytes((int)size);
    }
    string writePath = @"E:FileKoalaCopy.jpg";
    if (!File.Exists(writePath))
    {
        FileInfo jpg = new FileInfo(writePath);
        jpg.Create();
    }
    FileStream writerStream = new FileStream(writePath,FileMode.Open,FileAccess.ReadWrite);
    BinaryWriter writer = new BinaryWriter(writerStream);
    writer.Write(bufbyte);

    这段代码是为了copy本地的一张图片,使用了binaryreader/brinarywriter,这里写法还是需要优化的使用using可以在使用完成后将流进行关闭。

    这里只是实现了copy。还有在强制转换long-->int过程中,如果文件过大可能会出现异常,就算能运行过但产生文件是残缺的。

    1.文件的读写可以使用:DirectoryoryInfo/fileinfo

    DirectoryInfo info = new DirectoryInfo(@"E:File");
    FileInfo[] ary = info.GetFiles();
    foreach (FileInfo ar in ary)
    {
        string s=ar.Name;
        Console.WriteLine("exit file:"+ s);
    }

    这里只用了从file文件夹下所有文件名字的取得。

    DirectoryoryInfo/fileinfo还能增加、删除、修改文件,的到文件的详细信息等方法。

  • 相关阅读:
    枚举进程中打开的句柄
    DuplicateHandle进程间句柄复制
    64位CreateProcess逆向:(二)0环下参数的整合即创建进程的整体流程
    通过SOCKS代理渗透整个内网
    为什么NtReadVirtualMemory 硬件断点无法下断
    在EXE和DLL中,FindResource的区别
    (转) MyBatis(1)——快速入门
    C# if为false仍然进入方法体,==和qeual结果不一致
    InstallShield卸载不彻底,残留大量dll文件
    WPF System.InvalidCastException: 无法将类型为“System.Windows.Media.Color”的对象强制转换为类型“System.Windows.Media.Brush”。
  • 原文地址:https://www.cnblogs.com/liuyang95/p/11649646.html
Copyright © 2011-2022 走看看