ID Number: Q63874
3.20 3.21 3.30 3.30a 4.00 4.01
MS-DOS
Question:
My application uses four data files, each of which may be as large as
34 MB. The names of these files will never change, but the sizes
change from day to day, due to the nature of my application. These
files reside on a partition that is reserved for my application only.
The data files will be the only things on that partition.
With my data files being so large, it would help if the data in the
files could remain contiguous. Unfortunately, when I rewrite the data
to the files, the data does not remain contiguous.
How can I keep the data contiguous in each file?
Response:
Listed below is one way to keep the data contiguous in your files:
1. Start with your data files being as large as they will ever become.
2. Format the partitions where the data files will reside.
3. Create four 34 MB files with the names of your data files. There
are many different ways to do this. Two different methods are
as follows:
a. Fill each file full of zeros or some other spacer until it is
34 MB in size.
b. Use the lseek() C function to open a file that is 34 MB and then
write 0 (zero) bytes to it.
However you do it, you need to end up with four files that are 34
MB in length.
4. In your application, make sure that you write over the data files,
rather than deleting them and then writing them to disk again.
When your application begins writing data to the file, a file with
the same name already exists on the disk, so the data will write
over the existing data in the same cluster order as the original
file.
Since the partition had been formatted before the four large files
had been created, when you create the four large files, the
clusters within each file will be contiguous (with the exception of
clusters that have been marked as bad).
It will make no difference if the size of each file changes, as
long as the size does not exceed the size of the original spacer
file (again, in this case, it would be 34 MB).