操作文件File类方法

来源:互联网 发布:运动仿真软件 编辑:程序博客网 时间:2024/06/07 12:20


文件操作

File.Copy(“source”, “targetFileName”, true);//文件拷贝,true表示当文件存在时“覆盖”,如果不加true,则文件存在报异常。
File.Exists();//判断文件是否存在
File.Move(“source”,“target”);//移动(剪切),思考如何为文件重命名?文件的剪切是可以跨磁盘的。
File.Delete(“path”);//删除。如果文件不存在?不存在,不报错
File.Create(“path”);//创建文件

File.ReadAllLines(“path”,Encoding.Default);//读取所有行,返回string[]
File.ReadAllText(“path”,Encoding.Default);//读取所有文本返回string
File.ReadAllBytes(“path”);//读取文件,返回byte[],把文件作为二进制来处理。
l===========================================
File.WriteAllLines(“path”,new string[4] ,Encoding.Default);//将string数组按行写入文件。
File.WriteAllText(“path”,“string”);//将字符串全部写入文件
File.WriteAllBytes(“path”,newbyte[5]);//将byte[]全部写入到文件
File.AppendAllText()//将string追加到文件

文件流操作
FileStream fs=File.Open(); //返回FileStream 
FileStream fs=File.OpenRead();//返回只读的FileStream
FileStream fs=File.OpenWrite();//返回只写的FileStream
FileStream fs=new FileStream(参数);

Stream(所有流的父类,是一个抽象类。)
文件操作的类都在System.IO.*;

拷贝文件的两种方式:将源文件内容全部读到内存中,再写到目标文件中;读取源文件的1KB内存,写到目标文件中,再读取源文件的1KB内存,再写到目标文件中……。第二种方式就是一种流的操作。
l用File.ReadAllText、File.WriteAllText进行文件读写是一次性读、写,如果文件非常大会占内存、慢。需要读一行处理一行的机制,这就是流(Stream)。Stream会只读取要求的位置、长度的内容。
Stream不会将所有内容一次性读取到内存中,有一个指针,指针指到哪里才能读、写到哪里。
流有很多种类,文件流是其中一种。FileStream类newFileStream(“c:/a.txt”, filemode,fileaccess)后两个参数可选值及含义自己看。FileStream可读可写。可以使用File.OpenRead、File.OpenWrite这两个简化调用方法。
byte[]是任何数据的最根本表示形式,任何数据最终都是二进制。
FileStream的Position属性为当前文件指针位置,每写一次就要移动一下Position以备下次写到后面的位置。Write用于向当前位置写入若干字节,Read用户读取若干字节。

使用FileStream写入文本文件。
通过FileStream写入读取文本文件。对于中文如果每次读取1个byte会有什么效果?更好的选择→StreamReader
使用FileStream读取文本文件。
使用FileStream进行大文件拷贝。
File.ReadAllBytes()与File.WriteAllBytes()进行文件拷贝。(查看内存使用情况)
使用using可以方便的释放资源(自动调用Dispose方法)
只有实现了IDispose接口的类才能使用using释放资源 

Stream把所有内容当成二进制来看待,如果是文本内容,则需要程序员来处理文本和二进制之间的转换。
用StreamWriter可以简化文本类型的Stream的处理
StreamWriter是辅助Stream进行处理的
 using (StreamWriter writer = new StreamWriter(stream, encoding))
 {
      writer.WriteLine("你好");
 }


和StreamWriter类似, StreamReader简化了文本类型的流的读取。
 Stream stream = File.OpenRead("c:/1.txt");
   using (StreamReader reader = new StreamReader(stream,encoding))
            {
                //Console.WriteLine(reader.ReadToEnd());
                Console.WriteLine(reader.ReadLine());
            }
ReadToEnd用于从当前位置一直读到最后,内容大的话会占内存;每次调用都往下走,不能无意中调用了两次
ReadLine读取一行,如果到了末尾,则返回null。

