1

構成ファイルに書き込む場所からいくつかの構成フォームがあります。最大値は 100 で、ファイルに場所を保存したいので、どうすれば int16 をファイルに書き込むことができますか?

private void butSave_Click(object sender, EventArgs e)
    {
        if (valChanged == true)
        {
            Properties.Settings.Default.Save();
            Assembly assem = Assembly.GetEntryAssembly();
            string dir = Path.GetDirectoryName(assem.Location);
            string filePath = Path.Combine(dir, "./conf/config.dat");
            try
            {
                FileStream fs = new FileStream(filePath, FileMode.Open);
                BinaryWriter wr = new BinaryWriter(fs);
                fs.Position = 0;
                wr.Write(checkBox1.Checked);
                wr.Write(checkBox2.Checked);
                fs.Position = 16;
                wr.Write(numericUpDown1.Value);
                wr.Write(numericUpDown2.Value);
                wr.Write(numericUpDown3.Value);
                wr.Write(numericUpDown4.Value);
                wr.Close();
                Form1 main = new Form1();
                main.Show();
                this.Close();
            }
            catch
            {
                MessageBox.Show("Would you like to create a new config file", "File not found!", MessageBoxButtons.YesNoCancel);
            }
        }
    }
4

3 に答える 3

2

キャストしshortて使用するBinaryWriter.Write(short)

 wr.Write((short)numericUpDown1.Value);
于 2013-01-10T17:32:57.267 に答える
1
using(var file =  File.Create("out.bin"))
using (var writer = new BinaryWriter(file))
{
    foreach (short value in list)
    {
        writer.Write(value);
    }
}
于 2013-01-10T17:35:32.320 に答える
0

shortはInt16ですが、100が最大の場合、必要なのは8ビットだけで、バイトは機能します。これは、shortを使用する場合の半分のスペースを必要とします。

wr.Write((byte)numericUpDown1.Value);
于 2013-01-10T17:41:26.770 に答える