C# 流与文件(Stream & File & byte[])

原文:https://www.cnblogs.com/long-gengyun/archive/2010/03/28/1698681.html

  • 文件概述 
文件在操作时表现为流,即流是从一些输入中读取到的一系列字节。

文件按信息在外部存储器上按编码方式可以分为文本文件二进制文件

Stream类是System.IO命名空间中的一个类,在System.IO命名空间中,包含所有允许在数据流和文件上进行同步和异步读取和写入的类,下面简单介绍一下常用的类。

1. Directory类:包含了所有操作目录的静态方法,如目录的创建,移动,复制,删除等

2. DirectoryInfo类:包含了所有操作目录的实例方法,如目录的各种属性(名字,创建时间),目录的各种操作(目录的创建,是否存在,移动,删除等)

3. File类:是对文件的典型操作,提供文本的创建,打开,复制,删除,移动等静态方法。也可以用于获取文件和设置文件的基本信息。

4. FileInfo类:对文件典型操作, 提供文本的创建,打开,复制,删除,移动等实例方法。当文件需要多次重用时,使用FileInfo类提供的实例方法,不可以使用File提供的静态方法。

5. FileStream类:该类实现了对文件读取,写入,打开,关闭操作,支持随机访问文件,可以使用同步方式打开文件进行读写,也可以用异步方式打开文件进行读写。

6. Path类:该类对包含文件或目录路径信息的String实例操作,这些操作可以跨平台的方式执行的。

7. MemoryStream类:该类创建起支持存储区为内存的流。

8. StreamReader类:该类可以读取标准文本文件的内容。即实现一个TextReader。默认编码格式为UTF-8。

9. StreamWriter类:该类可以往标准文本文件中写入内容。即实现一个TextWriter。默认编码格式为UTF-8。

10. StringReader类: 该类实现从字符串进行读取的TextReader。

11. StringWriter类:该类实现将信息写入字符串,该信息存储在基础的StringBuilder中。

12. TextReader类:该类表示可读取连续字符系统的阅读器。

13. TextWriter类:该类表示可以编写一个有序字符系列的编辑器,是抽象类。 

 代码示例:文件的创建与文件内容的输入输出

if(File.Exists(filePath))
{
    File.Delete(filePath);
}
FileStream fs=File.Create(filePath,1024);     //创建文件
Byte[] info=new UTF8Encoding(true).GetBytes("测试内容");
fs.Write(info,0,info.Length);     //向新创建的文件写入内容
fs.Close();

using(StreamReader sr=File.OpenText(filePath))
{
    While(sr.ReadLine()!=null)
        MessageBox.Show(sr.ReadLine());
}

参考代码:

文件属性的获取与设置:/Files/long-gengyun/FileAttribute.rar

显示文件夹中的文件与子文件夹:/Files/long-gengyun/GetDirectory.rar

文件的打印输出:/Files/long-gengyun/FilePrint.rar

计算机系统信息获取:/Files/long-gengyun/GetSystemInfo.rar 

一、byte[] 和 Stream

/// <summary>
/// byte[]转换成Stream
/// </summary>
/// <param name="bytes"></param>
/// <returns></returns>
public Stream BytesToStream(byte[] bytes)
{
    Stream stream = new MemoryStream(bytes);
    return stream;
}
 
/// <summary>
/// Stream转换成byte[]
/// </summary>
/// <param name="stream"></param>
/// <returns></returns>
public byte[] StreamToBytes(Stream stream)
{
    byte[] bytes = new byte[stream.Length];
    stream.Read(bytes, 0, bytes.Length);
    stream.Seek(0, SeekOrigin.Begin); // 设置当前流的位置为流的开始
    return bytes;
}

二、文件 和 Stream

/// <summary>
/// 从文件读取Stream,     思路=文件-字节-流
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
public Stream FileToStream(string path)
{
    FileStream fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.Read); // 打开文件
    byte[] bytes = new byte[fileStream.Length]; // 读取文件的byte[]
    fileStream.Read(bytes, 0, bytes.Length);
    fileStream.Close();
    Stream stream = new MemoryStream(bytes); // 把byte[]转换成Stream
    return stream;
}
 
/// <summary>
/// 将Stream写入文件    思路=流-字节,文件-写字节
/// </summary>
/// <param name="stream"></param>
/// <param name="path"></param>
public void StreamToFile(Stream stream, string path)
{
    byte[] bytes = new byte[stream.Length]; // 把Stream转换成byte[]
    stream.Read(bytes, 0, bytes.Length);
    stream.Seek(0, SeekOrigin.Begin); // 设置当前流的位置为流的开始
    FileStream fs = new FileStream(path, FileMode.Create); // 把byte[]写入文件
    BinaryWriter bw = new BinaryWriter(fs);
    bw.Write(bytes);
    bw.Close();
    fs.Close();
}

https://www.cnblogs.com/warioland/archive/2012/03/06/2381355.html

三、BYTE与string

1、
System.Text.UnicodeEncoding converter = new System.Text.UnicodeEncoding();
  byte[] inputBytes =converter.GetBytes(inputString);
  string inputString = converter.GetString(inputBytes);

2   string inputString = System.Convert.ToBase64String(inputBytes);
  byte[] inputBytes = System.Convert.FromBase64String(inputString);
FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.Read);

猜你喜欢

转载自www.cnblogs.com/icaowu/p/11628485.html