e27cf56fa2
-- zipFS has several limitations... --- in a general way, seekg doesn't work... so getting a file's size needs to be done through JFileSystem. --- getLine on files open with zipFS doesn't work so great. Not sure if it is a normal issue because files are open in binary or not... JFileSystem therefore offers a "readIntoString" function that needs to be used instead of the usual "getline" technique. However getLine can then be used on a stream connected to the string. -- tested on Windows and PSP, I also made sure android still works, but haven't tested zip support on Android. -- I tried to maintain backwards compatibility, but this might break on some platforms, if I broke some platforms and you can't find a way to fix them, please contact me and we'll figure something out -- This removes wagic::ifstream. I didn't reimplement the securities that were involved in this, apologies for that. Might be useful to reimplement such securities in JFileSystem -- I haven't tested options/profiles in a deep way, it is possible I broke that.
45 lines
1017 B
C++
45 lines
1017 B
C++
// ZFS.cpp : Defines the entry point for the console application.
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
|
// ZFS headers
|
|
#include "zfsystem.h"
|
|
|
|
|
|
|
|
void DoSomething(std::istream & File)
|
|
{
|
|
// Output the file via cout (note: rdbuf() method is a std C++ method, not zfs specific)
|
|
std::cout << File.rdbuf() << std::endl;
|
|
}
|
|
|
|
|
|
|
|
int main(int argc, char * argv[])
|
|
{
|
|
using namespace std;
|
|
using zip_file_system::filesystem;
|
|
using zip_file_system::izfstream;
|
|
|
|
// Create and initialize the Zip File System (basepath, file_extension, makedefault)
|
|
// and output the its status via cout
|
|
filesystem FileSystem("base_data", "cpk", true);
|
|
cout << FileSystem << endl;
|
|
|
|
// Try to open a zipped file (Careful! The openmode is always 'ios::in | ios::binary'.)
|
|
izfstream File("testfile.txt");
|
|
|
|
if (! File)
|
|
cout << "ERROR: Cannot open file!" << endl;
|
|
|
|
// Call some function expecting an istream object
|
|
DoSomething(File);
|
|
|
|
// The End.
|
|
cout << "\nPress ENTER to continue." << endl;
|
|
cin.get();
|
|
}
|
|
|