我有一个二进制文件,它实际上是一堆文件,格式为:
lengh_of_subfile,subfile
Run Code Online (Sandbox Code Playgroud)
length_of_subfile是一个64位整数.我可以读取long没问题,但是当我尝试为子文件创建缓冲区时,我得到编译错误,说它在编译时无法读取.我错过了什么?我在erlang,PHP和C#中写了一个相同的提取工具...... D让我循环.
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++;
}
}
Run Code Online (Sandbox Code Playgroud)
代替
ubyte[len] ogg;
Run Code Online (Sandbox Code Playgroud)
写
ubyte[] ogg = new ubyte[len];
Run Code Online (Sandbox Code Playgroud)