As with what the answer in the link for the question says, if you want to overwrite it, you can't simply replace the data.
It just like when writing with a pencil on a paper, once you write, you can't write over it because it won't look right. So you have to erase it.
It is compounded by the fact of blocks/sectors. Everytime you want to overwrite a block, you must erase the block, then write it.
“Erasing is slower than writing.” - David Schwartz
Ex. [000000000000000000000000000000000000000000000000]
is a block with each block holding 48 bytes. The thoeretical USB has 5 blocks, with a storage of 240B. Erasing and writing speed is the same at 1 byte/s.
You create a text file that says 'foo'. It is written to the first block.
Before:
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
After:
[010001100100111101001111000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
So one block has been modified/written. Now if you want to overwrite and the content is 'bar'. You first have to erase it. (I don't know whether you zeroes the zeroes).
Current:
[010001100100111101001111000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
Zeroing:
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
Erasing:
[111111111111111111111111111111111111111111111111]
[111111111111111111111111111111111111111111111111]
[111111111111111111111111111111111111111111111111]
[111111111111111111111111111111111111111111111111]
[111111111111111111111111111111111111111111111111]
Writing:
[010000100100000101010010000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
[000000000000000000000000000000000000000000000000]
As you can see, you have more operations in overwriting.
If you delete it, then you simply remove the file pointer and it exist as raw data. Then you simply erase then write.