私はデータベースからデータセットを取得してxmlファイルに変換する単純なアプリケーションを持っています。このxmlファイルは読み込まれ、.gzファイルに圧縮されます。ストリームから直接圧縮
これは非常に非効率的です - 一時的な.xmlファイルに書き込むステップをスキップして、それを再び圧縮することは可能でしょうか?ファイルを変換されたxml形式に直接変換するストリームに自動的に送信できますか?ここで
は私のコードです:
public partial class _Default : System.Web.UI.Page
{
DataSet dataset = new DataSet();
string uri = "C:\\tester.xml";
string compressedfileuri = "C:\\tester.gz";
protected void Page_Load(object sender, EventArgs e)
{
//get the dataset
RetrieveData();
//serialize data to a xml file
dataset.WriteXml(uri);
//compress the data
Compress();
}
public void RetrieveData()
{
string connString = ConfigurationManager.ConnectionStrings["Platform"].ConnectionString;
using (SqlConnection conn = new SqlConnection(connString))
{
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand("SELECT * FROM expenses.CST_COSTHEADER", conn);
adapter.Fill(dataset);
}
}
public void Compress()
{
using (FileStream fs = new FileStream(uri, FileMode.Open))
{
using (FileStream outFile = File.Create(compressedfileuri))
{
using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress))
{
fs.CopyTo(Compress);
}
}
}
}
}
として使用することができますが使用してのすべてを置くことによって、コードに多くを簡素化することができます同じレベルでは、あなたの例ではfsが使用されることはありません。 –