view src/main/java/nl/cwi/monetdb/util/Extract.java @ 261:d4baf8a4b43a

Update Copyright year to 2019
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 03 Jan 2019 14:43:44 +0100 (2019-01-03)
parents c38d4eaf5479
children 4face9f42efc 05549bc7ed26
line wrap: on
line source
/*
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0.  If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
 *
 * Copyright 1997 - July 2008 CWI, August 2008 - 2019 MonetDB B.V.
 */

package nl.cwi.monetdb.util;

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;


/**
 * This file contains a function to extract files from its including Jar
 * package.
 *
 * @author Ying Zhang "Y.Zhang@cwi.nl"
 * @version 0.1
 */

public class Extract {
	private static final int DEFAULT_BUFSIZE = 16386;

    public Extract() {}

    /**
     * Extracts a file from the Jar package which includes this class to
     * the given destination
     * @param fromFile The file to extract, including it absolute path
     * inside its including Jar package.
     * @param toFile Destination for the extracted file
     * @throws FileNotFoundException If the file to extract can not be
     * found in its including Jar package.
     * @throws IOException If any error happens during
     * creating/reading/writing files.
     */
	public static void extractFile(String fromFile, String toFile)
		throws FileNotFoundException, IOException
	{
		char[] cbuf = new char[DEFAULT_BUFSIZE];
		int ret = 0;

		InputStream is = new Extract().getClass().getResourceAsStream(fromFile);

		if(is == null) {
			throw new FileNotFoundException("File " + fromFile +
					" does not exist in the JAR package.");
		}

		BufferedReader reader = new BufferedReader(new InputStreamReader(is));
		FileWriter writer = new FileWriter(toFile, false);

		ret = reader.read(cbuf, 0, DEFAULT_BUFSIZE);
		while(ret > 0){
			writer.write(cbuf, 0, ret);
			ret = reader.read(cbuf, 0, DEFAULT_BUFSIZE);
		}
		reader.close();
		writer.close();
	}
}