摘自Herbert 关于Java一书的摘要。
要写入文件,可以使用FileOutputStream.定义的 can ( )方法其最简单的形式如下所示:
void write(int byteval) throws IOException此方法将( byteval指定的字节)写入文件。尽管byteval被声明为整数,但只有低阶8位被写入文件。
这是否意味着只能编写2^8 =256个组合。如果我们必须包括扩展的ASCII或Unicode的话,该怎么办?
第二,
定义了两种类型的:字节和字符。字节流为处理字节的输入和输出提供了一种方便的方法。例如,在读取或写入二进制数据时使用字节流。字符流为处理字符的输入和输出提供了一种方便的方法。它们使用Unicode,因此可以国际化。此外,在某些情况下,字符流比字节流更有效。
At the lowest level, all I/O is still byte-oriented. The character-based streams simply provide a
convenient and efficient means for handling characters.控制台输出最容易地通过print( )和println( )完成。这些方法由System.out).引用的类PrintStream (即对象的类型)定义。尽管System.out是一个字节流,但是将它用于简单的程序输出仍然是可以接受的。因为OutputStream,是从PrintStream派生出来的输出流,所以它还实现了低级方法write( )。因此,可以使用 write ( )向控制台写入。PrintStream定义的最简单的write( )形式如下所示:
void write(int byteval)此方法将byteval指定的字节写入流。尽管byteval被声明为整数,但只写入了低阶8位.下面是一个简短的示例,它使用write( )输出字符“A”,后面跟着屏幕上的换行符:
class WriteDemo {
public static void main(String args[]) {
int b;
b = 'A';
System.out.write(b);
System.out.write('\n');
System.out.write(65);
System.out.write('\n');
System.out.write('A');
System.out.write('\n');
}
}输出:
A
A
A尽管System.out是一个字节流,但是为什么它以字符的形式输出而不是以字节的形式输出。(或者说我做错了。字节流与输出的表示无关。)
发布于 2014-10-11 08:16:57
在Java程序之外,一切都是字节流。
在Java中,流是原始字节。您可以使用流以“本机”未修改的形式直接访问外部数据。
Java读取器是在字节和字符(16位实体)之间转换的流的包装器,使用某种编码约定(即UTF-8,ISO-8850-1)。
System.out是一个PrintStream,它是一种混合。它基本上是一个字节流,因此write(65)编写ASCII字符A。但是,PrintStream还碰巧包括一些使用系统默认编码将Character和String值转换为字节的方法。因此,如果您的默认编码是UTF-8,则可以编写
char uc = '÷'; // Unicode 0x00f7
System.out.print(uc);输出将是2字节序列0xC3,0xB7,这是÷符号的UTF-8编码.
发布于 2014-10-11 07:12:17
因为System.out是默认分配的PrintStream (控制台输出),所以对System.out.write( int )的任何调用都会将int值转换为ASCII。
因此,如果您想打印65,您必须System.out.write("65");
一切取决于分配给您的作者的流。
https://stackoverflow.com/questions/26311978
复制相似问题