RosettaCodeData/Task/Truncate-a-file/D/truncate-a-file.d
Ingy döt Net 68f8f3e56b all tasks
2013-04-11 01:07:29 -07:00

22 lines
592 B
D

import std.file, std.exception;
void truncateFile(in string name, in size_t newSize) {
if (!exists(name) || !isFile(name))
throw new Exception("File not found.");
auto size = getSize(name);
if (size <= newSize)
throw new Exception(
"New size must be smaller than original size.");
auto content = cast(ubyte[])read(name, newSize);
if (content.length != newSize)
throw new Exception("Reading file failed.");
write(name, content);
enforce(getSize(name) == newSize);
}
void main() {
truncateFile("truncate_test.txt", 0);
}