17#if __DCL_HAVE_ALLOC_DEBUG
18#undef __DCL_ALLOC_LEVEL
19#define __DCL_ALLOC_LEVEL __DCL_ALLOC_INTERNAL
41FileOutputStream::FileOutputStream(
const String& _path,
bool _truncate)
45 open(_path, _truncate);
54 switch (_pFile->fileType())
61 DWORD dwOutBufferSize = 0;
62 if (GetNamedPipeInfo(_pFile->handle(),
NULL, &dwOutBufferSize,
NULL,
NULL))
69 if (fstat(_pFile->handle(), &st))
71 if (S_ISBLK(st.st_mode))
78FileOutputStream::FileOutputStream(
File& _file)
83 __closeDestroy =
false;
86FileOutputStream::FileOutputStream(File::HandleType _handle)
89 File* pFile =
new File(_handle, 0,
false);
98 __closeDestroy =
true;
113 __closeDestroy =
true;
116void FileOutputStream::open(
const String& _path,
bool _truncate)
122 File* pFile =
new File(_path, File::WRITEONLY | File::CREATE
123 | (_truncate ? File::TRUNCATE : File::APPEND));
134 __closeDestroy =
true;
137FileOutputStream::~FileOutputStream()
145 catch (IOException* e)
154void FileOutputStream::close()
164 catch (Exception* cause)
185 catch (Exception* cause)
203 size_t n = _file->
write(_buf + written, _nbytes);
219void FileOutputStream::flush()
231OutputStream& FileOutputStream::write(
const void* _buf,
size_t _nbytes)
247 size_t n = (size_t)_nbytes;
249 size_t nCopySize = __bufSize - __dataSize;
250 if ((__dataSize > 0) || (nCopySize >
n))
256 __buf = (
byte_t*)malloc(__bufSize);
262 memcpy(__buf + __dataSize,
buf, nCopySize);
263 __dataSize += nCopySize;
268 if (__dataSize == __bufSize)
283 size_t nBlockWrite = (
n / __bufSize) * __bufSize;
284 nCopySize =
n % __bufSize;
287 size_t written =
__write(__file,
buf, nBlockWrite);
298 __buf = (
byte_t*)malloc(__bufSize);
302 memcpy(__buf,
buf, nCopySize);
303 __dataSize += nCopySize;
size_t __write(File *_file, const byte_t *_buf, size_t _nbytes)
#define __DCL_TRACE1(fmt, arg1)
#define __DCL_ASSERT_PARAM(expr)
#define __DCL_ASSERT(expr)
#define IMPLEMENT_CLASSINFO(class_name, base_class_name)
#define __DCL_ASSERT_HANDLE(expr)
void CharsetConvertException *size_t n
virtual void close() __DCL_THROWS1(IOException *)
virtual String toString() const
virtual size_t write(const void *_buf, size_t _n) __DCL_THROWS1(IOException *)
void init(File *_pFile) __DCL_THROWS1(IOException *)
virtual String toString() const
virtual String toString() const
static void sleep(unsigned int _mills)