C# 从StreamWriter获取文件大小

C# 从StreamWriter获取文件大小,c#,streamwriter,C#,Streamwriter,给定上述代码,可以从StreamWriter?知道文件大小吗!只需使用System.IO命名空间中的FileInfo类:) 我认为,如果您需要特定文件的属性,您需要的是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: " +

给定上述代码,可以从
StreamWriter

知道文件大小吗!只需使用System.IO命名空间中的FileInfo类:)


我认为,如果您需要特定文件的属性,您需要的是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);

你能试试这段代码吗

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

*writer是您的StreamWriter是的,您可以尝试以下方法

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

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

不,不是从StreamWriter本身,您可以了解文件的大小。您必须使用。

是;是空的,对不起。我也得到了以下信息<代码>writer.Write(文件内容)代码看起来过于简化。在用户关闭它之后,您将得到关于获取大小的答案,这是您想要的吗?是的。如果可能,从streamwriter类。您无法从关闭的写入程序或流获取大小。基本正确,但最好使用不需要的
using(){}
在上下文中显示。它与StreamWriter类的实例化无关。仅(自然)需要在定义和声明fullFilePath的范围内执行此操作。是否在编写内容之前或之后检查文件大小取决于原始海报。但是他或她应该完全能够使用此代码,无论他们打算做什么:)FileInfo没有实现IDisposable,因此不能在其上使用using语句。相关性是什么@Bearcat9425?只需在写入文件之后或之前实例化FileInfo,具体取决于您想要的行为,然后在完成后将对象设置为null。GC将负责剩下的部分。向上面的人说明,要在使用的上下文中显示它。您没有考虑缓冲。@请注意解释在写入后设置自动刷新是可行的,但这很愚蠢。只要在适当的时候调用
Flush()
long length = writer.BaseStream.Length;//will give unexpected output if autoflush is false and write has been called just before
writer.AutoFlush = true; or writer.Flush();
long length = writer.BaseStream.Length;//will give expected output