| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | /******************************************************************************* copyright: Copyright (c) 2007 Kris Bell. All rights reserved license: BSD style: $(LICENSE) version: Initial release: Nov 2007 author: Kris *******************************************************************************/ module tango.io.stream.DataFile; private import tango.io.device.File; private import tango.io.stream.Data; /******************************************************************************* Composes a seekable file with buffered binary input. A seek causes the input buffer to be cleared. *******************************************************************************/ class DataFileInput : DataInput { private File conduit; /*********************************************************************** Compose a FileStream. ***********************************************************************/ this (char[] path, File.Style style = File.ReadExisting) { this (new File (path, style)); } /*********************************************************************** Wrap a File instance. ***********************************************************************/ this (File file) { super (conduit = file); } /*********************************************************************** Return the underlying conduit. ***********************************************************************/ final File file () { return conduit; } } /******************************************************************************* Composes a seekable file with buffered binary output. A seek causes the output buffer to be flushed first. *******************************************************************************/ class DataFileOutput : DataOutput { private File conduit; /*********************************************************************** Compose a FileStream. ***********************************************************************/ this (char[] path, File.Style style = File.WriteCreate) { this (new File (path, style)); } /*********************************************************************** Wrap a FileConduit instance. ***********************************************************************/ this (File file) { super (conduit = file); } /*********************************************************************** Return the underlying conduit. ***********************************************************************/ final File file () { return conduit; } } debug (DataFile) { import tango.io.Stdout; void main() { auto myFile = new DataFileOutput("Hello.txt"); myFile.write("some text"); myFile.flush; Stdout.formatln ("{}:{}", myFile.file.position, myFile.seek(myFile.Anchor.Current)); } } |