⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dataoutputstream.java

📁 linux下建立JAVA虚拟机的源码KAFFE
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
   * the high byte written first in the following manner:   * <p>   * <code>byte0 = (byte)((value & 0xFF000000) >> 24);<br>   * byte1 = (byte)((value & 0x00FF0000) >> 16);<br>   * byte2 = (byte)((value & 0x0000FF00) >> 8);<br>   * byte3 = (byte)(value & 0x000000FF);</code>   * <p>   *   * The value written can be read using the <code>readInt</code>   * method in <code>DataInput</code>.   *   * @param value The <code>int</code> value to write to the stream   *   * @exception IOException If an error occurs   *   * @see DataInput#readInt   */  public final synchronized void writeInt (int value) throws IOException  {    write ((byte) (0xff & (value >> 24)));    write ((byte) (0xff & (value >> 16)));    write ((byte) (0xff & (value >>  8)));    write ((byte) (0xff & value));  }  /**   * This method writes a Java long value to an output stream.  The 8 bytes   * of the passed value will be written "big endian".  That is, with   * the high byte written first in the following manner:   * <p>   * <code>byte0 = (byte)((value & 0xFF00000000000000L) >> 56);<br>   * byte1 = (byte)((value & 0x00FF000000000000L) >> 48);<br>   * byte2 = (byte)((value & 0x0000FF0000000000L) >> 40);<br>   * byte3 = (byte)((value & 0x000000FF00000000L) >> 32);<br>   * byte4 = (byte)((value & 0x00000000FF000000L) >> 24);<br>   * byte5 = (byte)((value & 0x0000000000FF0000L) >> 16);<br>   * byte6 = (byte)((value & 0x000000000000FF00L) >> 8);<br>   * byte7 = (byte)(value & 0x00000000000000FFL);</code>   * <p>   *   * The value written can be read using the <code>readLong</code>   * method in <code>DataInput</code>.   *   * @param value The <code>long</code> value to write to the stream   *   * @exception IOException If an error occurs   *   * @see DataInput#readLong   */  public final synchronized void writeLong (long value) throws IOException  {    write ((byte) (0xff & (value >> 56)));    write ((byte) (0xff & (value>> 48)));    write ((byte) (0xff & (value>> 40)));    write ((byte) (0xff & (value>> 32)));    write ((byte) (0xff & (value>> 24)));    write ((byte) (0xff & (value>> 16)));    write ((byte) (0xff & (value>>  8)));    write ((byte) (0xff & value));  }  /**   * This method writes a Java <code>float</code> value to the stream.  This   * value is written by first calling the method   * <code>Float.floatToIntBits</code>   * to retrieve an <code>int</code> representing the floating point number,   * then writing this <code>int</code> value to the stream exactly the same   * as the <code>writeInt()</code> method does.   *   * The value written can be read using the <code>readFloat</code>   * method in <code>DataInput</code>.   *   * @param value The <code>float</code> value to write to the stream   *   * @exception IOException If an error occurs   *   * @see #writeInt(int)   * @see DataInput#readFloat   * @see Float#floatToIntBits   */  public final void writeFloat (float value) throws IOException  {    writeInt (Float.floatToIntBits (value));  }  /**   * This method writes a Java <code>double</code> value to the stream.  This   * value is written by first calling the method   * <code>Double.doubleToLongBits</code>   * to retrieve an <code>long</code> representing the floating point number,   * then writing this <code>long</code> value to the stream exactly the same   * as the <code>writeLong()</code> method does.   *   * The value written can be read using the <code>readDouble</code>   * method in <code>DataInput</code>.   *   * @param value The <code>double</code> value to write to the stream   *   * @exception IOException If an error occurs   *   * @see #writeLong(long)   * @see DataInput#readDouble   * @see Double#doubleToLongBits   */  public final void writeDouble (double value) throws IOException  {    writeLong (Double.doubleToLongBits (value));  }  /**   * This method writes all the bytes in a <code>String</code> out to the   * stream.  One byte is written for each character in the   * <code>String</code>.   * The high eight bits of each character are discarded, thus this   * method is inappropriate for completely representing Unicode characters.   *   * @param value The <code>String</code> to write to the stream   *   * @exception IOException If an error occurs   */  public final void writeBytes (String value) throws IOException  {    int len = value.length();    for (int i = 0; i < len; ++i)      writeByte (value.charAt(i));  }  /**   * This method writes all the characters of a <code>String</code> to an   * output stream as an array of <code>char</code>'s. Each character   * is written using the method specified in the <code>writeChar</code>   * method.   *   * @param value The <code>String</code> to write to the stream   *   * @exception IOException If an error occurs   *   * @see #writeChar(char)   */  public final void writeChars (String value) throws IOException  {    int len = value.length();    for (int i = 0; i < len; ++i)      writeChar (value.charAt(i));  }  /**   * This method writes a Java <code>String</code> to the stream in a modified   * UTF-8 format.  First, two bytes are written to the stream indicating the   * number of bytes to follow.  Note that this is the number of bytes in the   * encoded <code>String</code> not the <code>String</code> length.  Next   * come the encoded characters.  Each character in the <code>String</code>   * is encoded as either one, two or three bytes.  For characters in the   * range of <code>\u0001</code> to <\u007F>, one byte is used.  The character   * value goes into bits 0-7 and bit eight is 0.  For characters in the range   * of <code>\u0080</code> to <code>\u007FF</code>, two bytes are used.  Bits   * 6-10 of the character value are encoded bits 0-4 of the first byte, with   * the high bytes having a value of "110".  Bits 0-5 of the character value   * are stored in bits 0-5 of the second byte, with the high bits set to   * "10".  This type of encoding is also done for the null character   * <code>\u0000</code>.  This eliminates any C style NUL character values   * in the output.  All remaining characters are stored as three bytes.   * Bits 12-15 of the character value are stored in bits 0-3 of the first   * byte.  The high bits of the first bytes are set to "1110".  Bits 6-11   * of the character value are stored in bits 0-5 of the second byte.  The   * high bits of the second byte are set to "10".  And bits 0-5 of the   * character value are stored in bits 0-5 of byte three, with the high bits   * of that byte set to "10".   *   * The value written can be read using the <code>readUTF</code>   * method in <code>DataInput</code>.   *   * @param value The <code>String</code> to write to the output in UTF format   *   * @exception IOException If an error occurs   *   * @see DataInput#readUTF   */  public final synchronized void writeUTF(String value) throws IOException  {    int len = value.length();    int sum = 0;    for (int i = 0; i < len && sum <= 65535; ++i)      {	char c = value.charAt(i);	if (c >= '\u0001' && c <= '\u007f')	  sum += 1;	else if (c == '\u0000' || (c >= '\u0080' && c <= '\u07ff'))	  sum += 2;	else	  sum += 3;      }    if (sum > 65535)      throw new UTFDataFormatException ();    int pos = 0;    byte[] buf = new byte[sum];    for (int i = 0; i < len; ++i)      {	char c = value.charAt(i);	if (c >= '\u0001' && c <= '\u007f')          buf[pos++] = (byte) c;	else if (c == '\u0000' || (c >= '\u0080' && c <= '\u07ff'))	  {	    buf[pos++] = (byte) (0xc0 | (0x1f & (c >> 6)));	    buf[pos++] = (byte) (0x80 | (0x3f & c));	  }	else	  {	    // JSL says the first byte should be or'd with 0xc0, but	    // that is a typo.  Unicode says 0xe0, and that is what is	    // consistent with DataInputStream.	    buf[pos++] = (byte) (0xe0 | (0x0f & (c >> 12)));	    buf[pos++] = (byte) (0x80 | (0x3f & (c >> 6)));	    buf[pos++] = (byte) (0x80 | (0x3f & c));	  }      }        writeShort (sum);    write(buf, 0, sum);  }} // class DataOutputStream

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -