none
VB.netで一部の文字列を圧縮してファイル出力する方法 RRS feed

  • 質問

  • いつもこちらの方ではお世話になっています。

    調査しても良い方法が見つからないため
    ご教授お願いします。

    言語 VB.Net フレームワーク 1.1

    あるファイル(拡張子:txt)がヘッダー部と明細部で構成されています。
    このファイルの明細部のみをLHA形式で圧縮し、
    再度、ヘッダー部と圧縮された明細部で構成されたTEXTファイルで出力
    したいのですが、方法が全くわかりません。

    ご教授宜しくお願いします。

    2012年6月15日 5:50

回答

すべての返信

  • やりたいことを細分化して、分からない点を明らかにするのが良いと思います。
    (ファイルを読み込む?、ヘッダーと明細部を分ける?、LHA 形式で圧縮する?、...)

    さすがに 1 から 10 まで全然わからないということはないと思うのですが。

    2012年6月15日 6:11
  • 返信ありがとうございます。

    今、現時点で不明な個所としましては、文字列をLHA形式で圧縮する方法です。

    お願いします。

    2012年6月15日 6:18
  • "C# lha" とかで検索して出てきたのをVB.NETで読み替えれば圧縮自体はできそうです。
    でも圧縮はファイル単位だと思うし、圧縮したものはバイナリファイルになるとおもうので
    そのままではテキストファイルにできないように思います。
    Base64の文字列にすればいいのかなとは思いますが、それでは要件を満たしていない気もします。
    いまいち趣旨が不明なので、もう少し詳しく説明されたほうが良いレスが付くと思われます。
    (多分、皆さんはなんでそんなことしたいんだ?と思っていると思います)

    2012年6月15日 6:33
  • VB で LHA 圧縮をしたいということであれば、次の記事が参考になるとは思いますが...。

    動的PInvokeによる統合アーカイバ仕様DLLを使用した書庫の展開と作成(1/4):CodeZine
    http://codezine.jp/article/detail/444?p=1

    遅延バインディングによりアンマネージDLL関数を呼び出す: .NET Tips: C#, VB.NET
    http://dobon.net/vb/dotnet/links/extractarchive.html
    • 回答としてマーク Ninichi 2012年6月15日 11:30
    2012年6月15日 6:36
  • ご存じかもしれませんが、一応書いておきます。
    LHA形式はセキュリティ上の問題から使用が推薦されていません。もし特殊な事情があるのでしたら仕方ありませんが、そうでなければ新規にLHA形式を採用するのは通常お勧めできません。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2012年6月15日 6:37
    モデレータ
  • mars12さん 

    返信ありがとうございます。

    なぜ、そのようなことをするかといいますと
    作成したファイルを最終的にサーバーに送信し
    サーバー側がそのファイルを取込むのですが、
    そのファイル形式が非圧縮のヘッダー部、
    圧縮された明細部で構成されていないといけないためです。
    (なぜ、そのような仕様になったのかは不明です。)

    2012年6月15日 6:49
  • totojoさん

    ありがとうございます。教えていただいたサイトで勉強します。

    また、不明点が出れば、ご教授お願いします。

    2012年6月15日 7:04
  • ここですね。『LHA の脆弱性』その後 (5) と UNLHA32.DLL 等, 開発中止...より

    UNLHA32.DLL, UNARJ32.DLL, LHMelt の開発を中止することに決めました。 脆弱性が存在しても放っておかれるような書庫が いつまでも業務目的で利用されるのは嫌ですので。

    その下の方には

    何かアホらしくなってしまいましたので, 現在調査中だった 2・3 のソフトの脆弱性 (攻撃可能なもの。) については調査の継続 (といいますか実証データーの作成。) も報告するのも止めました。

    とのことで、すでに脆弱性が見つかっているようです。

    2012年6月15日 7:38
  • でも圧縮はファイル単位だと思うし、圧縮したものはバイナリファイルになるとおもうので
    そのままではテキストファイルにできないように思います。

     ヘッダーのみの一時ファイルと、明細のみの一時ファイルを作成し、明細のみを圧縮後、連結すればいいでしょう。

     しかし、.NET Framework 1.1 ですか。。。→.NET Framework のサポート概要


    Jitta@わんくま同盟

    2012年6月15日 14:50