Tengo un archivo binario que es realmente una pila de archivos, el formato es:¿Cómo leo un BufferedFile usando read (ubyte [] buffer) cuando la longitud del buffer se establece en tiempo de ejecución?
lengh_of_subfile,subfile
length_of_subfile
es un número entero de 64 bits. Puedo leer el long
sin problemas, pero cuando trato de crear un búfer para el subarchivo recibo errores de compilación que dicen que no se puede leer en tiempo de compilación. ¿Qué me estoy perdiendo? He escrito una herramienta de extracción idéntica en erlang, PHP y C# ... D me está tirando por un bucle.
void main(string args[]) {
Stream file = new BufferedFile(args[1], FileMode.In);
int counter = 0;
while(file.position < file.size) {
ulong len;
file.read(len);
ubyte[len] ogg;
file.read(ogg);
string outname = getcwd() ~ "/" ~ to!string(counter) ~ ".ogg";
Stream oggout = new BufferedFile(outname, FileMode.OutNew);
oggout.write(ogg);
writefln("Creating file " ~ to!string(counter) ~ ".ogg");
counter++;
}
}
Necesita una [matriz dinámica] (http: // stackoverflow.com/questions/8363728/d-dynamic-array-initialization-stride-and-the-index-operation). (No tengo idea de cómo, sin embargo, porque no programo en D) – Ryan