org.openflamingo.engine.util.FileReader.java Source code

Java tutorial

Introduction

Here is the source code for org.openflamingo.engine.util.FileReader.java

Source

/**
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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 org.openflamingo.engine.util;

import org.apache.commons.exec.*;
import org.openflamingo.core.cmd.ByteArrayOutputStream;

import java.io.IOException;

/**
 * ?  ??? ? ??    ? ?.
 *
 * @author Byoung Gon, Kim
 * @version 0.5
 */
public class FileReader {

    /**
     * ? ??  ??  ? ? .
     *
     * @param start     ??
     * @param end       ??
     * @param filename ?? ?
     * @return ?? 
     * @throws IOException          ?? ??   
     * @throws InterruptedException       
     */
    public static String read(long start, long end, String filename) throws IOException, InterruptedException {
        String command = org.slf4j.helpers.MessageFormatter
                .arrayFormat("sed '{},{}!d' {}", new Object[] { start, end, filename }).getMessage();

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
        PumpStreamHandler pumpStreamHandler = new PumpStreamHandler(out);

        CommandLine cmdLine = CommandLine.parse(command);
        ExecuteWatchdog watchdog = new ExecuteWatchdog(60 * 1000);
        Executor executor = new DefaultExecutor();
        executor.setStreamHandler(pumpStreamHandler);
        executor.setExitValue(1);
        executor.setWatchdog(watchdog);
        executor.execute(cmdLine, resultHandler);

        resultHandler.waitFor();

        return new String(out.toByteArray());
    }

    /**
     * ? ?? ??  ? .
     *
     * @param filename ??  ? ?
     * @return  ?? ?? 
     * @throws IOException          ?? ??   
     * @throws InterruptedException       
     */
    public static int lines(String filename) throws IOException, InterruptedException {
        String command = org.slf4j.helpers.MessageFormatter.arrayFormat("sed -n '$=' {}", new Object[] { filename })
                .getMessage();

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
        PumpStreamHandler pumpStreamHandler = new PumpStreamHandler(out);

        CommandLine cmdLine = CommandLine.parse(command);
        ExecuteWatchdog watchdog = new ExecuteWatchdog(60 * 1000);
        Executor executor = new DefaultExecutor();
        executor.setStreamHandler(pumpStreamHandler);
        executor.setExitValue(1);
        executor.setWatchdog(watchdog);
        executor.execute(cmdLine, resultHandler);

        resultHandler.waitFor();

        return Integer.parseInt(new String(out.toByteArray()).trim());
    }
}