个人倾向使用File.WriteAllByte写入文件:

//Stream to File
MemoryStream ms=...Stream;
ms.Position = ;
byte[] buffer = new byte[ms.Length];
ms.Read(buffer, , (int)ms.Length);
File.WriteAllBytes(filepath, buffer);//写入文件
StreamRead,StreamWrite,SreamRead,以及File的部分操作
// StreamRead,StreamWrite,File只能操作文本文件 
//FileStream可以操作所有格式 包括文本,文件,图片,视频
//SreamRead读取文件
using (StreamReader reader = new StreamReader(filepath))
{
//reader.ReadLine();读取第一行
string data = reader.ReadToEnd();//读取所有
}
//StreamWrite写入文件
using (StreamWriter writer = new StreamWriter(filepath))
{
//writer.Write("写入的内容");
//也可以如下面一行一行写入
writer.WriteLine("");
writer.WriteLine("");
writer.WriteLine(picName);
writer.WriteLine(txtCount.Text);
} //File即可以读取文本 也可以写入文本
//读取
string data = File.ReadAllText(filepath);
string[] datas = File.ReadAllLines(filepath);
//写入
string[] ss = new string[] {"arr1","arr2" };
File.WriteAllLines(filepath, ss);
File.WriteAllText(filepath, "\r\n换行\r\n");
//附加
File.AppendAllLines(filepath,ss);
File.AppendAllText(filepath,str); //FileStream可以操作所有格式 包括文本,文件,图片,视频
//FileStream读取
string ss = null;
byte[] buffer = new byte[ * * ]; //针对大文件1M1M的读取
using (FileStream sr = new FileStream(sfilepath, FileMode.OpenOrCreate, FileAccess.Read))
{
int sss = sr.Read(buffer, , buffer.Length);
ss = Encoding.Default.GetString(buffer, , sss);
}
//FileStream写入
using (FileStream fsWrite = new FileStream(filepath, FileMode.OpenOrCreate, FileAccess.Write))
{
byte[] buffer = Encoding.Default.GetBytes(str);
fsWrite.Write(buffer, , buffer.Length);
}

Stream 和 File 之间的转换

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

文件复制(当然File.Copy更常用,这个是偶然中使用到整理的)

public static void CopyFile(string soucre, string target)
{
//读取的流
using (FileStream fsRead = new FileStream(soucre, FileMode.Open, FileAccess.Read))
{
//写入的流
using (FileStream fsWrite = new FileStream(target, FileMode.OpenOrCreate, FileAccess.Write))
{
byte[] buffer = new byte[ * * ];
while (true)
{
int r = fsRead.Read(buffer, , buffer.Length);
//0代表已经读取完
if (r == )
{
break;
}
fsWrite.Write(buffer, , r);
}
}
}
}

最新文章

  1. JAXP简介
  2. C#开发微信门户及应用(45)--微信扫码登录
  3. jmx server 和jmx client
  4. WSGI服务器实践二--实践一个基本功能的WSGI服务器
  5. htaccess rewrites重写规则实例
  6. HttpWebRequest
  7. Oracle-12541:TNS:无监听程序 .
  8. linux运维工程师,必须掌握以下几个工具
  9. JVM Davilk ART 简介 区别
  10. LLDB中的小技巧
  11. 开源 java CMS - FreeCMS1.9公布。
  12. UVA 10943 How do you add?
  13. 【懒人有道】在asp.net core中实现程序集注入
  14. 干货分享!关于APP导航菜单设计你应该了解的一切
  15. 在lamp上简单部署应用程序
  16. vue小白快速入门
  17. bad interpreter:No such file or directory 解决方法
  18. DirectX11--深入理解与使用2D纹理资源
  19. 基于前后端分离的身份认证方式——JWT
  20. vue 获取屏幕宽高 width height

热门文章

  1. es6从零学习(五):Module的语法
  2. Generating a PDF in Codeigniter using mPDF
  3. lintcode-176-图中两个点之间的路线
  4. idea快捷键操作
  5. C#常见函数
  6. JVM(二)GC
  7. arp hook
  8. 第71天:jQuery基本选择器(二)
  9. VBA 实现学校上课教员一学期中所有上课时间,在一页中通过背景底色反应出来
  10. js alert()后进行跳转的方法