Thread overview
how to save / load files with D
May 15, 2004
clayasaurus
May 15, 2004
Walter
May 15, 2004
J C Calvarese
May 15, 2004
clayasaurus
May 15, 2004
J Anderson
May 15, 2004
hello, i'm wondering what is the best way to save / load files in D. Right now i'm  using fopen fread fwrite and ftell to save and load files like this

int main(char[][] argv)
{
int bob = 7;

cTest test = new cTest(4,4,4);

FILE *pFile;

// write file
pFile = fopen("testio","wb"); // open new file for writing
fwrite(&bob, (ftell(pFile)+1), int.sizeof, pFile);
fwrite(test, (ftell(pFile)+1), cTest.sizeof, pFile);
fclose(pFile); // close file


// change values
bob = 8;
printf("%d\n", bob);

test = new cTest(5,6,7);
test.print();


// read file
pFile = fopen("testio","rb"); // openfile for reading
fread(&bob, (ftell(pFile)+1), int.sizeof, pFile);
fread(test, (ftell(pFile)+1), cTest.sizeof, pFile);
fclose(pFile);

printf("%d\n", bob);
test.print();

return 0;
}

are there some built in D features to make saving/loading to files easier : ) or do i pretty much have it down? Also, for some reason i get a seg fault if i just try to read a file without calling the write file function and i can't figure out why. i need to find a reliable save / load method.


May 15, 2004
You can do it just as you would in C, or you can use std.file.read() and
std.file.write().


May 15, 2004
clayasaurus wrote:
> hello, i'm wondering what is the best way to save / load files in D. Right now
> i'm  using fopen fread fwrite and ftell to save and load files like this

I don't know if it's the best way, but I usually use std.stream: http://www.digitalmars.com/d/phobos.html#stream

Here's an example of reading in a file:
http://www.dsource.org/tutorials/index.php?show_example=28


> int main(char[][] argv)
> {
> int bob = 7;
> 
> cTest test = new cTest(4,4,4);
> 
> FILE *pFile;
> 
> // write file
> pFile = fopen("testio","wb"); // open new file for writing
> fwrite(&bob, (ftell(pFile)+1), int.sizeof, pFile);
> fwrite(test, (ftell(pFile)+1), cTest.sizeof, pFile);
> fclose(pFile); // close file
> 
> 
> // change values
> bob = 8;
> printf("%d\n", bob);
> 
> test = new cTest(5,6,7);
> test.print();
> 
> 
> // read file
> pFile = fopen("testio","rb"); // openfile for reading
> fread(&bob, (ftell(pFile)+1), int.sizeof, pFile);
> fread(test, (ftell(pFile)+1), cTest.sizeof, pFile);
> fclose(pFile);
> 
> printf("%d\n", bob);
> test.print();
> 
> return 0;
> }
> 
> are there some built in D features to make saving/loading to files easier : ) or
> do i pretty much have it down? Also, for some reason i get a seg fault if i just
> try to read a file without calling the write file function and i can't figure
> out why. i need to find a reliable save / load method. 


-- 
Justin (a/k/a jcc7)
http://jcc_7.tripod.com/d/
May 15, 2004
In article <c8446u$2jb7$1@digitaldaemon.com>, J C Calvarese says...
>
>clayasaurus wrote:
>> hello, i'm wondering what is the best way to save / load files in D. Right now i'm  using fopen fread fwrite and ftell to save and load files like this
>
>I don't know if it's the best way, but I usually use std.stream: http://www.digitalmars.com/d/phobos.html#stream
>
>Here's an example of reading in a file: http://www.dsource.org/tutorials/index.php?show_example=28

Ok, I've decided to use the std.stream as well. However, there is a slight problem. Why doesn't the std.stream support reading and writing the 'bit' data type? I could just use an int, but I'd rather use bit because it is smaller.


May 15, 2004
clayasaurus wrote:

>In article <c8446u$2jb7$1@digitaldaemon.com>, J C Calvarese says...
>  
>
>>clayasaurus wrote:
>>    
>>
>>>hello, i'm wondering what is the best way to save / load files in D. Right now
>>>i'm  using fopen fread fwrite and ftell to save and load files like this
>>>      
>>>
>>I don't know if it's the best way, but I usually use std.stream: http://www.digitalmars.com/d/phobos.html#stream
>>
>>Here's an example of reading in a file:
>>http://www.dsource.org/tutorials/index.php?show_example=28
>>    
>>
>
>Ok, I've decided to use the std.stream as well. However, there is a slight
>problem. Why doesn't the std.stream support reading and writing the 'bit' data
>type? I could just use an int, but I'd rather use bit because it is smaller. 
>
>
>  
>
I would imagine that it would be difficult to implement a bit type into a stream without adding padding.  Of course bit-arrays are a different story all together.

-- 
-Anderson: http://badmama.com.au/~anderson/