📄 streamtest.java
字号:
package io;
import java.io.*;
public class StreamTest {
public static void main(String[] args) throws Exception{
//------------------------(1)----------------------------------
/* int data;
while((data=System.in.read())!=-1){//从标准输入流(即键盘)读取数据到标准输出流(即显示器).
System.out.write(data);
}
*/
//------------------------(/1)----------------------------------
//------------------------(2)-----------------------------------
/*
FileOutputStream fos=new FileOutputStream("1.txt");//创建指向当前目录下"1.txt"文件的输出流
fos.write("www.swu.edu.cn/index.jsp 我的学校西南大学网址".getBytes());//将字符串组装成字节数组
fos.close();//关闭输出流.
FileInputStream fis=new FileInputStream("1.txt");//创建指向当前目录下"1.txt"文件的输入流
byte[] buf=new byte[100];
int len=fis.read(buf);//将文件中的数据读入buf字节数组中,并返回实际读取的字节长度.
System.out.println(new String(buf,0,len));//构造一个新的字符串,是由字节数组buf的下标为0到len-1元素构成.
fis.close();//关闭输入流
*/
//------------------------(/2)----------------------------------
//------------------------(3)----------------------------------
/*
FileOutputStream fos=new FileOutputStream("1.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);//将文件输出流写入到缓冲输出流中。
bos.write("www.swu.edu.cn/index.jsp 我的学校西南大学网址".getBytes());
//bos.flush();//将缓冲区的数据写入到硬盘.
bos.close();//只需关闭尾端的流即可.关闭流时,写入缓冲区的数据也被自动写入硬盘.
FileInputStream fis=new FileInputStream("1.txt");
BufferedInputStream bis=new BufferedInputStream(fis);//将文件输入流写入到缓冲输入流中。
byte[] buf=new byte[100];
int len=bis.read(buf);
System.out.println(new String(buf,0,len));
bis.close();
/*注意:OutputStream 和 InputStream是节点流,而BufferedOutputStream
* 和BufferedInputStream是过滤流,而过滤流必须以已经存在的节点流为源点。
* 又因为FileOutputStream 和 FileInputStream分别是OutputStream
* 和 InputStream 的派生类,故也是节点流。BufferedOutputStream将节点流写入到
* 缓冲区,以提高流的传输效率。
*/
//------------------------(/3)----------------------------------
//------------------------(4)----------------------------------
FileOutputStream fos=new FileOutputStream("1.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);//将文件输出流写入到缓冲输出流中。
DataOutputStream dos=new DataOutputStream(bos);/*将缓冲输出流写入到能读取基本数据类型的DataOutputStream类型的流中。
这样dos流就具备了缓冲功能和读取基本数据类型功能。当然也可以直接这样DataOutputStream dos=new DataOutputStream(fos);定义
若用这种方法,则dos流只具备读取基本数据类型功能而不具备缓冲功能。*/
//dos.write("www.swu.edu.cn/index.jsp 我的学校西南大学网址".getBytes());
//bos.flush();//将缓冲区的数据写入到硬盘.
//bos.close();//只需关闭尾端的流即可.关闭流时,写入缓冲区的数据也被自动写入硬盘.
//DataOutputStream流能够写入八种基本数据类型。
int i=89;
float f=3.1415926f;
short s=12345;
byte b='B';
double d=4.1415926;
boolean bl=false;
char c='C';
long l=31415926l;
dos.writeFloat(f);
dos.writeInt(i);
dos.writeShort(s);
dos.writeDouble(d);
dos.writeChar(c);
dos.writeBoolean(bl);
dos.writeLong(l);
dos.writeByte(b);
dos.close();//只需关闭尾端的流即可,bos流和fos流将自动关闭,同时保存在缓冲区的数据被写入到硬盘中。
FileInputStream fis=new FileInputStream("1.txt");
BufferedInputStream bis=new BufferedInputStream(fis);//将文件输入流写入到缓冲输入流中。
/*
byte[] buf=new byte[100];
int len=bis.read(buf);
System.out.println(new String(buf,0,len));
bis.close();
*/
DataInputStream dis=new DataInputStream(bis);
System.out.println(dis.readFloat());
System.out.println(dis.readInt());
System.out.println(dis.readShort());
System.out.println(dis.readDouble());
System.out.println(dis.readChar());
System.out.println(dis.readBoolean());
System.out.println(dis.readLong());
System.out.println(dis.readByte());
dis.close();
//要注意读与写的次序要对应否则会出错。
//------------------------(/4)----------------------------------
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -