C#中的文件流

C#中的文件流,第1张

       首先讲File类(静态类),拥有对文件的创建,移动,删除,复制等 *** 作(和FileInfo类功能差不多,不过FileInfo类是实例类型,文件 *** 作多的话使用FileInfo,少的话使用File类,file类因为每次都要查找文件,所以会比较耗费时间)。这个就不多说了,用起来也好上手。

例如:

个人理解:首先是创建一个文件流,这个文件流对象相当于连接外部文件和

            * 程序内部的一条管道(管道里面是文件流创建时所指向的文件,相当于一条水管,水是

            * 文件内容),然后这个管道(流)搭建好了,但是要 *** 作流里面的文件内容,还要

            * 有读取或者写入的数据 *** 作(文件内容读写器),所以需要读写器(StreamWriter类

            * 和StreamReader类)进行读写 *** 作,读取流中的数据或者将数据写入流中,流只是它的载体来的。

         步骤:     1、创建一个文件流对象(FileStream类,FileMode(文件模式,打开,创建,创建或者打开等),FileAccess( 指的是 读还是写,还是读写) )

            *            2、创建相应的读写器(StreamWriter类和StreamReader类)

            *            3、执行读写 *** 作

            *            4、关闭读写器

            *            5、关闭文件流

例子:

以上是文本文件的读写 *** 作,接下来搞一个二进制的

像图片等其他类型就无法使用文本的方式进行读写,这里使用二进制的方式,步骤也是和文本的方式一样。首先是用FileStream类创建一个文件流,然后建立相应的读写器,读取或者写入数据,最后关闭读写器和文件流。在读取的时候,使用ReadBytes()方法,参数是读取的文件流的字节数组长度,返回一个字节数组。复制相当于将读取的文件流的内容(例子中的by字节数组)写入新的文件中去。

此外,还有很多流,网络流,内存流等。

如果您要在文件内部使用写入 *** 作,具体要看您使用的编程语言和文件类型。通常情况下,文件写入 *** 作可以使用以下方式实现:

使用文件流进行写入 *** 作。这种方式适用于文本文件和二进制文件。通过文件流可以打开文件,并在文件中写入数据。使用文件流进行写入 *** 作的代码示例(C#语言):

plaintext

Copy code

// 打开文件

FileStream fileStream = new FileStream("filename.txt", FileMode.Create)

// 创建写入器

StreamWriter writer = new StreamWriter(fileStream)

// 写入数据

writer.Write("Hello World")

// 关闭写入器和文件流

writer.Close()

fileStream.Close()

使用内置函数进行写入 *** 作。这种方式适用于文本文件。不同的编程语言提供了不同的内置函数来进行文件读写 *** 作。使用内置函数进行写入 *** 作的代码示例(Python语言):

plaintext

Copy code

# 打开文件

file = open("filename.txt", "w")

# 写入数据

file.write("Hello World")

# 关闭文件

file.close()

无论使用哪种方法,都要注意在写入完成后及时关闭文件,以避免文件句柄泄漏和数据丢失。

StreamWriter类有几个构造函数,其中有一个构造函数有两个参数(string path,bool append),其中path为文件的路径,如果该文件存在,则可以向其覆盖或追加;如果文件不存在,则创建一个新文件。bool类型值append确定是否将数据追加到文件。如果文件存在且append为true,则数据将追加到文件中

首先要理解这个方法:ReadLine这个方法每被调用一次,只会读取一行内容.下一次再次被调用时,会从下一行开始读取,当然,也只会读取一行

FileStream fs = new FileStream("user.game",FileMode.Open)

StreamReader sr = new StreamReader(fs)

//运行正常

string type = sr.ReadLine()//这句代码被执行后,文件中第一行的内容已经被读取完了,也就是阅读器已经运行到了第一行最末的位置,下次再读取时会从下一行开始读取

if (type.Equals("Turtle"))

{

//内容被执行了

}

//运行错误

if(sr.ReadLine().Equals("Turtle"))//这里你又一次调用了这个方法,所以阅读器从这里再读取你的文件中第二行的内容,因为你的文件只有一行内容,所以第二行内容肯定是读不到内容的,所以为空

{

//内容没有被执行

}

测试方法是:在你文件中加多第二行内容,再运行,就可以发现这个时候sr.ReadLine()已经变成了第二行的内容了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12104475.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存