以内存为参照物,往内存中去,叫输入或读
从内存中出,叫输出或写
字节流:有的流按字节的方式读取,一次读取一个字节,这种流是万能的
字符流:有的流是按照字符的方式读取数据的,一次读取一个字符,这种是为了读取普通文本文件而存在的,word文件也不可以读取
java中所有的流都是在:java.io.*下
java IO流这块有四大家族,都是抽象类:
java.io.InputStream 字节输入流
java.io.OutputStream 字节输出流
java.io.Reader 字符输入流
java.io.Writer 字符输出流
注意:在java中只要类名以stream结尾的都是字节流,以Reader/Writer结尾的都是字符流
所有的流都实现了:java.io.Closeable接口,都是有close()方法,用完记得关闭
所有的输出流都实现了:java.io.Flushable接口,都是可刷新的,都有flush()方法,输出流在最终输出之后,一定要flush(),清空管道
java.io下需要掌握的流有16个
文件专属:
java.io.FileInputStream
java.io.FileOutputStream
java.io.FileReader
java.io.FileWriter
转换流:将字节流转换成字符流
java.io.InputStreamReader
java.io.InputStreamWriter
缓冲流专属:
java.io.BufferedReader
java.io.BufferedWriter
java.io.BufferedInputStream
java.io.BuffereredOutputStream
数据流专属:
java.io.DataInputStream
java.io.DataOutputStream
对象专属流:
java.io.ObjectInputStream
java.io.ObjectOutputStream
标准输出流:
java.io.PrintWriter
java.io.PrintStream
获取绝对路径: String path= Thread.currentThread().getContextClassLoader.getResource(“起点是从类的根路径src那里”).getPath();
Thread.currentThread()当前线程
getContextClassLoader可以获取到类加载器
getResource从类的根路径下加载资源