2 File IO Questions (Phobos)

Zane zane.sims at gmail.com
Sat Nov 7 02:55:59 PST 2009


Hello all,

I have been looking at Phobos lately, and currently I am having some trouble understanding what is going on with the following 2 trivial examples.  First of all, I am using dmd v1.050.

This one prints "[‼   This is some stuff!]".  Where do the 4 prepended bytes come from?
(1) ---------------------------------------------------------------->

import std.stream;
import std.stdio;

int main()
{
	char[] stuff = "This is some stuff!";

	File f = new File("stuff.txt", FileMode.Out | FileMode.In);
	f.write(stuff);
	f.seekSet(0);
	stuff = f.readLine();
	writef("[%s]", stuff);
	f.close;

	return 0;
}


This one I wanted to have a class open a file upon initialization of an instance, and close a file when the destructor is called.  I get an "Error: Access Violation" unless I comment out the file.close line.  Why?  (of course this example also has the same problem as the first example, but I kept the first one simpler to narrow down things)
(2) ---------------------------------------------------------------->

import std.stream;

public class StuffWriter
{
	File file;

	this(char[] filename)
	{
		file = new File(filename, FileMode.Out);
	}

	~this()
	{
		file.close; //this causes an access violation???
	}

	public void write(char[] stuff)
	{
		file.write(stuff);
	}
}

int main()
{
	StuffWriter sw = new StuffWriter("stuff.txt");
	sw.write("This is some stuff!");

	return 0;
}


Thanks!
Zane


More information about the Digitalmars-d-learn mailing list