Java tutorial
/** * (C) Copyright IBM Corp. 2010, 2015 * * 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. * */ package com.ibm.bi.dml.runtime.io; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.mapred.RecordReader; import com.ibm.bi.dml.runtime.util.UtilFunctions; public class IOUtilFunctions { private static final Log LOG = LogFactory.getLog(UtilFunctions.class.getName()); /** * * @param is */ public static void closeSilently(InputStream is) { try { if (is != null) is.close(); } catch (Exception ex) { LOG.error("Failed to close input stream.", ex); } } /** * * @param is */ public static void closeSilently(OutputStream os) { try { if (os != null) os.close(); } catch (Exception ex) { LOG.error("Failed to close output stream.", ex); } } /** * * @param br */ public static void closeSilently(BufferedReader br) { try { if (br != null) br.close(); } catch (Exception ex) { LOG.error("Failed to close buffered reader.", ex); } } /** * * @param br */ public static void closeSilently(BufferedWriter bw) { try { if (bw != null) bw.close(); } catch (Exception ex) { LOG.error("Failed to buffered writer.", ex); } } /** * * @param br */ public static void closeSilently(SequenceFile.Reader br) { try { if (br != null) br.close(); } catch (Exception ex) { LOG.error("Failed to close reader.", ex); } } /** * * @param br */ public static void closeSilently(SequenceFile.Writer bw) { try { if (bw != null) bw.close(); } catch (Exception ex) { LOG.error("Failed to writer.", ex); } } public static void closeSilently(RecordReader<?, ?> rr) { try { if (rr != null) rr.close(); } catch (Exception ex) { LOG.error("Failed to close record reader.", ex); } } /** * * @param br */ public static double parseDoubleParallel(String str) { //return FloatingDecimal.parseDouble(str); return Double.parseDouble(str); } /** * * @param row * @param fill * @param emptyFound * @throws IOException */ public static void checkAndRaiseErrorCSVEmptyField(String row, boolean fill, boolean emptyFound) throws IOException { if (!fill && emptyFound) { throw new IOException("Empty fields found in delimited file. " + "Use \"fill\" option to read delimited files with empty fields:" + ((row != null) ? row : "")); } } /** * * @param fname * @param line * @param parts * @param ncol * @throws IOException */ public static void checkAndRaiseErrorCSVNumColumns(String fname, String line, String[] parts, long ncol) throws IOException { int realncol = parts.length; if (realncol != ncol) { throw new IOException("Invalid number of columns (" + realncol + ", expected=" + ncol + ") " + "found in delimited file (" + fname + ") for line: " + line); } } /** * Splits a string by a specified delimiter into all tokens, including empty. * NOTE: This method is meant as a faster drop-in replacement of the regular * string split. * * @param str * @param delim * @return */ public static String[] split(String str, String delim) { //note: split via stringutils faster than precompiled pattern / guava splitter //split by whole separator required for multi-character delimiters, preserve //all tokens required for empty cells and in order to keep cell alignment return StringUtils.splitByWholeSeparatorPreserveAllTokens(str, delim); } }