/* * Encog(tm) Core v3.4 - Java Version * http://www.heatonresearch.com/encog/ * https://github.com/encog/encog-java-core * Copyright 2008-2016 Heaton Research, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * * For more information on Heaton Research copyrights, licenses * and trademarks visit: * http://www.heatonresearch.com/copyright */ package org.encog.util.file; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import org.encog.EncogError; import org.encog.bot.BotUtil; import org.encog.util.logging.EncogLogging; public class FileUtil { public static File addFilenameBase(File filename, String base) { String f = getFileName(filename); String ext = getFileExt(filename); int idx1 = f.lastIndexOf('_'); int idx2 = f.lastIndexOf(File.separatorChar); boolean remove = false; if (idx1 != -1) { if (idx2 == -1) { remove = true; } else { remove = idx1 > idx2; } } if (remove) { f = f.substring(0, idx1); } return new File(f + base + "." + ext); } public static String getFileName(File file) { String fileName = file.toString(); int mid = fileName.lastIndexOf("."); if (mid == -1) { return fileName; } return fileName.substring(0, mid); } public static String getFileExt(File file) { String fileName = file.toString(); int mid = fileName.lastIndexOf("."); if (mid == -1) return ""; return fileName.substring(mid + 1, fileName.length()); } public static String readFileAsString(File filePath) throws java.io.IOException { StringBuffer fileData = null; BufferedReader reader = null; try { fileData = new StringBuffer(1000); reader = new BufferedReader(new FileReader(filePath)); char[] buf = new char[1024]; int numRead = 0; while ((numRead = reader.read(buf)) != -1) { String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); buf = new char[1024]; } reader.close(); return fileData.toString(); } finally { if( reader!=null ) { reader.close(); } } } public static String readStreamAsString(InputStream is) throws java.io.IOException { StringBuffer fileData = new StringBuffer(1000); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); char[] buf = new char[1024]; int numRead = 0; while ((numRead = reader.read(buf)) != -1) { String readData = String.valueOf(buf, 0, numRead); fileData.append(readData); buf = new char[1024]; } reader.close(); return fileData.toString(); } public static String forceExtension(String name, String ext) { String b = getFileName(new File(name)); return b + "." + ext; } public static void writeFileAsString(File path, String str) throws IOException { BufferedWriter o = new BufferedWriter(new FileWriter(path)); o.write(str); o.close(); } public static void copy(File source, File target) { FileOutputStream fos = null; InputStream is = null; try { fos = new FileOutputStream(target); is = new FileInputStream(source); copy(is, fos); } catch (final IOException e) { throw new EncogError(e); } finally { if( fos!=null ) { try { fos.close(); } catch (IOException e) { EncogLogging.log(e); } } if( is!=null ) { try { is.close(); } catch (IOException e) { EncogLogging.log(e); } } } } public static void copy(InputStream is, OutputStream os) { try { final byte[] buffer = new byte[BotUtil.BUFFER_SIZE]; int length; do { length = is.read(buffer); if (length > 0) { os.write(buffer, 0, length); } } while (length > 0); } catch (IOException ex) { throw new EncogError(ex); } } public static void copyResource(String resource, File targetFile) { try { InputStream is = ResourceInputStream .openResourceInputStream(resource); OutputStream os = new FileOutputStream(targetFile); copy(is, os); is.close(); os.close(); } catch (IOException ex) { throw new EncogError(ex); } } public static String toStringLiteral(File processFile) { String str = processFile.toString(); StringBuilder result = new StringBuilder(); for(char ch : str.toCharArray()) { if( ch=='\\' ) { result.append("\\\\"); } else { result.append(ch); } } return result.toString(); } }