io流 知识点+代码实例
需求 : 如何实现读写文件内部的内容?流 : 数据以先入先出的方式进行流动相当于管道,作用用来传输数据数据源-->流-->目的地流的分类 :流向分 : 以程序为中心输入流输出流操作单元 :字节流 : 万能流字符流 : 只能操作纯文本文件功能分 :节点流 : 真实实现读写的功能流(包装流|处理流) : 加强节点流的功能,提高节点流的性能所有的功能流都需要包裹节点流进行使用所有的分类相辅相成java.io包InputStream : 此抽象类是表示输入字节流的所有类的超类。数据源 : 文件 | 字节数据文件 : FileInputStream字节数据 : ByteArrayInputStreamOutputStream : 此抽象类是表示输出字节流的所有类的超类。FileInputStream : 文件字节输入流功能分 : 节点流 操作单元分 : 字节流 流向分 : 输入流从文件中读入数据到程序实现步骤 :1.与文件建立联系 File->数据源2.创建文件字节输入流->管道3.读取数据4.使用数据5.关闭资源
读取文件中单个字符 is.read()
public class IO1 {public static void main(String[] args) throws IOException {File src=new File("D://AAA/test.txt");FileInputStream is= new FileInputStream(src);int num1=is.read();System.out.println((char)num1);System.out.println((char)(is.read()));is.close();}
}
/*字节流实现文件拷贝 : *****数据源 --文件字节输入流 --> 程序 --->文件字节输出流--->目的地练习 : 图片拷贝*/
public class Class005_CopyFile {public static void main(String[] args) {//1.与文件建立联系InputStream is = null;OutputStream os = null;try {//2.构建流(输入,输出)is = new FileInputStream("D://AAA/test.txt");os = new FileOutputStream("D:/test.txt");//3.读入写出byte[] car = new byte[1024];int len = -1;while((len=is.read(car))!=-1){os.write(car,0,len);}//4.刷出os.flush();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {//5.关闭(后打开的先关闭)if(os!=null){try {os.close();} catch (IOException e) {e.printStackTrace();}}if(is!=null){try {is.close();} catch (IOException e) {e.printStackTrace();}}}
OutputStream : 此抽象类是表示输出字节流的所有类的超类。 根据目的地选择具体的子类(节点流)文件 : FileOutputStream ****字节数组 : ByteArrayOutputStreamFileOutputStream : 文件字节输出流使用文件字节输出流将制定的文本内容写出到文件中 :1.与文件建立联系(目的地文件)2.构建文件字节输出流3.准备数据4.写出数据5.刷出6.关闭注意 : 输出流写出数据时,如果源文件存在并且有内容,会默认覆盖,如果想要实现追加,使用重载构造器,boolean append->true追加,false覆盖(默认)如果源文件不存在,会自动到目的地所在路径进行创建如果目的地所在路径不存在,会抛出异常java.io.FileNotFoundException
public class IO2 {public static void main(String[] args) throws IOException {FileOutputStream os=new FileOutputStream("D:/AAA/AAA.txt",true);int i=97;String str="twlw";os.write(i);os.write(str.getBytes());os.flush();os.close();}
}