-1

バイナリ フォーマッタを使用してテキスト ファイルを作成および書き込む方法を知りたいのですが、以下のコードを書きましたが、例外があります。例外は次のとおりです。別のプロセスによって使用されているため、ファイルにアクセスできません。

私のコードは、拡張子「.txt」と拡張子なしの2つのファイルを作成します。

私は何をすべきか?テキストファイルを作成する別の方法はありますか?

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;


namespace ConsoleApplication9
{
    [Serializable]
    class contact
    {



        string name;
        string address;
        string phonenumber;
        string emailaddress;
        public override string ToString()
        {
            return name + "   " + address + "   " + phonenumber + "  " + emailaddress;
        }

        public void AddContent(string cname, string caddress, string cphone, string cemail)
        {
            name = cname;
            address = caddress;
            phonenumber = cphone;
            emailaddress = cemail;

            FileStream file = new FileStream("contact.txt", FileMode.OpenOrCreate, FileAccess.Write);

            BinaryFormatter bin = new BinaryFormatter();
            contact person = new contact();
            person.name = cname;
            person.address = caddress;
            person.phonenumber = cphone;
            person.emailaddress = cemail;
            bin.Serialize(file, person);
            file.Close();

            Console.WriteLine(" added sucefully");


        }//end of fun add

}

4

2 に答える 2

2

あなたの例外は BinaryFormatter とは何の関係もありませんが、代わりに FileStream を適切に破棄していないという事実とは関係ありません。常に using ブロックでストリームをラップします。

 using(FileStream file = new FileStream("contact.txt", FileMode.OpenOrCreate, FileAccess.Write))
 {
    //code here
 }

これにより、下にあるストリームが閉じられ、管理されていないリソースが解放されることが保証されます。特にあなたの場合、作成しようとしているファイルへのロックが OS に残っているようで、コードを 2 回目に実行すると、ファイルに関する例外がスローされます。being used by another process

于 2013-08-05T18:41:39.343 に答える
0
 file can not been access because it is has been used by another process.

このファイルをうっかり開いてしまい、まだテキスト ウィンドウで開いている可能性はありますか?

于 2013-08-05T18:40:18.973 に答える