如何在Android设备上填充设备存储

时间:2019-02-05 15:31:42

标签: c# android storage

我想在Android设备上填充设备存储以进行测试。如我所读,有一种方法可以做到这一点(没有“归零”磁盘,这很耗时):

long bigSize = 1L * 1024L * 1024L * 1024L;
using (var fileStream = new FileStream(rootPath + "/DummyFile.txt", FileMode.Create, FileAccess.Write, FileShare.None))
{
    long sizeH = bigSize;
    long sizeL = 1L;

    while (sizeH - sizeL > 1L)
    {
        try
        {
            fileStream.SetLength(sizeH);
            fileStream.WriteByte(0);
            fileStream.Flush();
            Debug.Log("Length  = " + sizeH);
            sizeL = sizeH;
            sizeH = sizeH * 2L;
        }
        catch (IOException)
        {
            Debug.Log("Catch length  = " + sizeH);
            sizeH = (sizeL + sizeH) / 2L;
        }
    }
}

在Windows上,此方法实际上可以在一秒钟内填满硬盘,因此您无法再向其中写入数据。

但是我需要在Android设备上填充磁盘存储,最好通过C#代码(U​​nity3d)。我知道,由于FAT32文件系统,Android上的最大文件大小为2GB,因此我对代码进行了一些修改。我尝试编写尽可能多的1GB文件(在我的示例中,可用磁盘空间为48 GB,因此我将文件数量限制为60):

    try
    {
        for (int n = 0; n < 60; ++n)
        {
            using (var fileStream = new FileStream(rootPath + "/DummyFile" + n.ToString() + ".txt", FileMode.Create, FileAccess.Write, FileShare.None))
            {
                fileStream.SetLength(bigSize);
                fileStream.WriteByte(0);
                fileStream.Flush();
            }
            Debug.Log("Written big file " + n);
        }
    }
    catch(IOException)
    {
    }

此方法写入所有60个文件(每个1 GB),我在资源管理器中看到所有这60个文件。但是-在磁盘属性中(在资源管理器中),我看到48 GB可用空间...我可以通过资源管理器复制这些文件之一-然后,我看到47 GB的可用空间。 我花了整整一天的时间试图了解,WTF正在继续...

三星Galaxy S8,Android 7.0

0 个答案:

没有答案