流式
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)
。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。
流的分类
节点流:从特定的地方读写的流类,例如:磁盘或一块内存区域。
过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。
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
的类层次
——————————————————————————-
——————————————————————————-
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);
}
}
}
——————————————————————————-
——————————————————————————-
基本的流类
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( " " .getBytes());
fos.close();
}
}
转载于:https://blog.51cto.com/2044575/381655