Java之IO流使用
IO流
1.文件
1.1 什么是文件
1.2 文件流
1.3 文件常用操作方法
1.4 获取文件相关信息
1.5目录的操作
2.IO流原理及分类
2.1 IO流原理
2.2 流的分类
3.字节输入流InputStream
3.1文件字节输入流FileInputStream
4.字节输出流OutputStream
4.1文件字节输出流FileOutPutStream
5.字符输入流Reader
5.1文件字符输入流
6.字符输出流Writer
6.1文件字符输出流
1.文件
1.1 什么是文件
文件就是保存数据的地方
1.2 文件流
(1)文件在程序中是以流的形式来操作的
(2)流:数据在数据源(文件)和程序(内存)之间经历的路径
①输入流:数据从数据源(文件)到程序(内存)的路径
②输出流:数据从程序(内存)到数据源(文件)的路径
1.3 文件常用操作方法
(1)new File(String pathname) //根据路径创建一个File对象
(2)new File(File parent,String child) //根据父目录文件+子路径创建
(3)new File(String parent,String child) //根据父目录+子路径创建
//(1)new File(String pathname) //根据路径创建一个File对象 File file = new File("D:\\aaa.txt"); try { file.createNewFile(); System.out.println("文件创建成功了"); } catch (IOException e) { e.printStackTrace(); } //(2)new File(File parent,String child) //根据父目录文件+子路径创建 File parentFile = new File("D:\\"); String fileName = "bbb.txt"; File file1 = new File(parentFile, fileName); try { file1.createNewFile(); System.out.println("创建文件成功"); } catch (IOException e) { e.printStackTrace(); } // (3)new File(String parent,String child) //根据父目录+子路径创建 String fileName2 = "ccc.txt"; File file2 = new File("D:\\", fileName2); try { file2.createNewFile(); System.out.println("创建文件成功"); } catch (IOException e) { e.printStackTrace(); }
注意:这里的file对象,在Java程序中,只是一个对象。只有执行了createNewFile方法,才会真正的在磁盘上创建该文件
1.4 获取文件相关信息
File file = new File("D:\\aaa.txt"); System.out.println("文件名字" + file.getName()); // 文件名字aaa.txt System.out.println("文件绝对路径" + file.getAbsolutePath()); // 文件绝对路径D:\aaa.txt System.out.println("文件父级目录" + file.getParent()); // 文件父级目录D:\ System.out.println("文件大小(字节)" + file.length()); // 文件大小(字节)12 System.out.println("文件是否存在" + file.exists()); // 文件是否存在true System.out.println("是否为一个文件" + file.isFile()); // 是否为一个文件true System.out.println("是否为一个文件夹" + file.isDirectory()); // 是否为一个文件夹false
1.5目录的操作
(1)mkdir() 创建一级目录
(2)mkdirs() 创建多级目录
注意:在Java编程中,目录也被当最文件
String directoryPath = "D:\\a\\b"; File file = new File(directoryPath); if (file.exists()){ System.out.println(directoryPath+"已存在"); }else { file.mkdirs(); } }
2.IO流原理及分类
2.1 IO流原理
(1)I/O是Input/Output的缩写,用于处理数据传输。如读/写文件,网络通讯等。
(2)Java程序中,对于数据的输入/输出操作以”流(Stream)“的方式进行。
(3)java.io包下提供了各种”流“类和接口,用以获取不同种类的数据,并通过方法输入或输出数据。
2.2 流的分类
(1)按操作数据单位的不同分为:字节流(8 bit)二进制文件,字符流(按字符)文本文件
(2)按数据流的流向不同分为:输入流、输出流
(3)按流的角色不同分为:节点流,处理流/包装流
3.字节输入流InputStream
(1)void close() :关闭此输入流并释放与该流关联的所有系统资源。
(2)abstract int read():从输入流中读取数据的下一个字节。
(3)int read(byte[] b):从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。
(4)int read(byte[] b, int off, int len) : 将输入流中最多 len 个数据字节读入 byte 数组。
3.1文件字节输入流FileInputStream
构造方法:
(1)FileInputStream(File file)
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
(2)FileInputStream(String name)
通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
4.字节输出流OutputStream
(1)void close() :关闭此输出流并释放与此流有关的所有系统资源。
(2)void flush() :刷新此输出流并强制写出所有缓冲的输出字节。
(3)void write(byte[] b) :将 b.length 个字节从指定的 byte 数组写入此输出流。
(4)void write(byte[] b, int off, int len):将指定 byte 数组中,从 off索引 开始写入 len 个字节到此输出流。
(5)abstract void write(int b) : 将指定的字节写入此输出流。
4.1文件字节输出流FileOutPutStream
1.构造方法:
(1)FileOutputStream(File file): 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
(2)FileOutputStream(String name):创建一个向具有指定名称的文件中写入数据的输出文件流。
(3)FileOutputStream(File file, boolean append): 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
(4)FileOutputStream(String name, boolean append):创建一个向具有指定 name 的文件中写入数据的输出文件流。
boolean append:追加写开关
①true:创建对象不会覆盖源文件,继续在文件末尾追加写数据
②false:创建一个新文件,覆盖原文件
5.字符输入流Reader
1.共性成员方法
(1)int read(): 读取单个字符。
(2)int read(char[] cbuf): 一次读取多个字符,将字符读入数组。
(3) abstract void close():关闭该流并释放与之关联的所有资源。
5.1文件字符输入流
1.构造方法摘要
(1)FileReader(File file)
在给定从中读取数据的 File 的情况下创建一个新 FileReader。
(2)FileReader(String fileName)
在给定从中读取数据的文件名的情况下创建一个新 FileReader。
6.字符输出流Writer
1.共性的成员方法
(1)abstract void close(): 关闭此流,但要先刷新它。
(2)abstract void flush(): 刷新该流的缓冲。
(3)void write(char[] cbuf): 写入字符数组。
(4)abstract void write(char[] cbuf, int off, int len)
写入字符数组的某一部分,off数组的开始索引,len写的字符个数
(5)void write(int c) : 写入单个字符。
(6)void write(String str): 写入字符串。
(7)void write(String str, int off, int len):写入字符串的某一部分,off字符串的开始索引,len写的字符个数
2.flush和close方法的区别:
(1)flush:刷新缓冲区,流对象可以继续使用
(2)close:先刷新缓冲区,然后通知系统释放资源。流对象不可以再被使用了。
6.1文件字符输出流
1.构造方法
(1)FileWriter(File file)
根据给定的 File 对象构造一个 FileWriter 对象。
(2)FileWriter(File file, boolean append)
根据给定的 File 对象构造一个 FileWriter 对象。
(3)FileWriter(String fileName)
根据给定的文件名构造一个 FileWriter 对象。
(4)FileWriter(String fileName, boolean append)
根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。
参数:String filename,File file:写入数据的目的地