dothack-j2me/tools/FileEmbed/FileEmbed.cpp
2024-10-31 12:25:57 +07:00

68 lines
1.6 KiB
C++

#include <cstddef>
#include <cstdlib>
#include <filesystem>
#include <fstream>
#include <iostream>
void writeBinaryFile(const std::filesystem::path& inputFileName, std::filesystem::path& outputFileName) {
std::ifstream inputFile(inputFileName);
std::ofstream outputFile(outputFileName, std::ios::binary);
if (!inputFile) {
std::cerr << "Error opening input file: " << inputFileName << std::endl;
std::exit(EXIT_FAILURE);
}
if (!outputFile) {
std::cerr << "Error opening output file: " << outputFileName << std::endl;
std::exit(EXIT_FAILURE);
}
inputFile.seekg(0, std::ios::end);
size_t size = inputFile.tellg();
inputFile.seekg(0, std::ios::beg);
char buffer[size];
inputFile.read(buffer, size);
std::stringstream ss;
ss << "public final class "<< outputFileName.stem().c_str() <<" {\n"
<< " public static final byte[] data = new byte[]{";
for (size_t i = 0; i < size; ++i) {
ss << static_cast<int>(buffer[i]);
if (i < size - 1) ss << ", "; // Add comma between elements
}
ss << "};\n}";
outputFile << ss.str();
if (outputFile.fail())
{
std::cerr << "Error writing to file!" << std::endl;
std::exit(EXIT_FAILURE);
}
inputFile.close();
outputFile.close();
}
int main(int argc, char* argv[]) {
if (argc != 3) {
std::cerr << "Usage: " << argv[0] << " <input_file> <output_file>" << std::endl;
return EXIT_FAILURE;
}
std::filesystem::path inputFileName = argv[1];
std::filesystem::path outputFileName = argv[2];
writeBinaryFile(inputFileName, outputFileName);
std::cout << "file embeded to java file successfully." << std::endl;
return EXIT_SUCCESS;
}