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