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.对于非文本文件需要采用二进制流读写,保证完整性。

BinaryReaderBinaryWriter 类用于二进制文件的读写。

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还能增加、删除、修改文件,的到文件的详细信息等方法。

 

posted @ 2019-10-10 17:56  蔡老板2019  阅读(328)  评论(0编辑  收藏  举报