Always overwrite on output, ensure flushed streams

This commit is contained in:
Matt Nadareski
2025-09-21 21:03:38 -04:00
parent bf35b7c10b
commit e35ddf0780
28 changed files with 52 additions and 41 deletions

View File

@@ -112,8 +112,10 @@ namespace SabreTools.Serialization.Serializers
if (stream == null)
return false;
using var fs = File.OpenWrite(path);
using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None);
stream.CopyTo(fs);
fs.Flush();
return true;
}

View File

@@ -44,8 +44,10 @@ namespace SabreTools.Serialization.Serializers
if (stream == null)
return false;
using var fs = File.OpenWrite(path);
using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None);
stream.CopyTo(fs);
fs.Flush();
return true;
}

View File

@@ -57,8 +57,10 @@ namespace SabreTools.Serialization.Serializers
if (stream == null)
return false;
using var fs = File.OpenWrite(path);
using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None);
stream.CopyTo(fs);
fs.Flush();
return true;
}

View File

@@ -59,8 +59,10 @@ namespace SabreTools.Serialization.Serializers
if (stream == null)
return false;
using var fs = System.IO.File.OpenWrite(path);
using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None);
stream.CopyTo(fs);
fs.Flush();
return true;
}

View File

@@ -59,8 +59,9 @@ namespace SabreTools.Serialization.Serializers
if (stream == null)
return false;
using var fs = File.OpenWrite(path);
using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None);
stream.CopyTo(fs);
fs.Flush();
return true;
}

View File

@@ -100,8 +100,10 @@ namespace SabreTools.Serialization.Serializers
if (stream == null)
return false;
using var fs = File.OpenWrite(path);
using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None);
stream.CopyTo(fs);
fs.Flush();
return true;
}

View File

@@ -64,8 +64,9 @@ namespace SabreTools.Serialization.Serializers
if (stream == null)
return false;
using var fs = File.OpenWrite(path);
using var fs = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None);
stream.CopyTo(fs);
fs.Flush();
return true;
}

View File

@@ -78,7 +78,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using FileStream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
// Read the data block
var data = ReadRangeFromSource(offset, compressedSize);

View File

@@ -79,7 +79,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
fs.Write(data, 0, data.Length);
fs.Flush();
}

View File

@@ -37,7 +37,7 @@ namespace SabreTools.Serialization.Wrappers
Directory.CreateDirectory(directoryName);
// Extract the file
using FileStream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
bz2File.CopyTo(fs);
fs.Flush();

View File

@@ -88,7 +88,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using FileStream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
fs.Write(data);
fs.Flush();
}

View File

@@ -87,7 +87,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
// Now read the data sequentially and write out while we have data left
long fileSize = file.Size;

View File

@@ -111,7 +111,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = System.IO.File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
fs.Write(data, 0, data.Length);
fs.Flush();
}

View File

