IO流01
-
文件
文件流
文件再程序中是以流的形式来操作的
流:数据再数据源(文件)和程序(内存)之间经理的路径常用的文件操作
创建文件对象
new File(String pathname) //根据路径构建一个File对象
new File(File parent, String child) //根据父目录文件+子路径构建
new File(String parent, String child) //根据父目录+子路径构建
之后通过createNewFile()创建新文件
获取文件信息方法 作用 getName 获取文件名 getAbsolutePath 获取绝对路径 getParent 获取父目录 length 文件大小(字节) exists 判断是否存在 isFIle 判断是不是文件 isDirectory 判断是不是目录 目录操作和文件删除
mkdir创建一级目录
mkdirs创建多级目录
delete删除空目录或文件IO流原理及流的分类
按操作数据单位不同分为:字节流(8 bit)和字符流(按字符)
按数据流的流向不同分为:输入流和输出流
按流的角色不同分为:节点流,处理流/包装流抽象基类 字节流 字符流 输入流 InputStream Reader 输出流 OutputStream Writer InputStream常用子类
FileInputStream:文件输入流
构造器:可以通过一个File对象,或者一个文件描述符,或者文件的完整路径进行构造public void readFile(){ String filePath = "d:\\hello.txt"; int data; FileInputStream file = null; try { file = new FileInputStream(filePath); //read方法从输入流读取一个字节的数据,输入结束返回-1 while((data = file.read()) != -1){ System.out.print((char)data); } } catch (IOException e) { throw new RuntimeException(e); } finally { //关闭文件流,释放资源 try { file.close(); } catch (IOException e) { throw new RuntimeException(e); } } }
普通的read方法效率较低,可使用read(byte[] b)方法,该方法一次读取最多b.length个字节,如果读取正常,返回实际读取的字节数
BufferedInputStream:缓冲字节输入流ObjectInputStream:对象字节输入流
OutputStream常用子类
FileOutputStream
构造方法同FileInputStreampublic void writeFile(){ FileOutputStream file = null; String filePath = "d:\\a.txt"; try { //如此创建,覆盖原先内容 //file = new FileOutputStream(filePath);如此创建则为追加 file = new FileOutputStream(filePath); //写入单个字节 file.write('H'); String str = "HiHiHi"; //getBytes将字符串转为字节数组,从1开始,写3个 file.write(str.getBytes(), 1, 3); } catch (IOException e) { throw new RuntimeException(e); } finally { try { file.close(); } catch (IOException e) { throw new RuntimeException(e); } } }
FileReader
字符流
构造使用文件对象或文件路径字符串
read()读取单个字符,末尾返回-1
read(char[])批量读取多个字符public static void main(String[] args) { String filePath = "d:\\a.txt"; FileReader fileReader = null; int data; try { fileReader = new FileReader(filePath); while((data = fileReader.read()) != -1){ System.out.print((char)data); } } catch (IOException e) { throw new RuntimeException(e); } finally { if(fileReader != null){ try { fileReader.close(); } catch (IOException e) { throw new RuntimeException(e); } } } }
FIleWriter
构造使用文件对象或文件路径字符串,追加模式第二个参数为true
write方法可以是单个字符,字符数组或字符串
FileWriter使用后,必须要关闭(close)或刷新(flush),否则无法完成写入public static void main(String[] args) { FileWriter file = null; String filePath = "d:\\a.txt"; try { file = new FileWriter(filePath); file.write("嗨嗨嗨!写进来咯!"); file.write('H'); file.write(chars); file.write("又进来咯!".toCharArray(), 0, 3); } catch (IOException e) { throw new RuntimeException(e); } finally { try { file.close(); } catch (IOException e) { throw new RuntimeException(e); } } }