• java io读书笔记(5) Writing Bytes to Output Streams


    outputstream类是所有的字符输出类的父类,他是一个抽象类。

    对于OutputStream类来说,其最基础的方法就是:write().

    public abstract void write(int b) throws IOException

    这个方法,写一个无符号字符(在0-255之间)

    举例如下:

    import java.io.*;
    public class AsciiChart {
      public static void main(String[] args) {
        for (int i = 32; i < 127; i++) {
          System.out.write(i);
          // break line after every eight characters.
          if (i % 8 == 7) System.out.write('
    ');
          else System.out.write('	');
        }
        System.out.write('
    ');
       }
    }

    在这里,请注意输出: 和 。分别对应数字是:10和9,也可以这么写:

    import java.io.*;
    public class AsciiChart {
      public static void main(String[] args) {
        for (int i = 32; i < 127; i++) {
          System.out.write(i);
          // break line after every eight characters.
          if (i % 8 == 7) System.out.write(10);
          else System.out.write(9);
        }
        System.out.write('
    ');
       }
    }

    输出如下:

    % java AsciiChart
    !       "       #       $       %       &       '
    (       )       *       +       ,       -       .       /
    0       1       2       3       4       5       6       7
    8       9       :       ;       <       =       >       ?
    @       A       B       C       D       E       F       G
    H       I       J       K       L       M       N       O
    P       Q       R       S       T       U       V       W
    X       Y       Z       [              ]       ^       _
    `       a       b       c       d       e       f       g
    h       i       j       k       l       m       n       o
    p       q       r       s       t       u       v       w
    x       y       z       {       |       }       ~


    而outputstream的这个抽象类具体定义如下:

    /*
     * Copyright (c) 1994, 2004, Oracle and/or its affiliates. All rights reserved.
     * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     *
     */

    package java.io;

    /**
     * This abstract class is the superclass of all classes representing
     * an output stream of bytes. An output stream accepts output bytes
     * and sends them to some sink.
     * <p>
     * Applications that need to define a subclass of
     * <code>OutputStream</code> must always provide at least a method
     * that writes one byte of output.
     *
     * @author  Arthur van Hoff
     * @see     java.io.BufferedOutputStream
     * @see     java.io.ByteArrayOutputStream
     * @see     java.io.DataOutputStream
     * @see     java.io.FilterOutputStream
     * @see     java.io.InputStream
     * @see     java.io.OutputStream#write(int)
     * @since   JDK1.0
     */
    public abstract class OutputStream implements Closeable, Flushable {
        /**
         * Writes the specified byte to this output stream. The general
         * contract for <code>write</code> is that one byte is written
         * to the output stream. The byte to be written is the eight
         * low-order bits of the argument <code>b</code>. The 24
         * high-order bits of <code>b</code> are ignored.
         * <p>
         * Subclasses of <code>OutputStream</code> must provide an
         * implementation for this method.
         *
         * @param      b   the <code>byte</code>.
         * @exception  IOException  if an I/O error occurs. In particular,
         *             an <code>IOException</code> may be thrown if the
         *             output stream has been closed.
         */
        public abstract void write(int b) throws IOException;

        /**
         * Writes <code>b.length</code> bytes from the specified byte array
         * to this output stream. The general contract for <code>write(b)</code>
         * is that it should have exactly the same effect as the call
         * <code>write(b, 0, b.length)</code>.
         *
         * @param      b   the data.
         * @exception  IOException  if an I/O error occurs.
         * @see        java.io.OutputStream#write(byte[], int, int)
         */
        public void write(byte b[]) throws IOException {
            write(b, 0, b.length);
        }

        /**
         * Writes <code>len</code> bytes from the specified byte array
         * starting at offset <code>off</code> to this output stream.
         * The general contract for <code>write(b, off, len)</code> is that
         * some of the bytes in the array <code>b</code> are written to the
         * output stream in order; element <code>b[off]</code> is the first
         * byte written and <code>b[off+len-1]</code> is the last byte written
         * by this operation.
         * <p>
         * The <code>write</code> method of <code>OutputStream</code> calls
         * the write method of one argument on each of the bytes to be
         * written out. Subclasses are encouraged to override this method and
         * provide a more efficient implementation.
         * <p>
         * If <code>b</code> is <code>null</code>, a
         * <code>NullPointerException</code> is thrown.
         * <p>
         * If <code>off</code> is negative, or <code>len</code> is negative, or
         * <code>off+len</code> is greater than the length of the array
         * <code>b</code>, then an <tt>IndexOutOfBoundsException</tt> is thrown.
         *
         * @param      b     the data.
         * @param      off   the start offset in the data.
         * @param      len   the number of bytes to write.
         * @exception  IOException  if an I/O error occurs. In particular,
         *             an <code>IOException</code> is thrown if the output
         *             stream is closed.
         */
        public void write(byte b[], int off, int len) throws IOException {
            if (b == null) {
                throw new NullPointerException();
            } else if ((off < 0) || (off > b.length) || (len < 0) ||
                       ((off + len) > b.length) || ((off + len) < 0)) {
                throw new IndexOutOfBoundsException();
            } else if (len == 0) {
                return;
            }
            for (int i = 0 ; i < len ; i++) {
                write(b[off + i]);
            }
        }

        /**
         * Flushes this output stream and forces any buffered output bytes
         * to be written out. The general contract of <code>flush</code> is
         * that calling it is an indication that, if any bytes previously
         * written have been buffered by the implementation of the output
         * stream, such bytes should immediately be written to their
         * intended destination.
         * <p>
         * If the intended destination of this stream is an abstraction provided by
         * the underlying operating system, for example a file, then flushing the
         * stream guarantees only that bytes previously written to the stream are
         * passed to the operating system for writing; it does not guarantee that
         * they are actually written to a physical device such as a disk drive.
         * <p>
         * The <code>flush</code> method of <code>OutputStream</code> does nothing.
         *
         * @exception  IOException  if an I/O error occurs.
         */
        public void flush() throws IOException {
        }

        /**
         * Closes this output stream and releases any system resources
         * associated with this stream. The general contract of <code>close</code>
         * is that it closes the output stream. A closed stream cannot perform
         * output operations and cannot be reopened.
         * <p>
         * The <code>close</code> method of <code>OutputStream</code> does nothing.
         *
         * @exception  IOException  if an I/O error occurs.
         */
        public void close() throws IOException {
        }

    }




  • 相关阅读:
    zabbix3.0.4通过自定义shell脚本添加对关键日志文件的监控
    zabbix添加对自定义无规则的关键日志文件的监控
    zabbix3.0监控centos当主机cpu使用率超过90%的时候报警
    elasticsearch5.0.1集群一次误删除kibana索引引发的血案
    安装ClamAV对centos系统进行病毒查杀
    Window下通过charles代理抓取iphone/android手机Https请求乱码问题处理
    zabbix3.0.4报错Get value from agent failed: cannot connect to [[1.1.1.1]:10050]: [4] Interrupted syste
    python操作haproxy.cfg文件
    【转】Hadoop集群添加磁盘步骤
    【转】HADOOP HDFS BALANCER介绍及经验总结
  • 原文地址:https://www.cnblogs.com/aomi/p/3192713.html
Copyright © 2020-2023  润新知