/******************************************************************************* * Copyright (c) 2000, 2011 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.debug.jdi.tests; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; /** * Tests continuous reading from a file and input stream */ public class FileConsoleReader extends AbstractReader { private InputStream fInput; private FileOutputStream fFileOutputStream; /** * Creates a new console reader that will read from the given input stream. * @param name * @param fileName * @param input */ public FileConsoleReader(String name, String fileName, InputStream input) { super(name); fInput = input; try { fFileOutputStream = new FileOutputStream(new File(fileName)); } catch (IOException e) { System.out.println("Got exception: " + e.getMessage()); } } /** * Continuously reads events that are coming from the event queue. */ @Override protected void readerLoop() { BufferedReader input = new BufferedReader(new InputStreamReader(fInput)); try { int read = 0; while (!fIsStopping && read != -1) { read = input.read(); if (read != -1) { fFileOutputStream.write(read); } fFileOutputStream.flush(); } } catch (IOException e) { } } /** * @see org.eclipse.debug.jdi.tests.AbstractReader#stop() */ @Override public void stop() { try { fFileOutputStream.close(); } catch (IOException e) { System.out.println("Got exception: " + e.getMessage()); } } }