return file from memory

Charma Motoko_Kusanagi at web.de
Fri May 25 04:09:29 PDT 2007


Charma Wrote:

> 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?



I'm very sorry... the stupid me forgot to seek to position 0 again before reading! Everything works perfect now! Thanks a lot! 



More information about the Digitalmars-d mailing list