C# 之 读写文件
1、使用 FileStream 读写文件
添加命名空间引用:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
读取核心代码:
byte[] byData = new byte[];
char[] charData = new char[];
try
{
FileStream sFile = new FileStream("文件路径",FileMode.Open);
sFile.Seek(, SeekOrigin.Begin);
//第一个参数是被传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节
// 数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,
//最后一个参数规定从文件读多少字符.
sFile.Read(byData, , ); }
catch (IOException e)
{
Console.WriteLine("An IO exception has been thrown!");
Console.WriteLine(e.ToString());
Console.ReadLine();
return;
}
Decoder d = Encoding.UTF8.GetDecoder();
d.GetChars(byData, , byData.Length, charData, );
Console.WriteLine(charData);
Console.ReadLine();
写入核心代码:
FileStream fs = new FileStream(文件路径,FileMode.Create);
//获得字节数组
byte [] data =new UTF8Encoding().GetBytes(String);
//开始写入
fs.Write(data,,data.Length);
//清空缓冲区、关闭流
fs.Flush();
fs.Close();
2、使用StreamReader和StreamWriter读写文件
StreamReader 读取文件:
StreamReader objReader = new StreamReader(文件路径);
string sLine="";
ArrayList LineList = new ArrayList();
while (sLine != null)
{
sLine = objReader.ReadLine();
if (sLine != null&&!sLine.Equals(""))
LineList.Add(sLine);
}
objReader.Close();
return LineList;
StreamWriter写文件:
FileStream fs = new FileStream(文件路径,FileMode.Create);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("GB2312"));//通过指定字符编码方式可以实现对汉字的支持,否则在用记事本打开查看会出现乱码
sw.Flush();
if (checkfile)
{
sw.BaseStream.Seek(, SeekOrigin.End);//移动到结尾
}
else
{
sw.BaseStream.Seek(, SeekOrigin.Begin);
}
string temp = "随便写点东西";
sw.WriteLine(temp);
sw.Flush();
sw.Close();
fs.Close();
用 BinaryWriter 写入文件:
//实例化一个保存文件对话框
SaveFileDialog sf = new SaveFileDialog();
//设置文件保存类型
sf.Filter = "txt文件|*.txt|所有文件|*.*";
//如果用户没有输入扩展名,自动追加后缀
sf.AddExtension = true;
//设置标题
sf.Title = "写文件";
//如果用户点击了保存按钮
if (sf.ShowDialog() == DialogResult.OK)
{
//实例化一个文件流--->与写入文件相关联
FileStream fs = new FileStream(sf.FileName, FileMode.Create);
//实例化BinaryWriter
BinaryWriter bw = new BinaryWriter(fs);
bw.Write(this.textBox1.Text);
//清空缓冲区
bw.Flush();
//关闭流
bw.Close();
fs.Close();
}
用缓存流复制文件:
//创建两个文件流 一个是源文件相关,另一个是要写入的文件
FileStream fs = new FileStream(@"D:\KuGoo\爱得太多.wma",FileMode.Open);
FileStream fs2 = new FileStream(@"D:\love.wma",FileMode.Create);
//创建一个字节数组,作为两者之间的媒介byte[] data = new byte[];
//创建两个缓冲流,与两个文件流相关联
BufferedStream bs = new BufferedStream(fs);
BufferedStream bs2= new BufferedStream(fs2);
//fs作死的读,fs2作死的写,直到fs没有字节可读fs2就不写了
while(fs.Read(data,,data.Length)>)
{
fs2.Write(data,,data.Length);
fs2.Flush();
}
//关闭流
fs.Close();
fs2.Close();
用内存流来读取图片:
//实例化一个文件流
FileStream fs = new FileStream(文件地址, FileMode.Open);
//把文件读取到字节数组
byte[] data = new byte[fs.Length];
fs.Read(data, , data.Length);
fs.Close();
//实例化一个内存流--->把从文件流中读取的内容[字节数组]放到内存流中去
MemoryStream ms = new MemoryStream(data);
//设置图片框 pictureBox1中的图片
this.pictureBox1.Image = Image.FromStream(ms);
C# 之 读写文件的更多相关文章
- Hyper-V无法文件拖拽解决方案~~~这次用一个取巧的方法架设一个FTP来访问某个磁盘,并方便的读写文件
异常处理汇总-服 务 器 http://www.cnblogs.com/dunitian/p/4522983.html 服务器相关的知识点:http://www.cnblogs.com/dunitia ...
- 计算机程序的思维逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库
57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但 ...
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- php中并发读写文件冲突的解决方案
在这里提供4种高并发读写文件的方案,各有优点,可以根据自己的情况解决php并发读写文件冲突的问题. 对于日IP不高或者说并发数不是很大的应用,一般不用考虑这些!用一般的文件操作方法完全没有问题.但如果 ...
- C#读写文件的方法汇总_C#教程_脚本之家
C#读写文件的方法汇总_C#教程_脚本之家 http://www.jb51.net/article/34936.htm
- Inno Setup 如何读写文件
软件安装的实质就是拷贝,对于简单的打包当然不需要考虑修改某(配置)文件.通过inno修改文件的目的在于把安装时相关信息写入文件中,提供其它应用的读取,而这些信息也只能在安装时才能确定,比如安装用户选择 ...
- java使用IO读写文件总结
每次用到IO的读写文件都老忘记写法,都要翻过往笔记,今天总结下,省的以后老忘.java读写文件的IO流分两大类,字节流和字符流,基类分别是字符:Reader和Writer:字节:InputStream ...
- python读写文件时中文的转码问题
读写文件都要将中文转为unicode字符. 读文件: u = unicode(s, 'gbk') 这里不能使用encode 写文件: u = encode('utf')
- JAVA基础学习之流的简述及演示案例、用缓冲区方法buffer读写文件、File类对象的使用、Serializable标记接口(6)
1.流的简述及演示案例输入流和输出流相对于内存设备而言.将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出.字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表. ...
- c# 高效读写文件
一.同步读写文件(在并发情况下不会发生文件被占用异常) static void Main(string[] args) { Parallel.For(0, 10000, e => { strin ...
随机推荐
- 一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库 RxJava,相当好
https://github.com/ReactiveX/RxJava https://github.com/ReactiveX/RxAndroid RX (Reactive Extensions,响 ...
- openstack kilo 流量
- 第二百二十八天 how can I 坚持
hibernate 还有好多不会搞啊,本来很简单的东西,没用过就不会. 今天... 只是感觉很累,昨天爬山爬的,不知道该写点啥了,买的羽绒服到了,还行吧,凑合穿吧. 睡觉了.今天貌似又发脾气了.哎.. ...
- ubuntu下设置开机自动挂载硬盘
我们在linux中常常用mount命令把硬盘分区或者光盘挂载到文件系统中./etc/fstab就是在开机引导的时候自动挂载到linux的文件系统. 如果给计算机配了一块新磁盘,已经分区,格式化,挂载, ...
- 制作Andriod程序的数字签名需要使用JDK
原文地址:制作Andriod程序的数字签名需要使用JDK作者:黄金大劫案88 制作Andriod程序的数字签名需要使用JDK,先确认本机是否安装了JDK,在JDK目录下有一个KEYTOOL工具,这个 ...
- Cisco 防止SYN Flood 攻击原理
DoS(Denial of Service拒绝服务)和DDoS(Distributed Denial of Service分布式拒绝服务)攻击是大型网站和网络服务器的安全威胁之一.2000年2月,Ya ...
- 创建一个EMS 扩展包
EMS Package 向导: File > New > Other > Delphi projects > EMS > EMS Package Empty packag ...
- IOC知识
1.两个基本概念 IOC(Inversion of Control ):反转控制,即将控制权反转出去. DI(Dependency Injection):依赖注入,根据依赖关系进行注入. DI是实现I ...
- Keil MDK Code、RO-data、RW-data、ZI-data数据段
Program Size: Code=10848 RO-data=780 RW-data=372 ZI-data=868 Code 表示程序代码指令部分 存放在Flash区 RO-data 表 ...
- kindeditor html代码过滤不能保存
这是因为编辑器默认开启了过滤模式(filterMode:true).当filterMode为true时,编辑器会根据htmlTags设定自动过滤HTML代码,主要是为了生成干净的代码.如果想保留所有H ...