私のプロジェクト関数は、さまざまなタイプのオブジェクトのArrayListを返しました。後で分析するために、それをどこかに保存または保存する必要があります。しかし、私はいくつかの調査を行い、それをデータベースに保存したり、ファイルに書き込んだりする方法を見つけられませんでした。
オブジェクトのArrayListを保存または保存する方法があれば、それを行うためのより効率的な方法を大いに楽しみにしています。
私のプロジェクト関数は、さまざまなタイプのオブジェクトのArrayListを返しました。後で分析するために、それをどこかに保存または保存する必要があります。しかし、私はいくつかの調査を行い、それをデータベースに保存したり、ファイルに書き込んだりする方法を見つけられませんでした。
オブジェクトのArrayListを保存または保存する方法があれば、それを行うためのより効率的な方法を大いに楽しみにしています。
まず、本当に非ジェネリック コレクションを使用する必要があるのでしょうか。実際に .NET 1.1 をターゲットにしている場合を除き、ほとんどの場合、これを使用する方List<T>
が適切です。ArrayList
ObjectOutputStream
Javaでの使用に相当するのはBinaryFormatter
、.NET での使用です。GZipStream
圧縮に使用できます。これらは名前空間ではなくクラスであることに注意してください。用語を頭の中で整理する価値があります。FileOutputStream
と.NET ではFileInputStream
どちらも で表されます。FileStream
また、.NET または Java でネイティブ バイナリ シリアライゼーションを使用すると、バージョン管理の点で多少不安定になることにも注意してください。JSON、Protocol Buffers、Thrift、XML などの代替手段の使用を検討することをお勧めします。
個人的には、移植先の言語とプラットフォームのイディオムをよく知らずに Java コードを移植しようとするよりも、C# と .NET をゼロから学ぶことをお勧めします。たとえば、 「手動」ブロックを使用してリソースを破棄するのでusing
はなく、ステートメントを使用することは間違いありません。finally
stackoverflow でいくつかの興味深いスレッドを見つけました。
シリアライゼーションが必要だと思います:
以下は、オブジェクトを圧縮してファイルに保存します。
using System;
using System.IO;
using System.IO.Compression;
using System.Runtime.Serialization.Formatters.Binary;
public static void WriteFile<T>(T obj, string path)
{
using (FileStream fs = File.OpenWrite(path))
using (GZipStream gzip = new GZipStream(fs, CompressionMode.Compress))
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(gzip , obj);
}
}
public static T LoadFile<T>(string path)
{
using (FileStream fs = File.OpenRead(path))
using (GZipStream gzip = new GZipStream(fs, CompressionMode.Decompress))
{
BinaryFormatter bf = new BinaryFormatter();
return (T)bf.Deserialize(gzip);
}
}
そして、読んで解凍してください。
たぶん、バイナリシリアル化を使用してバイナリファイルを保存できますか?次に、gzipを使用して圧縮できます。 例へのリンクは次のとおりです
本当にXMLが必要ですか?バイナリを試すことはできますか?XMLに保存できないdaataがたくさんありますか?
今まで、私の問題に対する良い解決策がありませんでした。しかし、私は Alina B. の提案についていくつかの調査を行い、これを行うためのより基本的な情報を取得しました。オブジェクトのコレクションをファイルに保存するコードがあります。(このコンテキストで簡単にするために、ArrayList ではなく Collection を使用するようにターゲットを変更しました。
//Here I call the method with parameter of Collection of objects
Collection<object> list = new Collection<object>();
list.Add("value1");
list.Add("value2");
list.Add("value3");
SaveListToFile(list);
public void SaveListToFile(Collection<object> list)
{
var serializer = new XmlSerializer(typeof(Collection<object>));
using (var writer = new StreamWriter(Server.MapPath("~/Files/test.xml")))
serializer.Serialize(writer, list);
}
上記の方法では、XmlSerializer を使用して、オブジェクトのコレクションを xml ファイルに書き込みます。Collection のすべての要素が文字列である場合、メソッドは非常にうまく実行されます。しかし、クラス、ArrayList、またはその他のオブジェクト タイプなどの他のオブジェクトをコレクションに追加すると、エラーが発生し(XML ドキュメントの生成中にエラーが発生しました)、コレクションをまったく保存できません。では、ArrayList、クラス、整数、または文字列以外のタイプのオブジェクトのコレクションを保存するにはどうすればよいでしょうか? あなたがここにいるなら、もう少し助けが必要です。