【问题标题】:FileStream with FileMode.Open erases the file带有 FileMode.Open 的 FileStream 擦除文件
【发布时间】:2014-03-17 22:35:24
【问题描述】:

我有一个使用 FileMode.Open 打开文件的 FileStream(没有别的)。在运行我的代码之前,我已确保该文件存在并且其中包含几千字节。但是,在我运行代码后,该文件为空(0 字节)。这是我的代码:

Imports System.IO

Public Class Form1
    Dim FS As New FileStream("GameList",FileMode.Open)
End Class

【问题讨论】:

  • 每个文件流打开后,在退出前关闭它。
  • @MehdiRizvand 不起作用...
  • 你需要刷新它......当你创建一个文件流实例时它很重要:FS.Flush() 然后关闭它:FS.Close() 或使用 Using 语句。
  • @MrCoDeXeR 也不起作用...我试过 FS.Close()
  • 你能把代码贴在你读/写和关闭流的地方吗?原因可能就在那里....此外,当您写入现有文件时,您首先需要设置流中的位置以不覆盖现有内容。

标签: c# .net vb.net file filestream


【解决方案1】:

我假设你想从文件中读取,试试这个:

New FileStream("GameList", FileMode.Open, FileAccess.Read, FileShare.Read)

或者使用更易于使用的 StreamReader:

New StreamReader("GameList")

【讨论】:

  • @Bigjim 我想读取和写入文件,我将使用 BinaryReader/BinaryWriter。
【解决方案2】:

FileMode.Open 以文件开头的文件指针开始。如果要保留当前文件内容,请尝试使用 FileMode.Append。

【讨论】:

    猜你喜欢
    • 2012-07-02
    • 2023-03-30
    • 2011-08-27
    • 1970-01-01
    • 2016-05-03
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多