本文整理汇总了C#中System.IO.FileStream.WriteValueS32方法的典型用法代码示例。如果您正苦于以下问题:C# FileStream.WriteValueS32方法的具体用法?C# FileStream.WriteValueS32怎么用?C# FileStream.WriteValueS32使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.IO.FileStream
的用法示例。
在下文中一共展示了FileStream.WriteValueS32方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MakeCache
private void MakeCache(String filename, String biopath)
{
Random r = new Random();
using (FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write))
{
for (int i = 0; i < 4; i++)
fs.WriteValueS32(r.Next());
}
}
示例2: appendSave
//.........这里部分代码省略.........
rtValues += stream.Position + " ";
//throw new FileNotFoundException();
stream.Write(changedExports[0].header, 32, 8);
}
}
byte[] oldPCC = new byte[lastDataOffset];//Check whether compressed
using (FileStream oldPccStream = new FileStream(this.FileName, FileMode.Open))
{
//Read the original data up to the last export
oldPccStream.Read(oldPCC, 0, lastDataOffset);
}
//Start writing the new file
using (FileStream newPCCStream = new FileStream(newFileName, FileMode.Create))
{
newPCCStream.Seek(0, SeekOrigin.Begin);
//Write the original file up til the last original export (note that this leaves in all the original exports)
newPCCStream.Write(oldPCC, 0, lastDataOffset);
if (!attemptOverwrite)
{
//If we're not trying to overwrite then just append all the changed exports
foreach (ExportEntry export in changedExports)
{
export.DataOffset = (int)newPCCStream.Position;
export.DataSize = export.Data.Length;
newPCCStream.Write(export.Data, 0, export.Data.Length);
}
}
else
{
//If we are then move to each offset and overwrite the data with the new exports
foreach (ExportEntry export in replaceExports)
{
//newPCCStream.Position = export.DataOffset;
newPCCStream.Seek(export.DataOffset, SeekOrigin.Begin);
export.DataSize = export.Data.Length;
newPCCStream.Write(export.Data, 0, export.Data.Length);
}
//Then move to the end and append the new data
//newPCCStream.Position = lastDataOffset;
newPCCStream.Seek(lastDataOffset, SeekOrigin.Begin);
foreach (ExportEntry export in changedExports)
{
export.DataOffset = (int)newPCCStream.Position;
export.DataSize = export.Data.Length;
newPCCStream.Write(export.Data, 0, export.Data.Length);
}
}
//Set the new nameoffset and namecounts
NameOffset = (int)newPCCStream.Position;
NameCount = Names.Count;
//Then write out the namelist
foreach (NameEntry name in Names)
{
newPCCStream.WriteValueS32(name.name.Length + 1);
newPCCStream.WriteString(name + "\0", (uint)(name.name.Length + 1), Encoding.ASCII);
newPCCStream.WriteValueS32(name.unk);
newPCCStream.WriteValueS32(name.flags);
}
//Move to the name info position in the header - not a strong piece of code, but it's working so far
//newPCCStream.Position = 34;
newPCCStream.Seek(HeadeNameOffset, SeekOrigin.Begin);
//And write the new info
byte[] nameHeader = new byte[8];
byte[] nameCount = BitConverter.GetBytes(NameCount);
byte[] nameOff = BitConverter.GetBytes(NameOffset);
for (int i = 0; i < 4; i++)
nameHeader[i] = nameCount[i];
for (int i = 0; i < 4; i++)
nameHeader[i + 4] = nameOff[i];
newPCCStream.Write(nameHeader, 0, 8);
//update the import list
newPCCStream.Seek(ImportOffset, SeekOrigin.Begin);
foreach (ImportEntry import in Imports)
{
newPCCStream.Write(import.header, 0, import.header.Length);
}
//Finally, update the export list
newPCCStream.Seek(ExportOffset, SeekOrigin.Begin);
foreach (ExportEntry export in Exports)
{
newPCCStream.Write(export.header, 0, export.header.Length);
}
if (!attemptOverwrite)
{
using (FileStream stream = new FileStream(loc + "\\exec\\infoCache.bin", FileMode.Append))
{
stream.Seek(0, SeekOrigin.End);
rtValues += stream.Position + " ";
stream.Write(changedExports[0].header, 32, 8);
}
}
}
return rtValues;
}
示例3: WriteModHeader
/// <summary>
/// Writes the first invariable parts of a .mod (version, number of jobs) to FileStream.
/// </summary>
/// <param name="fs">FileStream to write to.</param>
/// <param name="jobcount">Number of jobs. Exists because it's not always JobList.Count.</param>
public static void WriteModHeader(FileStream fs, int jobcount)
{
// KFreon: Write version
string version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
fs.Seek(0, SeekOrigin.Begin);
//byte[] length = BitConverter.GetBytes(version.Length);
//fs.WriteBytes(length);
fs.WriteValueS32(version.Length);
foreach (char c in version)
fs.WriteByte((byte)c);
// KFreon: Write number of jobs to be included in this .mod
fs.WriteValueS32(jobcount);
DebugOutput.PrintLn("Version: " + version);
DebugOutput.PrintLn("Number of jobs: " + jobcount);
}
示例4: WriteJobToFile
/// <summary>
/// Write current job to fileStream.
/// </summary>
/// <param name="fs">FileStream to write to.</param>
public void WriteJobToFile(FileStream fs)
{
// KFreon: Write job name
//fs.WriteBytes(BitConverter.GetBytes(Name.Length));
fs.WriteValueS32(Name.Length);
foreach (char c in Name)
fs.WriteByte((byte)c);
// KFreon: Write script
//fs.WriteBytes(BitConverter.GetBytes(Script.Length));
fs.WriteValueS32(Script.Length);
foreach (char c in Script)
fs.WriteByte((byte)c);
// KFreon: Write job data
//fs.WriteBytes(BitConverter.GetBytes(data.Length));
fs.WriteValueS32(data.Length);
fs.WriteBytes(data);
}
示例5: altSaveToFile
//.........这里部分代码省略.........
}
* */
#endregion
}
//Start writing the new file
using (FileStream newPCCStream = new FileStream(newFileName, FileMode.Create))
{
Console.WriteLine();
Console.WriteLine("Starting Save");
newPCCStream.Seek(0, SeekOrigin.Begin);
Console.WriteLine("newPCCStream length: " + newPCCStream.Length);
//Write the original file up til the last original export (note that this leaves in all the original exports)
newPCCStream.Write(oldPCC, 0, lastDataOffset);
Console.WriteLine("OldPCC length: " + oldPCC.Length);
Console.WriteLine("lastDataOFfset: " + lastDataOffset);
Console.WriteLine("overwriting?: " + attemptOverwrite);
if (!attemptOverwrite)
{
//If we're not trying to overwrite then just append all the changed exports
foreach (ME3ExportEntry export in changedExports)
{
export.DataOffset = (uint)newPCCStream.Position;
export.DataSize = export.Data.Length;
newPCCStream.Write(export.Data, 0, export.Data.Length);
}
}
else
{
Console.WriteLine("replaceExports count: " + replaceExports.Count);
//If we are then move to each offset and overwrite the data with the new exports
foreach (ME3ExportEntry export in replaceExports)
{
//newPCCStream.Position = export.DataOffset;
newPCCStream.Seek(export.DataOffset, SeekOrigin.Begin);
export.DataSize = export.Data.Length;
newPCCStream.Write(export.Data, 0, export.Data.Length);
//Console.WriteLine("exports.DataOffset: " + export.DataOffset);
//Console.WriteLine("export datalength: " + export.Data.Length);
}
//Then move to the end and append the new data
//newPCCStream.Position = lastDataOffset;
newPCCStream.Seek(lastDataOffset, SeekOrigin.Begin);
Console.WriteLine("changedExports count: " + changedExports.Count);
foreach (ME3ExportEntry export in changedExports)
{
export.DataOffset = (uint)newPCCStream.Position;
//Console.WriteLine("newstream position: " + newPCCStream.Position);
export.DataSize = export.Data.Length;
//Console.WriteLine("export size: " + export.DataSize);
newPCCStream.Write(export.Data, 0, export.Data.Length);
//Console.WriteLine("datalength: " + export.Data.Length);
}
}
//Set the new nameoffset and namecounts
NameOffset = (int)newPCCStream.Position;
Console.WriteLine("nameoffset: " + NameOffset);
NameCount = Names.Count;
Console.WriteLine("namecount: " + Names.Count);
//Then write out the namelist
foreach (string name in Names)
{
//Console.WriteLine("name: " + name);
newPCCStream.WriteValueS32(-(name.Length + 1));
newPCCStream.WriteString(name + "\0", (uint)(name.Length + 1) * 2, Encoding.Unicode);
}
Console.WriteLine("newPCCStream.length: " + newPCCStream.Length);
//Move to the name info position in the header - not a strong piece of code, but it's working so far
//newPCCStream.Position = 34;
newPCCStream.Seek(HeadeNameOffset, SeekOrigin.Begin);
Console.WriteLine("headernameoffset: " + HeadeNameOffset);
//And write the new info
byte[] nameHeader = new byte[8];
byte[] nameCount = BitConverter.GetBytes(NameCount);
byte[] nameOff = BitConverter.GetBytes(NameOffset);
for (int i = 0; i < 4; i++)
nameHeader[i] = nameCount[i];
for (int i = 0; i < 4; i++)
nameHeader[i + 4] = nameOff[i];
newPCCStream.Write(nameHeader, 0, 8);
//Finally, update the export list
newPCCStream.Seek(ExportOffset, SeekOrigin.Begin);
foreach (ME3ExportEntry export in Exports)
{
newPCCStream.Write(export.info, 0, export.info.Length);
}
if (!attemptOverwrite)
{
using (FileStream stream = new FileStream(loc + "\\exec\\infoCache.bin", FileMode.Append))
{
stream.Seek(0, SeekOrigin.End);
rtValues += stream.Position + " ";
stream.Write(changedExports[0].info, 32, 8);
}
}
}
return rtValues;
}
示例6: appendSave
/// <summary>
/// This method is an alternate way of saving PCCs
/// Instead of reconstructing the PCC from the data taken, it instead copies across the existing
/// data, appends new exports, updates the export list, changes the namelist location and updates the
/// value in the header
/// </summary>
/// <param name="newFileName">The filename to write to</param>
///
public void appendSave(string newFileName)
{
IEnumerable<ME2ExportEntry> replaceExports;
IEnumerable<ME2ExportEntry> appendExports;
int lastDataOffset;
int max;
if (IsAppend)
{
replaceExports = exports.Where(export => export.DataChanged && export.DataOffset < NameOffset && export.DataSize <= export.OriginalDataSize);
appendExports = exports.Where(export => export.DataOffset > NameOffset || (export.DataChanged && export.DataSize > export.OriginalDataSize));
max = exports.Where(exp => exp.DataOffset < NameOffset).Max(e => e.DataOffset);
}
else
{
IEnumerable<ME2ExportEntry> changedExports;
changedExports = exports.Where(export => export.DataChanged);
replaceExports = changedExports.Where(export => export.DataSize <= export.OriginalDataSize);
appendExports = changedExports.Except(replaceExports);
max = exports.Max(maxExport => maxExport.DataOffset);
}
ME2ExportEntry lastExport = exports.Find(export => export.DataOffset == max);
lastDataOffset = lastExport.DataOffset + lastExport.DataSize;
byte[] oldPCC = new byte[lastDataOffset];//Check whether compressed
if (IsCompressed)
{
oldPCC = CompressionHelper.Decompress(FileName).Take(lastDataOffset).ToArray();
IsCompressed = false;
}
else
{
using (FileStream oldPccStream = new FileStream(this.FileName, FileMode.Open))
{
//Read the original data up to the last export
oldPccStream.Read(oldPCC, 0, lastDataOffset);
}
}
//Start writing the new file
using (FileStream newPCCStream = new FileStream(newFileName, FileMode.Create))
{
newPCCStream.Seek(0, SeekOrigin.Begin);
//Write the original file up til the last original export (note that this leaves in all the original exports)
newPCCStream.Write(oldPCC, 0, lastDataOffset);
//write the in-place export updates
foreach (ME2ExportEntry export in replaceExports)
{
newPCCStream.Seek(export.DataOffset, SeekOrigin.Begin);
export.DataSize = export.Data.Length;
newPCCStream.WriteBytes(export.Data);
}
newPCCStream.Seek(lastDataOffset, SeekOrigin.Begin);
//Set the new nameoffset and namecounts
NameOffset = (int)newPCCStream.Position;
NameCount = names.Count;
//Then write out the namelist
foreach (string name in names)
{
newPCCStream.WriteValueS32(name.Length + 1);
newPCCStream.WriteString(name);
newPCCStream.WriteByte(0);
newPCCStream.WriteValueS32(-14);
}
//Write the import list
ImportOffset = (int)newPCCStream.Position;
ImportCount = imports.Count;
foreach (ImportEntry import in imports)
{
newPCCStream.WriteBytes(import.header);
}
//append the new data
foreach (ME2ExportEntry export in appendExports)
{
export.DataOffset = (int)newPCCStream.Position;
export.DataSize = export.Data.Length;
newPCCStream.Write(export.Data, 0, export.Data.Length);
}
//Write the export list
ExportOffset = (int)newPCCStream.Position;
ExportCount = exports.Count;
foreach (ME2ExportEntry export in exports)
{
newPCCStream.WriteBytes(export.header);
}
//.........这里部分代码省略.........