I/O(input/output)流,即输入输出流。定义在java.io包中。
分类:
1、字节流和字符流—-数据单位不同
2、输入流和输出流—-传输方向不同
3、节点流和处理流—-功能不同
节点流:也叫低级流,从一个特定的IO设备(如 磁盘)续写数据的流,只能直接连接数据源进行读写。
处理流:高级流,对一个已经存在的节点流进行封装成流,通过封装后的流来实现流的读写能力,不会直接连接到实际的数据。
java.io:
在java.io中有四个流的顶级类
字节流:
1、InputStream
2、OutputStream
字符流:
3、Reader
4、Writer
二、字节流
在计算机中所有的文件都是以二进制(字节)的形式存在的。不管是InputStream还是OutputStream都提供了一个close()方法,该方法可以关闭流并释放与当前IO流相关的资源。
InputStream和OutputStream都是抽象类不能实例化。java针对不通过功能提供了不同的子类。
1、FileInputStream、FileOutputStream
import java.io.*;public class StreamTest { public static void main(String[] args) throws Exception { /*=============================读取文件内容====================================*/ //定义流 FileInputStream file_in = new FileInputStream("D:\\mycode\\Java\\test2\\src\\test.txt"); //定义变量储存读到的字节 int b=0; //while循环读取字节,当读到-1意味着已经读到最后,结束循环 // read() 每次读一个字节 // read(byte[] bs) 可以读取多个字节,并把读到的字节存入字节数组bs // read(byte[] bs,int offset,int len) 可以跳过offset个字节读取len个字节,并把读到的字节存入字节数组bs // readAllBytes() 一次性读取所有字节,返回一个字节数组 while ((b=file_in.read())!=-1){ System.out.println("=========="); System.out.println(b); //直接输出的时ASCII码 System.out.println((char) b); //转字符输出 System.out.println("=========="); } file_in.close(); /*=============================写出文件====================================*/ FileOutputStream file_out = new FileOutputStream("D:\\mycode\\Java\\test2\\src\\test2.txt"); String str1 = "hello world"; //write支持传入字节或者字节数组,写到文件之后还是hello world。 //write() 和read()类似,都可以传入字节数组操作多个字节。 file_out.write(str1.getBytes()); file_out.close(); /*=============================文件复制====================================*/ FileInputStream copy_in = new FileInputStream("D:\\mycode\\Java\\test2\\src\\test.txt"); FileOutputStream copy_out = new FileOutputStream("D:\\mycode\\Java\\test2\\src\\testCOPY2.txt"); copy_out.write(copy_in.readAllBytes()); }}
2、BufferedInputStream、BufferedOutputStream
© 版权声明
THE END
暂无评论内容