【问题标题】:Getting the file size from StreamWriter [closed]从 StreamWriter 获取文件大小 [关闭]
【发布时间】:2013-08-10 06:04:28
【问题描述】:
using (var writer = File.CreateText(fullFilePath))
{
   file.Write(fileContent);
}

给定上面的代码,可以从StreamWriter知道文件大小吗?

【问题讨论】:

  • 是的;它是空的。
  • 对不起。我也得到了以下内容。 writer.Write(fileContent);
  • 代码看起来太简单了。你会得到关于在 使用关闭它之后获取大小的答案,这是你想要的吗?
  • 是的。如果可能,从 streamwriter 类中。
  • 您无法从关闭的写入器或流中获取大小。

标签: c# streamwriter


【解决方案1】:

给你!只需使用 System.IO 命名空间中的 FileInfo 类 :)

using System.IO;

var fullFilePath = "C:\path\to\some\file.txt";
var fileInfo = new FileInfo(fullFilePath);

Console.WriteLine("The size of the file is: " + fileInfo.Length);

【讨论】:

  • 基本正确,但在using(){}的上下文中显示效果更好
  • 不需要。它与 StreamWriter 类的实例化无关。仅(自然地)要求在定义和声明 fullFilePath 的范围内完成。在写内容之前或之后是否检查文件大小由原始发布者决定。但无论他们打算做什么,他或她都应该完全有能力使用此代码:)
  • FileInfo 没有实现 IDisposable 因此不能使用 using 语句。
  • @Bearcat9425 的相关性是什么?只需在写入文件之后或之前实例化 FileInfo,具体取决于您想要的行为,然后在完成后将对象设置为 null。 GC 会处理剩下的事情。
  • 致上面的人,说明要在使用的上下文中显示它。
【解决方案2】:

如果您需要特定文件的属性,我认为您正在寻找的是 FileInfo。

FileInfo info = new FileInfo(fullFilePath);
//Gets the size, in bytes, of the current file.
long size = info.Length;

【讨论】:

    【解决方案3】:

    你能试试这段代码吗?

    var size = writer.BaseStream.Length;
    

    *writer 是你的 StreamWriter

    【讨论】:

    • 你没有考虑缓冲。
    【解决方案4】:

    是的,你可以,试试下面的

    long length = writer.BaseStream.Length;//will give unexpected output if autoflush is false and write has been called just before
    

    注意:writer.BaseStream.Length 属性可能会返回意外结果,因为StreamWriter 不会立即写入。它会缓存以便获得您需要的预期输出AutoFlush = true

    writer.AutoFlush = true; or writer.Flush();
    long length = writer.BaseStream.Length;//will give expected output
    

    【讨论】:

    • @Downvoter 关心解释
    • 在写入后设置 AutoFlush 有效,但这很愚蠢。只需在适当的时候致电Flush()。
    【解决方案5】:

    不,不是从 StreamWriter 本身你可以知道文件的大小。你必须使用FileInfo's Length。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-23
      • 2015-07-27
      • 1970-01-01
      • 2020-10-17
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      相关资源
      最近更新 更多