// 指定されたファイルへの圧縮出力ストリームを生成 ZipOutputStream zipStream = new ZipOutputStream( new FileOutputStream(Server.MapPath(fileName)));
SqlConnection db = new SqlConnection("Data Source=(local);User ID=sa;Password=sa;Persist Security Info=True;Initial Catalog=dotnet");
db.Open();
// books、schedule、sitemapを順に処理し、タブ区切りテキストを生成
for (int i = 0; i <= tbls.GetUpperBound(0); i++)
// 取得したデータをバイト配列に書き込むための
// OutputStreamWriterを用意
ByteArrayOutputStream bArray = new ByteArrayOutputStream();
OutputStreamWriter oStream =
new OutputStreamWriter(bArray, "SJIS");
SqlCommand comm = new SqlCommand("SELECT * FROM " + tbls[i],db);
SqlDataReader reader = comm.ExecuteReader();
Sub Page_Load(sender As Object, e As EventArgs)
' dataフォルダは圧縮ファイルを一時的に保存するフォルダ。
' 生成して5分以上経過しているファイルはゴミと見なし、削除
Dim dinf As New DirectoryInfo(Server.MapPath("data"))
For Each file As FileInfo In dinf.GetFiles()
If file.CreationTime.AddMinutes(5) < DateTime.Now Then file.Delete()
Next
' セッションIDから圧縮ファイル名を生成
Dim fileName As String = "data/" & Session.SessionID & ".zip"
' データを取得するテーブル名を配列として定義
Dim tbls() As String = {"books", "schedule", "sitemap"}
' 指定されたファイルへの圧縮出力ストリームを生成 Dim zipStream As New ZipOutputStream( _ New FileOutputStream(Server.MapPath(fileName)))
Dim db As New SqlConnection("Data Source=(local);User ID=sa;Password=sa;Persist Security Info = True;Initial Catalog=dotnet")
db.Open()
' books、schedule、sitemapを順に処理し、タブ区切りテキストを生成
For i As Integer = 0 To tbls.GetUpperBound(0)
' 取得したデータをバイト配列に書き込むための
' OutputStreamWriterを用意
Dim bArray As New ByteArrayOutputStream()
Dim oStream As New OutputStreamWriter(bArray, "SJIS")
Dim comm As New SqlCommand("SELECT * FROM " & tbls(i), db)
Dim reader As SqlDataReader = comm.ExecuteReader()
' テーブルから取得したDataReaderに基づき、
'タイトル行をタブ区切りで出力
For j As Integer = 0 To reader.FieldCount-1
oStream.write(reader.GetName(j))
If j< reader.FieldCount - 1 Then oStream.write(Chr(9))
Next
oStream.write(Chr(13) & Chr(10))
' DataReaderに含まれるデータをタブ区切りテキストとして出力
Do While reader.Read()
For j As Integer = 0 To reader.FieldCount - 1
oStream.write(reader.GetValue(j).ToString())
If j < reader.FieldCount - 1 Then oStream.write(Chr(9))
Next
oStream.write(Chr(13) & Chr(10))
Loop
oStream.close()
' Zipファイル内のファイル・エントリを生成 '(ファイル名は「<テーブル名>.txt」) Dim zEntry As New ZipEntry(tbls(i) & ".txt") zEntry.setMethod(ZipOutputStream.DEFLATED)