C#的常用I/O操作
对于常用的I/O操作有文本的读写,二进制文件读写,文件的读写。
1.文本文件读写可以使用:SteamReader/SteamWriter
string pathRead = @"e:\File\test.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\test2.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.对于非文本文件需要采用二进制流读写,保证完整性。
BinaryReader 和 BinaryWriter 类用于二进制文件的读写。
Stream stream=null; byte[] bufbyte = null; if (File.Exists(@"E:\File\Koala.jpg")) { FileStream readStream = new FileStream(@"E:\File\Koala.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:\File\KoalaCopy.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还能增加、删除、修改文件,的到文件的详细信息等方法。