Package robocode

Source Code of robocode.RobocodeFileOutputStream

/**
* Copyright (c) 2001-2014 Mathew A. Nelson and Robocode contributors
* 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://robocode.sourceforge.net/license/epl-v10.html
*/
package robocode;


import net.sf.robocode.core.ContainerBase;
import net.sf.robocode.security.IThreadManagerBase;
import robocode.exception.RobotException;

import java.io.*;


/**
* RobocodeFileOutputStream is similar to a {@link java.io.FileOutputStream}
* and is used for streaming/writing data out to a file, which you got
* previously by calling {@link AdvancedRobot#getDataFile(String) getDataFile()}.
* <p/>
* You should read {@link java.io.FileOutputStream} for documentation of this
* class.
* <p/>
* Please notice that the max. size of your data file is set to 200000
* (~195 KB).
*
* @see AdvancedRobot#getDataFile(String)
* @see java.io.FileOutputStream
*
* @author Mathew A. Nelson (original)
* @author Flemming N. Larsen (contributor)
*/
public class RobocodeFileOutputStream extends OutputStream {
  private final FileOutputStream out;
  private final String fileName;

  /**
   * Constructs a new RobocodeFileOutputStream.
   * See {@link java.io.FileOutputStream#FileOutputStream(File)}
   * for documentation about this constructor.
   *
   * @see java.io.FileOutputStream#FileOutputStream(File)
   */
  public RobocodeFileOutputStream(File file) throws IOException {
    this(file.getPath());
  }

  /**
   * Constructs a new RobocodeFileOutputStream.
   * See {@link java.io.FileOutputStream#FileOutputStream(FileDescriptor)}
   * for documentation about this constructor.
   *
   * @see java.io.FileOutputStream#FileOutputStream(FileDescriptor)
   */
  public RobocodeFileOutputStream(FileDescriptor fdObj) {
    throw new RobotException("Creating a RobocodeFileOutputStream with a FileDescriptor is not supported.");
  }

  /**
   * Constructs a new RobocodeFileOutputStream.
   * See {@link java.io.FileOutputStream#FileOutputStream(String)}
   * for documentation about this constructor.
   *
   * @see java.io.FileOutputStream#FileOutputStream(String)
   */
  public RobocodeFileOutputStream(String fileName) throws java.io.IOException {
    this(fileName, false);
  }

  /**
   * Constructs a new RobocodeFileOutputStream.
   * See {@link java.io.FileOutputStream#FileOutputStream(String, boolean)}
   * for documentation about this constructor.
   *
   * @see java.io.FileOutputStream#FileOutputStream(String, boolean)
   */
  public RobocodeFileOutputStream(String fileName, boolean append) throws IOException {
    this.fileName = fileName;
   
    final IThreadManagerBase threadManager = ContainerBase.getComponent(IThreadManagerBase.class);

    if (threadManager == null) {
      throw new RobotException("ThreadManager cannot be null!");
    }

    out = threadManager.createRobotFileStream(fileName, append);
  }

  /**
   * Closes this output stream. See {@link java.io.FileOutputStream#close()}
   * for documentation about this method.
   *
   * @see java.io.FileOutputStream#close()
   */
  @Override
  public final void close() throws IOException {
    out.close();
  }

  /**
   * Flushes this output stream. See {@link java.io.FileOutputStream#flush()}
   * for documentation about this method.
   *
   * @see java.io.FileOutputStream#flush()
   */
  @Override
  public final void flush() throws IOException {
    out.flush();
  }

  /**
   * Returns the filename of this output stream.
   *
   * @return the filename of this output stream.
   */
  public final String getName() {
    return fileName;
  }

  /**
   * Writes a byte array to this output stream.
   * See {@link java.io.FileOutputStream#write(byte[])} for documentation
   * about this method.
   *
   * @see java.io.FileOutputStream#write(byte[])
   */
  @Override
  public final void write(byte[] b) throws IOException {
    out.write(b);
  }

  /**
   * Writes a byte array to this output stream.
   * See {@link java.io.FileOutputStream#write(byte[], int, int)} for
   * documentation about this method.
   *
   * @see java.io.FileOutputStream#write(byte[], int, int)
   */
  @Override
  public final void write(byte[] b, int off, int len) throws IOException {
    out.write(b, off, len);
  }

  /**
   * Writes a single byte to this output stream.
   * See {@link java.io.FileOutputStream#write(int)} for documentation about
   * this method.
   *
   * @see java.io.FileOutputStream#write(int)
   */
  @Override
  public final void write(int b) throws IOException {
    out.write(b);
  }
}
TOP

Related Classes of robocode.RobocodeFileOutputStream

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.