如果sd卡格式化为fat(fat16),一个文件夹不能放超过65534个文件,但是根文件夹有512个文件的限制。
如果它被格式化为 fat32,目录没有文件限制。
但无论哪种情况,簇大小都会影响文件的分配。来自微软文档
随着群集大小的增加,FAT16 会浪费较大驱动器中的文件存储空间。为存储文件分配的空间基于集群分配粒度的大小,而不是文件大小。存储在 32 KB 集群中的 10 KB 文件会浪费 22 KB 磁盘空间。
FAT32 比 FAT16 更有效地使用空间。FAT32 使用较小的集群(最大 8 GB 的驱动器为 4 KB),与大型 FAT16 驱动器相比,磁盘空间的使用效率提高了 10% 到 15%。FAT32 还减少了计算机运行所需的资源。
检查你的文件系统
编辑
测试/调整这个批处理文件。它将在磁盘中生成一个 32kb 的文件,然后对其进行复制,直到复制命令失败。
@echo off
setlocal enableextensions enabledelayedexpansion
set fillFileName=fillDisk%random%_
set fillFileExtension=.dat
set fillFile=%~dp0%fillFileName%%fillFileExtension%
rem create a file to replicate to fill disk
call :createFile "%fillFile%"
rem Let's fill the disk
set fileCount=0
:loop
rem do copy file
copy "%fillFile%" "%~dp0%fillFileName%%fileCount%%fillFileExtension%" /y >nul 2>nul
if errorlevel 1 (
rem file copy failed.
goto endProcess
)
rem copy ok - increment counter
set /a fileCount=fileCount+1
rem print indicator on console (show it is working)
echo.|set /p=.
rem go to do a new file copy
goto loop
:endProcess
rem show final information
echo.
echo [ %fileCount% ] files copied
echo.
rem disk filled - optional - delete all generated files
del "%~dp0%fillFileName%*%fillFileExtension%"
rem clean and exit
endLocal
exit /b
:createFile
rem define a 2k buffer ( 32 * 2^6 )
set fill=012345678901234567890123456789..
for /L %%i in (1 1 6) do set fill=!fill!!fill!
rem correction for crlf at end when output
set fill=%fill:~0,-2%
rem output buffer to indicated file (32 kb = 2kb * 16)
(
for /L %%i in (1 1 16) do echo %fill%
) > "%~1"
set fill=
goto :EOF