流式
IO
流 (Stream) 是字节的源或目的。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
两种基本的流是:输入流 (Input Stream) 和输出流 (Output Stream) 。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。
流 (Stream) 是字节的源或目的。
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
两种基本的流是:输入流 (Input Stream) 和输出流 (Output Stream) 。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。
流的分类
节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域。
过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。
过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。
InputStream
三个基本的读方法
abstract int read() :读取一个字节数据,并返回读到的数据,如果返回 -1 ,表示读到了输入流的末尾。
int read(byte[]?b) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回 -1 ,表示读到了输入流的末尾。
int read(byte[]?b, int?off, int?len) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回 -1 ,表示读到了输入流的末尾。 off 指定在数组 b 中存放数据的起始偏移位置; len 指定读取的最大字节数。
其它方法
long skip(long?n) :在输入流中跳过 n 个字节,并返回实际跳过的字节数。
int available() :返回在不发生阻塞的情况下,可读取的字节数。
void close() :关闭输入流,释放和这个流相关的系统资源。
void mark(int?readlimit) :在输入流的当前位置放置一个标记,如果读取的字节数多于 readlimit 设置的值,则流忽略这个标记。
void reset() :返回到上一个标记。
boolean markSupported() :测试当前流是否支持 mark 和 reset 方法。如果支持,返回 true ,否则返回 false 。
java.io 包中 InputStream 的类层次
abstract int read() :读取一个字节数据,并返回读到的数据,如果返回 -1 ,表示读到了输入流的末尾。
int read(byte[]?b) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回 -1 ,表示读到了输入流的末尾。
int read(byte[]?b, int?off, int?len) :将数据读入一个字节数组,同时返回实际读取的字节数。如果返回 -1 ,表示读到了输入流的末尾。 off 指定在数组 b 中存放数据的起始偏移位置; len 指定读取的最大字节数。
其它方法
long skip(long?n) :在输入流中跳过 n 个字节,并返回实际跳过的字节数。
int available() :返回在不发生阻塞的情况下,可读取的字节数。
void close() :关闭输入流,释放和这个流相关的系统资源。
void mark(int?readlimit) :在输入流的当前位置放置一个标记,如果读取的字节数多于 readlimit 设置的值,则流忽略这个标记。
void reset() :返回到上一个标记。
boolean markSupported() :测试当前流是否支持 mark 和 reset 方法。如果支持,返回 true ,否则返回 false 。
java.io 包中 InputStream 的类层次
OutputStream
三个基本的写方法
abstract void write(int?b) :往输出流中写入一个字节。
void write(byte[]?b) :往输出流中写入数组 b 中的所有字节。
void write(byte[]?b, int?off, int?len) :往输出流中写入数组 b 中从偏移量 off 开始的 len 个字节的数据。
其它方法
void flush() :刷新输出流,强制缓冲区中的输出字节被写出。
void close() :关闭输出流,释放和这个流相关的系统资源。
java.io 包中 OutputStream 的类层次
abstract void write(int?b) :往输出流中写入一个字节。
void write(byte[]?b) :往输出流中写入数组 b 中的所有字节。
void write(byte[]?b, int?off, int?len) :往输出流中写入数组 b 中从偏移量 off 开始的 len 个字节的数据。
其它方法
void flush() :刷新输出流,强制缓冲区中的输出字节被写出。
void close() :关闭输出流,释放和这个流相关的系统资源。
java.io 包中 OutputStream 的类层次
——————————————————————————-
——————————————————————————-
Demo1 :在控制台读取键盘输入,然后显示。 Ctrl+C 结束运行
——————————————————————————-
——————————————————————————-
Demo1 :在控制台读取键盘输入,然后显示。 Ctrl+C 结束运行
——————————————————————————-
import
java.io. * ;
public class StreamDemo {
public static void main(String[] args) throws Exception {
int data;
while ((data = System.in.read()) != - 1 ) {
System.out.write(data);
}
}
}
public class StreamDemo {
public static void main(String[] args) throws Exception {
int data;
while ((data = System.in.read()) != - 1 ) {
System.out.write(data);
}
}
}
——————————————————————————-
——————————————————————————-
基本的流类
1 、 FileInputStream 和 FileOutputStream
节点流,用于从文件中读取或往文件中写入字节流。如果在构造 FileOutputStream 时,文件已经存在,则覆盖这个文件。
——————————————————————————-
Demo2 :将字符串写入特定文件,注意 write 方法只接收字符数组。
——————————————————————————-
import
java.io. * ;
public class StreamDemo {
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream( " 1.txt " );
/**/ /*
* 注意: FileOutputStream 的 write 方法接收字符数组,不能接收 String 字符串,
* 所以要用 String 的 getBytes 方法生成一个字符数组
*/
fos.write( " http://www.cnblogs.com " .getBytes());
fos.close();
}
}
public class StreamDemo {
public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream( " 1.txt " );
/**/ /*
* 注意: FileOutputStream 的 write 方法接收字符数组,不能接收 String 字符串,
* 所以要用 String 的 getBytes 方法生成一个字符数组
*/
fos.write( " http://www.cnblogs.com " .getBytes());
fos.close();
}
}
转载于:https://blog.51cto.com/2044575/381655