return file from memory

Charma Motoko_Kusanagi at web.de
Fri May 25 04:00:07 PDT 2007


Bill Baxter Wrote:

> Charma wrote:
> > Once again i have a problem abusing this forum for help, sorry.
> 
> You might consider posting these questions to digitalmars.d.learn 
> instead.  Then no one would have a reason to complain.
> 
> > I am looking for a way to return a part of a File in a function without writing it to hdd but sending the part itself as a File.
> > Maybe someone has an idea how to do that?
> > 
> > File myfunction(...requestedPart...)
> > {
> >   File bigfile = new File(bigfilename, FileMode.In);
> >   ...
> >   bigfile.read(request, requested part);
> >   ...
> >   return request;
> > }
> > 
> > Now i want this "request" not to be a string with the content but a File-Type itself without saving it to hdd. I want it to be saved in memory only but be able to handle same like File-type. Anything like that possible?
> > Maybe i need to make my own class from File or something?!?
> > Thanks for any help!
> 
> Probably you want to look at std.stream.MemoryStream.
> 
> --bb


Thanks, i have tryed MemoryStream now but it looks like read(), readLine() and so on don't work anymore..

MemoryStream loadFile(char[] fname)
{
	BufferedFile load = new BufferedFile(fname, FileMode.In);
	...
	...seek(..)
	ubyte[] buff;
	buff.length = sizeOfRequestedFile;
	...
	load.read(buff);
	writefln(buff); // <-- up to here it seems to work perfectly
	...
	MemoryStream Request = new MemoryStream; 
	Request.reserve(sizeOfRequestedFile);
	
	Request.write(buff); // here i write it into the MemoryStream
	
	return Request;
}


this is where i use it:

MemoryStream xy = bla.loadFile("text3.txt");

char[] asd;
while(!xy.eof())
{
	xy.readLine(asd);
	writefln("xy: ", asd);
}
i get no output for some reason... the MemoryStream seems to be empty still... but no compiler-errors... What did i do wrong?



More information about the Digitalmars-d mailing list