Tôi có một ứng dụng đơn giản truy xuất tập dữ liệu từ cơ sở dữ liệu và chuyển đổi nó thành tệp xml. Tệp xml này sau đó được đọc và nén thành tệp .gz.Nén trực tiếp từ một dòng
Điều này có vẻ khá kém hiệu quả - có thể bỏ qua bước ghi vào tệp .xml tạm thời và đọc nó trở lại nén không? Tôi có thể tự động gửi tệp đến luồng chuyển trực tiếp tệp đó sang định dạng xml được chuyển đổi không?
Đây là mã của tôi:
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);
}
}
}
}
}
Bạn có thể đơn giản hóa mã rất nhiều bằng cách đặt tất cả các sử dụng trên cùng cấp độ, cũng fs không bao giờ được sử dụng trong ví dụ của bạn. –