www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - std.zip for Binary example

reply locco <despair4045 nate.com> writes:
Hi :)
I found this example:
======================================================================
import std.file: write;
import std.string: representation;
void main()
{
    char[] data = "Test data.\n".dup;
    // Create an ArchiveMember for the test file.
    ArchiveMember am = new ArchiveMember();
    am.name = "test.txt";
    am.expandedData(data.representation);
    // Create an archive and add the member.
    ZipArchive zip = new ZipArchive();
    zip.addMember(am);
    // Build the archive
    void[] compressed_data = zip.build();
    // Write to a file
    write("test.zip", compressed_data);
}
======================================================================
But i cound't find example code for binary file.
How can i make ArciveMember for binary file?
Jan 17
parent reply Sean Campbell <sycam.inc gmail.com> writes:
On Sunday, 17 January 2016 at 10:34:19 UTC, locco wrote:
 Hi :)
 I found this example:
 ======================================================================
 import std.file: write;
 import std.string: representation;
 void main()
 {
    char[] data = "Test data.\n".dup;
    // Create an ArchiveMember for the test file.
    ArchiveMember am = new ArchiveMember();
    am.name = "test.txt";
    am.expandedData(data.representation);
    // Create an archive and add the member.
    ZipArchive zip = new ZipArchive();
    zip.addMember(am);
    // Build the archive
    void[] compressed_data = zip.build();
    // Write to a file
    write("test.zip", compressed_data);
 }
 ======================================================================
 But i cound't find example code for binary file.
 How can i make ArciveMember for binary file?
std.zip dosen't discriminate against text and binary files files. p.s. remember to import std.zip
Jan 17
parent locco <despair4045 nate.com> writes:
On Sunday, 17 January 2016 at 10:43:55 UTC, Sean Campbell wrote:
 On Sunday, 17 January 2016 at 10:34:19 UTC, locco wrote:
 Hi :)
 I found this example:
 ======================================================================
 import std.file: write;
 import std.string: representation;
 void main()
 {
    char[] data = "Test data.\n".dup;
    // Create an ArchiveMember for the test file.
    ArchiveMember am = new ArchiveMember();
    am.name = "test.txt";
    am.expandedData(data.representation);
    // Create an archive and add the member.
    ZipArchive zip = new ZipArchive();
    zip.addMember(am);
    // Build the archive
    void[] compressed_data = zip.build();
    // Write to a file
    write("test.zip", compressed_data);
 }
 ======================================================================
 But i cound't find example code for binary file.
 How can i make ArciveMember for binary file?
std.zip dosen't discriminate against text and binary files files. p.s. remember to import std.zip
================================================================================ import std.stdio; import std.file:write,getSize; import std.string: representation; import std.zip: ArchiveMember, ZipArchive; void main() { auto stream = File("example.jpg", "r+"); auto inbytes = new ubyte[ cast(uint)getSize("example.jpg") ]; stream.rawRead(inbytes); auto zip = new ZipArchive(); ArchiveMember ae = new ArchiveMember(); ae.name = "example_.jpg"; ae.expandedData( inbytes ); zip.addMember(ae); void[] compressed_data = zip.build(); write("test.zip", compressed_data); } ================================================================================ I made this, work fine. But i guess it wasn't nice solution. Right?
Jan 23