初めての店舗開業を成功させよう>>

C#で作成した、CSVをFTPでウェブサーバにアップロードするプログラムがあるのですが、
運用と共にCSVファイルのサイズと数が増えパフォーマンスが悪くなってきたので、
CSVをZIPで圧縮することにしました。

C:\data\read.csv を読み込んで同じ場所に write.zip として出力するという処理を、
System.IO.Compression 系の ZipArchive を使って、

  using (var zipStream = File.Create(@"C:\data\write.zip")) {
    using (var archive = new ZipArchive(zipStream, ZipArchiveMode.Create)) {
      var entry = archive.CreateEntry("read.csv");
      using (var sourceStream = File.OpenRead(@"C:\data\read.csv")) {
        using (var entryStream = entry.Open()) {
          sourceStream.CopyTo(entryStream);
        }
      }
    }
  }

のようにしてみたところ、C:\data\write.zip は作成されるのですが、
これを解凍すると write\read.csv となってしまいます。
(write フォルダができて、その下に元のCSVができる。)

解凍した際にフォルダを含まないように
(フォルダを含んだ圧縮ファイルにならないように)
圧縮することはできませんでしょうか?

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

write.zip自体に「write」フォルダが作成されているのでは無く、zipの展開に使っているソフトが「write」フォルダを生成しているように思えます。


使用しているソフトによっては「アーカイブ名でフォルダを作成」のようなオプションがある場合があるので、そのチェックを外すとフォルダは作られなくなるはずですよ。

zipファイル自体にフォルダが含まれているかどうかは、zipファイルをエクスプローラーなどで開くと確認できると思います。

この回答への補足

すみません。
お礼だけして、BAをして閉じるのを忘れていました。
どうもありがとうございました。

補足日時:2014/10/22 21:42
    • good
    • 0
この回答へのお礼

早速回答をいただきまして、ありがとうございます。

解凍する側のソフトの設定だとは知りませんでした。

単にエクスプローラから「開く」としてもフォルダが作成されていたので、
フォルダ付きで圧縮されているものとばかり思っていましたが、
使用している Lhaplus の「フォルダを自動作成する」の指定を外すと、
このソフトを使ったときにフォルダができていなかっただけでなく、
エクスプローラの「開く」からでもファイルのみ取り出すことができました。

勉強になりました。

おかげさまで、プログラムを作成できそうです。

ありがとうございました。

お礼日時:2014/10/21 20:43

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q【SQL】他テーブルに含まれる値に合致する行を抽出

SQL素人ですが、SQLが使えるツールからデータを抽出したく、SQL文を教えていただけますでしょうか。

・テーブルA:会員データが格納されている(氏名、メルアド、郵便番号等が入っている)
・テーブルB:特定の郵便番号のみが入っている

テーブルAのデータの中からテーブルBに入っている郵便番号に合致するメルアドを抽出したい。

何卒宜しくお願い申し上げます。

Aベストアンサー

>SQLが使えるツール
によって変わってくる場合がありますが、
SELECT メルアド FROM テーブルA
WHERE 郵便番号 IN (SELECT 郵便番号 FROM テーブルB)
とか。


人気Q&Aランキング

おすすめ情報