流的概念
流(Stream),也有小溪的意思,系统中的流也可以用小溪来理解:单方向的,有位置的。
像一开始的“hello world”程序中,System是一个类,out是System类的一个静态成员,println是out成员可以做的一些事情
(方法),out这个成员是做输出的一个流。
Java中,所有输出都基于OutputStream,所有输入都基于InputStream这个类,
这两个类都是抽象的,我们能用它们具体的子类,我们可以参考来得知可以使用的方法
(如out除了println还可以使用什么方法)
流的实例
输入输出
public class test {
public static void main(String[] args){
System.out.print("hello world:");
byte[] buffer = new byte[1024];
try { //read是阻塞函数(走到这里如果没输入会一直等待)
int len = System.in.read(buffer); //读取输入的字符,返回输入的字符的个数
String s = new String(buffer, 0, len);
System.out.println("读到了"+len+"字节");
System.out.println(s);
System.out.println("s的长度是: "+s.length());
} catch (IOException e) {
e. printStackTrace();
}
}
}
结果
hello world:123abc
读到了8字节
123abc
s的长度是: 8
输出到文件
public class test {
public static void main(String[] args){
System.out.print("hello");
byte[] buffer = new byte[10];
for(int i=0; i<buffer.length; i++) {
buffer[i] = (byte)i;
}
try {
FileOutputStream out = new FileOutputStream("a.dat");
out.write(buffer);
out.close();
} catch (IOException e) {
e. printStackTrace();
}
}
}
会在工作目录下创建一个a.dat文件,可以用WinHex软件来查看二进制文件。
现在基本只有在造轮子的时候会裸的使用FileInputStream和FileOutputStream来操作文件了。
在工作用我们不怎么使用FileInputStream和FileOutputStream来操作文件了,都是使用别人写好的工具。