@@ -285,7 +285,7 @@ namespace SabreTools.Serialization.Wrappers
return false;
// Create the output file and hasher
FileStream output = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
var md5 = new HashWrapper(HashType.MD5);
long readBytesLeft = (long)GetReadableBytes(fileDescriptor);
@@ -313,7 +313,7 @@ namespace SabreTools.Serialization.Wrappers
{
Console.Error.WriteLine($"Failed to read {lengthArr.Length} bytes of file {index} ({GetFileName(index)}) from input cabinet file {fileDescriptor.Volume}");
reader.Dispose();
output?.Close();
fs?.Close();
return false;
}
@@ -324,7 +324,7 @@ namespace SabreTools.Serialization.Wrappers
{
Console.Error.WriteLine($"Failed to read {lengthArr.Length} bytes of file {index} ({GetFileName(index)}) from input cabinet file {fileDescriptor.Volume}");
reader.Dispose();
output?.Close();
fs?.Close();
return false;
}
@@ -343,7 +343,7 @@ namespace SabreTools.Serialization.Wrappers
{
Console.Error.WriteLine($"Decompression failed with code {result.ToZlibConstName()}. bytes_to_read={bytesToRead}, volume={fileDescriptor.Volume}, read_bytes={readBytes}");
reader.Dispose();
output?.Close();
fs?.Close();
return false;
}
@@ -360,7 +360,7 @@ namespace SabreTools.Serialization.Wrappers
{
Console.Error.WriteLine($"Failed to write {bytesToWrite} bytes from input cabinet file {fileDescriptor.Volume}");
reader.Dispose();
output?.Close();
fs?.Close();
return false;
}
@@ -371,7 +371,7 @@ namespace SabreTools.Serialization.Wrappers
// Hash and write the next block
bytesToWrite = Math.Min(bytesToWrite, writeBytesLeft);
md5.Process(outputBuffer, 0, (int)bytesToWrite);
output?.Write(outputBuffer, 0, (int)bytesToWrite);
fs?.Write(outputBuffer, 0, (int)bytesToWrite);
totalWritten += bytesToWrite;
writeBytesLeft -= bytesToWrite;
@@ -384,7 +384,7 @@ namespace SabreTools.Serialization.Wrappers
// Finalize output values
md5.Terminate();
reader?.Dispose();
output?.Close();
fs?.Close();
// Validate the data written, if required
if (MajorVersion >= 6)
@@ -422,7 +422,7 @@ namespace SabreTools.Serialization.Wrappers
return false;
// Create the output file
FileStream output = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
ulong bytesLeft = GetReadableBytes(fileDescriptor);
byte[] outputBuffer = new byte[BUFFER_SIZE];
@@ -435,7 +435,7 @@ namespace SabreTools.Serialization.Wrappers
{
Console.Error.WriteLine($"Failed to read {bytesToWrite} bytes from input cabinet file {fileDescriptor.Volume}");
reader.Dispose();
output?.Close();
fs?.Close();
return false;
}
@@ -443,12 +443,12 @@ namespace SabreTools.Serialization.Wrappers
bytesLeft -= (uint)bytesToWrite;
// Write the next block
output.Write(outputBuffer, 0, (int)bytesToWrite);
fs.Write(outputBuffer, 0, (int)bytesToWrite);
}
// Finalize output values
reader.Dispose();
output?.Close();
fs?.Close();
return true;
}

View File

@@ -50,7 +50,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
decompressor.CopyTo(fs);
fs.Flush();
}

View File

@@ -46,7 +46,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
decompressor.CopyTo(fs);
fs.Flush();
}

View File

@@ -57,7 +57,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
decompressor.CopyTo(fs);
fs.Flush();
}

View File

@@ -236,7 +236,7 @@ namespace SabreTools.Serialization.Wrappers
Directory.CreateDirectory(directoryName);
// Open the output file for writing
using var fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
fs.Write(fileData, 0, fileData.Length);
fs.Flush();
}

View File

@@ -67,7 +67,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = System.IO.File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
fs.Write(data, 0, data.Length);
fs.Flush();
}

View File

@@ -65,7 +65,7 @@ namespace SabreTools.Serialization.Wrappers
Directory.CreateDirectory(directoryName);
// Create the output file
using FileStream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
// Read the data block
var data = ReadRangeFromSource(offset, size);

View File

@@ -100,10 +100,9 @@ namespace SabreTools.Serialization.Wrappers
// try
// {
// // Open the output file for writing
// using (Stream fs = File.OpenWrite(filename))
// {
// fs.Write(data, 0, data.Length);
// }
// using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
// fs.Write(data, 0, data.Length);
// fs.Flush();
// }
// catch
// {

View File

@@ -136,7 +136,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = System.IO.File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
fs.Write(data, 0, data.Length);
fs.Flush();
}

View File

@@ -72,7 +72,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
fs.Write(data, 0, data.Length);
fs.Flush();
}

View File

@@ -79,7 +79,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
fs.Write(data, 0, data.Length);
fs.Flush();
}

View File

@@ -130,7 +130,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
fs.Write(data, 0, data.Length);
fs.Flush();
}

View File

@@ -67,7 +67,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
fs.Write(data, 0, data.Length);
fs.Flush();
}

View File

@@ -44,7 +44,7 @@ namespace SabreTools.Serialization.Wrappers
Directory.CreateDirectory(directoryName);
// Extract the file
using FileStream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
xzFile.CopyTo(fs);
fs.Flush();

View File

@@ -76,7 +76,7 @@ namespace SabreTools.Serialization.Wrappers
try
{
// Open the output file for writing
using Stream fs = File.OpenWrite(filename);
using var fs = File.Open(filename, FileMode.Create, FileAccess.Write, FileShare.None);
fs.Write(data, 0, data.Length);
fs.Flush();
}