Java tutorial
/** * 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()); } }