产生乱码的原因(只有文本文件才会乱码):文本文件存储时采用的编码,与读取时采用的编码不一致,就会造成乱码问题。解决:采用统一的编码就ok.
文本文件编码,文本文件有不同的存储方式,将字符串以什么样的形式保存为二进制,这个就是编码,UTF-8、ASCII、Unicode等,如果出现乱码一般就是编码的问题,文本文件相关的函数一般都有一个Encoding类型的参数,取得编码的方式:Encoding.Default、Encoding.UTF8、Encoding.GetEncoding("GBK")
文件编码(码表)
ASCII:英文码表,每个字符占1个字节。
GB2312:兼容ASCII,包含中文。每个英文占一个字节(正数),中文占两个字节(负数)
GBK:简体中文,兼容gb2312,包含更多汉字。英文占1个字节(正数),中文占两个(1个负数,1个可正可负)
Big5:繁体中文
Unicode:国际码表,中文英文都站2个字节。
UTF-8:国际码表,英文占1个字节,中文占3个字节。l输出Encoding.GetEncodings(),所有编码。
什么是文本文件。拖到记事本中还能看得懂的就是文本文件,doc不是。
File类的常用静态方法:(FileInfo*)
voidAppendAllText(string path, string contents),将文本contents附加到文件path中
bool Exists(string path)判断文件path是否存在
string[]ReadAllLines(string path) 读取文本文件到字符串数组中
stringReadAllText(string path) 读取文本文件到字符串中
voidWriteAllText(string path, string contents)将文本contents保存到文件path中,会覆盖旧内容。
WriteAllLines(string path,string[] contents),将字符串数组逐行保存到文件path中,会覆盖旧内容。

正数对应的二进制取反 ,再加1就是负数的二进制。
Encoding.Default

System.Text.DBCSCodePageEncoding双字节字符集。如果输出EncodingName的话,结果为:简体中文(gb2312)

Encoding.Default:与操作系统的当前“区域与语言选项”有关。

 ////如果系统中没有提供编码,则可以通过GetEncoding("编码的额字符串表示")获得该编码。

            //Encodingencoding=Encoding.GetEncoding("gb2312");

            StringBuildersb =newStringBuilder();

            EncodingInfo[]infos = System.Text.Encoding.GetEncodings();

            for(inti = 0; i < infos.Length; i++)

            {

                sb.Append(infos[i].CodePage +"   "+ infos[i].DisplayName +"   "+ infos[i].Name +"\r\n");

            }

            File.WriteAllText("encodings.txt",sb.ToString());


这是关于文件的操作部分,精彩内容请见下篇文章



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 王者荣耀占内存怎么办 信用卡被暂停使用怎么办 宝宝爱涂鸦怎么办呢 大良老板欠薪怎么办 投影仪流明很低怎么办 户外涂鸦没有墙怎么办 word突然未响应怎么办 文档突然未响应怎么办 pr不自己播放怎么办 笔记本电脑空格键打字失灵怎么办 小孩受凉打喷嚏流鼻涕怎么办 头疼打喷嚏流鼻涕鼻塞怎么办 头疼打喷嚏想吐怎么办 感冒鼻塞头疼打喷嚏怎么办 孕期打喷嚏漏尿怎么办 孕妇打喷嚏漏尿怎么办 打喷嚏停不下来怎么办 鼻炎不停的打喷嚏怎么办 感冒了鼻子痒怎么办 怀孕鼻炎严重了怎么办 鼻炎不停打喷嚏流鼻涕怎么办 鼻子里面干痒怎么办 有鼻炎老打喷嚏怎么办 鼻子喷嚏打不停怎么办 鼻子痒想打喷嚏怎么办 鼻痒打喷嚏流鼻涕怎么办 原配找到公司了怎么办 西北游不吃羊肉怎么办 水培植物冬天该怎么办 车里味道太大怎么办 同房后有异味怎么办 房间里有异味怎么办 身上有孤臭味怎么办 炉灶打不着火怎么办 檀香木香味小了怎么办 郁金香种球发霉怎么办 烧到小天真香该怎么办 qq留言删除频繁怎么办 压缩资源有密码怎么办 电表读不了卡怎么办 office安装了打不开怎么办