C# 能够根据数组大小更改文件名
似乎如果不关闭C# 能够根据数组大小更改文件名,c#,arrays,filestream,C#,Arrays,Filestream,似乎如果不关闭文件流,它将根据程序中的数组数量/大小自动关闭 在下面的代码中,我设置了一些数组。根据阵列4的大小,确定我是否能够在Windows资源管理器中手动重命名该文件(如果您在调试器位于标有//断点的行时执行此操作,则此处) 如果array4很大,为什么我可以(在Windows资源管理器中手动)更改文件名,但如果我将其设置为较小的大小,则无法更改文件名 class Program { static void Main(string[] args) { Cre
文件流
,它将根据程序中的数组数量/大小自动关闭
在下面的代码中,我设置了一些数组。根据阵列4
的大小,确定我是否能够在Windows资源管理器中手动重命名该文件(如果您在调试器位于标有//断点的行时执行此操作,则此处
)
如果array4
很大,为什么我可以(在Windows资源管理器中手动)更改文件名,但如果我将其设置为较小的大小,则无法更改文件名
class Program
{
static void Main(string[] args)
{
CreateFileStream();
byte[] array1 = new byte[1191980];
byte[] array2 = new byte[1191936];
byte[] array3 = new byte[1191936];
byte[] array4 = new byte[85138]; //Larger size - Can change file name
//byte[] array4 = new byte[79462]; //Smaller size - Cannot change file name
}//Breakpoint here, try and change the file name C:\FileName.wav to something else
private static void CreateFileStream()
{
FileStream fileStream = new FileStream(@"C:\FileName.wav", FileMode.Open, FileAccess.Read, FileShare.Read);
}
}
通过分配一个大数组,您将迫使GC介入。这将清除未引用的文件流并运行其终结器,从而有效地关闭它。您可能可以通过调用
GC.Collect
来模拟这一点,而无需分配数组。尝试分配较小的数组,然后调用GC.Collect()代码>行为可能是相同的。通过分配一个大数组,您强制GC介入。这将清除未引用的文件流并运行其终结器,从而有效地关闭它。您可能可以通过调用GC.Collect
来模拟这一点,而无需分配数组。尝试分配较小的数组,然后调用GC.Collect()代码>行为可能相同。