C# アプリケーションから独自の外部プロジェクトファイルにデータを保存するためのガイドはありますか?たとえば、イメージを埋め込むなど、後でロードするためのガイドはありますか? ありがとう。
3 に答える
ほぼすべてのタイプのデータを .NET アセンブリに埋め込んでそこから読み取ることができますが、独自の実行可能ファイルを変更することはできません。変更できたとしても、それは悪い考えです。1 つには、実行中に EXE が突然変化するのを目にするウイルス対策プログラムにとって、どれだけトリッピーであるかを考えてみてください。
読み取りと書き込みが必要なメタデータ (画像またはその他の種類のファイル) がある場合は、ファイルシステムを使用してください。このEnvironment
クラスには、アプリケーションごと、および必要なものを保存できるユーザーごとの既知の場所を返す関数があります。
編集
これがあなたが求めているものかどうかはわかりませんが、ここにあります。Document
いくつかのテキストといくつかの画像を含むクラスが呼び出され、それらが特定されていない方法でレンダリングされているとします。したがって、基本的には次のようになります。
[Serializable]
class Document
{
public string Text { get; set; }
public Image[] Images { get; set; }
}
よくわかりませんImage
が、私はそれを作りました。.NET シリアル化関数を使用すると、これをバイト ストリームに変換できます。
Document doc = GetDocumentFromUI();
MemoryStream stm = new MemoryStream(1024);
BinaryFormatter fmt = new BinaryFormatter();
fmt.Serialize(stm, doc);
byte[] data = stm.ToArray();
その後、ファイルに保存できます。次に、ファイルをロードしてドキュメントに変換できます。
byte[] data = LoadDocumentFromDisk();
BinaryFormatter fmt = new BinaryFormatter();
MemoryStream stm = new MemoryStream(data);
stm.Position = 0;
Document doc = fmt.Deserialize(stm) as Document;
これは明らかに非常に大雑把ですが、.NET のほとんどのオブジェクトをシリアル化および逆シリアル化できます。これには組み込み型の一部も含まれます。
あなたが望むことをすることは不可能です。埋め込まれたリソースを読み取ることはできますが、変更することはできません。
保存したいデータをシリアライズし、読み込み時にデシリアライズするだけです。より具体的なデータを書きたい場合は、独自のファイル形式を決定する必要があります。