woooooooooooot??
Hola. ¿Qué es lo que no se ha entendido de mi comentario?. Propuse dos técnicas diferentes, con la primera me refería simplemente a reemplazar el documento original por un archivo "nulo" (tamaño: 0 bytes), o lo segundo es algo más sofisticado o digamos "camuflado" al ojo humano, sería reemplazar el documento original por un archivo dummy del mismo tamaño que el documento (el tamaño resultante sería "ficticio").
Vendría a ser lo que dijo @Engel Lex al final de su comentario, un archivo con basura, solo que con ciertos beneficios de eficiencia, el primero de todos es que evitamos la necesidad de desarrollar un algoritmo que genere bytes aleatorios (basura) para calcular y ocupar el espacio, serían simplemente
zero-bytes, y gracias a esto el tiempo de ejecución necesario para la creación del archivo resultante se reduce a "cero" (tenga el tamaño que tenga, aunque generemos un archivo de 1 TeraByte, no tardará ni 50 ms en generarse), igual que si usamos cualquier herramienta de compresión para comprimir el archivo resultante, el ratio de compresión será 0%, al hacer la prueba con WinRAR por ejemplo, comprimir 1 GB de archivo dummy = un archivo RAR resultante de 523 kb (tamaño comprimido del archivo = 536 bytes).
Esta técnica se suele utilizar para crear un archivo de tamaño determinado en el que ir rellenando los datos/bytes, pero en este caso evidentemente no rellenariamos nada.
Ejemplo en Batch:
:: 1 GB filesize
FsUtil.exe File CreateNew "C:\DummyFile.tmp" 1073741824
Ejemplo en VB.NET:
Imports System.Diagnostics
Imports System.IO
''' ----------------------------------------------------------------------------------------------------
''' <summary>
''' Creates a dummy file (zero-filled) of the specified filesize.
''' </summary>
''' ----------------------------------------------------------------------------------------------------
<DebuggerStepThrough>
Public Shared Sub CreateDummyFile(ByVal filepath As String, ByVal size As Long)
If File.
Exists(filepath
) Then Throw New IOException(message:="Target file already exists.")
Else
Dim bufferSize As Integer = 4096 ' 4 KB.
Using fs As New FileStream(filepath, FileMode.CreateNew, FileAccess.Write, FileShare.Read, bufferSize)
fs.SetLength(size)
End Using
End If
End Sub
CreateDummyFile("C:\DummyFile.tmp", CLng(1024L ^ 3L)) ' 1 GB filesize.
Ejemplo en C#:
using System.Diagnostics;
using System.IO;
/// ----------------------------------------------------------------------------------------------------
/// <summary>
/// Creates a dummy file (zero-filled) of the specified filesize.
/// </summary>
/// ----------------------------------------------------------------------------------------------------
[DebuggerStepThrough()]
public static void CreateDummyFile(string filepath, long size) {
if (File.Exists(filepath)) {
throw new IOException
(message
: "Target file already exists.");
} else {
int bufferSize = 4096; // 4 KB.
using (FileStream fs
= new FileStream
(filepath, FileMode
.CreateNew, FileAccess
.Write, FileShare
.Read, bufferSize
)) { fs.SetLength(size);
}
}
}
CreateDummyFile("C:\\DummyFile.tmp", Convert.ToInt64(Math.Pow(1024L, 3L))); // 1 GB filesize.
Saludos!