程序的输入与输出
我们先来认识一下什么时在程序中输入与输出
输入是从外界到程序中的方向,是我们程序用于获取外界信息的过程,是"读"的过程
输出是从程序到外界的方法,是我们程序向外界发送信息的过程,是"写"的过程
java.io.InputStream与OutputStream
输入流与输出流
这里的流相当于是程序与外界相连的一根管道,用于传输数据.而数据就是字节(2进制)
InputStream和OutputStream是两个超类,抽象类. java中实际用于读写数据的流都继承自他们.
文件流
java.io.FileInputStream和FileOutputStream 这两个流就继承自InputStream和OutputStream 这两个流是用于连接我们程序和文件之间的管道,读写文件数据(读写硬盘)的目录要存在
输出OutputStream
FileOutputStream是用于连接程序与程序的管道,负责将程序的数据发送到文件中 常用的构造方法: FileOutputStream(File file) FileOutputStream(String path) 注:如果指定的文件不存在,文件流会自动创建它.前提是该文件所在目录要存在
FileOutputStream fos = new FileOutputStream("./fos.dat");/*OutputStream上定义的方法:void write(int d)通过当前输出流向目标位置写出1个字节,写出给定int值对应2进制的"低八位"fos.write(1);1个int值4个字节,32位2进制00000000 00000000 00000000 00000001^^^^^^^^实际写出的数据fos.dat文件中:00000001---------------------------------------------fos.write(2);1个int值4个字节,32位2进制00000000 00000000 00000000 00000010^^^^^^^^实际写出的数据fos.dat文件中:00000001 00000010*/fos.write(1);fos.write(2);System.out.println("写出完毕");fos.close();//流使用完毕后要关闭
输入InputStream
使用文件输入流从文件中读取字节数据
InputStream的超类中定义了读取一个字节的方法int read()
通过流读取1个字节到程序中,返回的int值对应的2进制"低八位"有效.
如果返回的int值直接表示整数-1,则表示流读取到了末尾EOF EOF:end of file
FileInputStream fis = new FileInputStream("./fos.dat");fos.dat内容:00000001 00000010
---------------------------------------------------------------------第一次调用:int d = fis.read()fos.dat内容:00000001 00000010^^^^^^^^读取的字节读取后变量d的2进制样子:00000000 00000000 00000000 00000001|---------补充24个0-------| ^^^^^^^^读取到的数据*/int d = fis.read();System.out.println(d);//1/*第二次调用:d = fis.read()fos.dat内容:00000001 00000010^^^^^^^^读取的字节读取后变量d的2进制样子:00000000 00000000 00000000 00000010|---------补充24个0-------| ^^^^^^^^读取到的数据*/d = fis.read();System.out.println(d);//2/*第三次调用:d = fis.read()fos.dat内容:00000001 00000010^^^^^^^^文件末尾读取后变量d的2进制样子:11111111 11111111 11111111 11111111|------------补充32个1-------------|*/d = fis.read();//-1System.out.println(d);System.out.println("读取完毕");fis.close();