Problem: You are trying to copy a small file to a USB device with lots of room on it but can’t. Why not?
The most likely answer is that the root directory of the USB device is full. USB devices are typically formatted using the FAT file system to allow for maximum compatibility. When originally designed, the FAT file system had file names consisting of eight character names with three character extensions, the so-called 8.3 format. When Windows 95 came out, Microsoft wanted to have it handle longer and more descriptive file names but was basically stuck with the FAT file system. So, they came up with VFAT where, by using a trick, they could put long file names into the directory by taking up several directory entries for a single file name.
But, this causes some unexpected problems with FAT devices. The number of directory entries in a FAT file system is limited in the root directory of the device. This table shows the limits…
|Type of Storage||Max Root Directory Entries|
|360 kB 5.25″ Floppy Disk||112|
|720 kB 3.5″ Floppy Disk||112|
|1.2 MB 5.25″ Floppy Disk||224|
|1.44 MB 3.5″ Floppy Disk||224|
|2.88 MB 3.5″ Floppy Disk||448|
In general, USB devices would be considered hard disks under this system and be limited to 512 root directory entries. But, that doesn’t mean you can put 512 files in the root directory of the device. Remember the VFAT that uses a trick for long file names? Well, the trick is to use multiple spots in the directory for the longer file names and the longer the file name, the more directory entries it uses. So, if you have enough long file names in the root directory of the device, even though you have not reached your 512 file maximum, the root directory can still be full and not able to accept more files; no matter how much free space there is on the device.
The extra directory entries are tagged as read-only, hidden, system, and volume label attributes. This combination is generally ignored by DOS as it is non-standard but, at the same time, the markings tell DOS that the directory entry is occupied. This is a very unusual solution to a difficult problem and therefore sometimes causes unanticipated problems. One of these is the root directory full problem described here.
OK, how do you fix it? Well, you can’t fix the basis of the problem; that’s written into the file system. However, you can work around it. Subdirectories do not have the limits of the root directory as they expand as needed. So, the workaround is to remove at least one file from the affected device and then create a subdirectory (folder) on the device. Copy all new files (and maybe some or all of the old files) into the subdirectory. Problem solved and you can now fill the device as full as you can with files.