Download links for the impatient
File Read Test Java application or Perl script - reads disk files or directories and stops on the first read error
Quick Disk Test Java application - fills a disk with test data and verifies that it can be read back without errors
There are two types of tools in this page:
- The File Read Test tools read disk files or directories and stop on the first read error. There are two alternatives to choose from: a Java application (with a point-and-click user interface) and a perl script (to use from the command-line).
- The Quick Disk Test tool fills a disk with test data and verifies that it can be read back without errors. This tool is only available as a Java application.
Java application (point-and-click user interface)
File Read Test is a Java application with a point-and-click user interface that reads disk files or directories and stops on the first read error.
Download the latest version of the File Read Test Java application
You need the Java Runtime Environment to run this tool (tested with version 6 under Windows, use OpenJDK under Linux).
- You just burned a CD and want to verify that all data is readable. Comparing the CD contents against the original files is safer but slower and usually more cumbersome. An alternative point-and-click tool for this type of task would be CDCheck, by Mitja Perko.
- You want to check whether your user account is able to read all files under a particular directory. But beware: only those files that are at all visible to the current user are tested. Note that some other tool that only read the first or the last bytes of each file would be much faster for this kind of task.
- You want to check that there are no broken symbolic links in a particular directory.
- You want to do a quick, non-scientific read benchmark, to see how fast your CD drive or your memory stick can read sequential data.
- The data files you want to check are compressed archives (.zip, .bz2 and so on). This tool only checks that the file contents are readable, but it does not understand the data inside, so it cannot check whether the contents are actually OK. Most CD-ROM and hard disk drives record checksums along with the file contents and will promptly detect data corruption, at least if the problem lies on the physical disk surface. However, compressed archives carry their own data checksums, so it's safer to verify their integrity with a compressor like 7-Zip
- You want to burn many CDs with the same files and verify the data integrity as quickly as possible. You should generate checksums upfront and burn them together with the data files on the CDs. Look for a file checksum tool like md5deep
- You just recorded a CD and still have the original files on your hard disk. It's then safer to compare the files with a tool like WinMerge on Windows, or KDiff3 on Unix.
Version 1.05, released 5 June 2011, git tag "file-read-test-gui-1.05-1"
The reported number of tested files is now correct. Previously, it incorrectly included the number of directories too. Thanks to MegaTen88 for mentioning this bug.
Version 1.04, released 9 March 2011, git tag "file-read-test-gui-1.04-1"
This version contains some small user interface improvements.
Version 1.02, released 23 Jan 2011, git tag "file-read-test-1.02-1"
- Main bug fix: The timer period was off by 50%, so that the elapsed time ran slow and the reported speed was twice as high as the real one.
- Small internal improvements.
Version 1.00, released 21 Oct 2010, git tag "file-read-test-1.00-1"
Perl script (command-line program)
File Read Test is a command-line program that reads disk files or directories and stops on the first read error. See the counterpart Java application for examples of scenarios where this tool is useful.
Download the latest version of the File Read Test Perl script
You need a Perl interpreter to run this tool, but this is normally included in your Unix distribution. Tested under Windows with Active State's Perl version 5.8.x (search for the free, open-source version).
Documentation (man page)
Quick Disk Test is a Java application with a point-and-click user interface that fills a disk with test data and verifies that it can be read back without errors.
The test data is sufficiently random that it cannot be compressed or optimised away by smart disks or operating systems, but totally predictable so that the verification process can check at a later point in time that every byte read does have the expected value.
If the filling process is interrupted for whatever reason, it is possible to carry on the next time around without starting from scratch.
Download the latest version of Quick Disk Test
You need the Java Runtime Environment to run this tool (tested with version 6 under Windows, use OpenJDK under Linux, I also heard it works on a Mac).
- You want to verify that your USB stick can reliably store and deliver as much data back as promised. Some USB sticks have been known to have less capacity than advertised. An alternative tool for Windows for this type of task would be USB Memory Stick Tester by Silviu Simen.
- You want to check that your new hard disk works correctly, but you do not want to invest time in finding the right low-level tool for the job, as a quick, non-scientific test suffices. You also don't want to keep the drive locked for a long time while you test it.
- You want to quickly wipe (most of) the free space by filling the disk with random data, so that all deleted information is permanently destroyed, but you do not need to comply with any high-security standard. You also don't have to log in as a privileged user (Administrator/root) for this kind of job. Alternative tools for this type of task would be Eraser
- You want to test your network or web storage for speed, capacity and data reliability, but you don't need an accurate speed analysis.
- You want to generate pseudo-random test data for a CD in order to check that your CD burner works correctly.
- You want to do a quick, non-scientific read or write benchmark, to see how fast your hard disk or your memory stick can read and write sequential data. You may also want to see how good your hard disk or operating system multitasks when an application sequencially reads or writes large data quantities in the background.
- If the verification process is interrupted, it will restart from scratch the next time around. Only the filling process can continue where it left off. The test data is split into a number of files, so, as a work-around, you can move some of those files to another directory in order to test them separately. For each separate directory, the last file in the sequence is checked first, as it's the most likely to fail. After the last file is done, all other files in that directory are checked in ascending order. Note that you cannot split a test data file into two files, as the verification process canly ony check the content of whole files.
- The processor speed can limit the data rate. The test data generation algorithm is CPU intensive and still single threaded, therefore the disk throughput may not be the only bottleneck when writing or verifying the test data. The data generator runs on a background thread during the verification process, but not when filling the disk with new data (although the system's write-back cache usually compensates for this, at least for internal hard disks). Nevertheless, there is room for performance improvements, especially when running on slow CPUs with fast disk drives. The data generation process is actually a rather simple 32-bit integer algorithm operating on fast, flat byte arrays, but I haven't found a way to optimise it properly so that it runs as fast as it should on the Java 6 virtual machine. Or maybe the Java optimizer is not as smart as it could be. I guess this area needs some more research work.
All these disk test tools have been written by R. Diez, are open source and available under the GNU General Public version 3.
The source code is available at the SourceForge project page.
Please send feedback to rdiezmail-filereadtest at yahoo.de