IO流知识详解

########—IO流知识点—###################
1.File【文件对象】
2.使用递归打印子孙级目录和文件名称。
3.统计文件夹大小。
4.四个抽象类:InputStream、OutputStream【字节流】 Writer Reader【字符流】
5.使用InputStreanm“一个一个字节读取” 和 “一段一段的读取”。
6.使用OutputStream “把字符串写到文件中”
7.拷贝字节文件。【 利用递归制作拷贝文件夹的拷贝 】
8.使用Writer、Reader来,“读取字符文件” 、 “写入字符文件” 、“拷贝字符文件”。
9. ByteArrayInputStrean【字节数组输入流】、 ByteArrayOutputStrean 【字节数组输出流】
10.综合对接流【 FileInputStream–》ByteArrayOutputStream–》ByteArrayInputStream–》FileOutputStream 】
11.IO工具类。
12.处理流【装饰器设计模式:1.抽象组件:接口 2.具体组件:需要装饰的对象 3.抽象装饰类:包含了对象组件的引用以及装饰共有的方法。4.具体装饰类:被装饰的对象。】
13.转换流【字节流 转 字符流 ,可以指定字符集】
14.数据流【 方便操作八大数据类型和String 】
15.对象流
16.打印流【PritStream】
17. RandomAccessFile【随机读写入流】
18.CommonsIO

########—IO流详细说明—########################
1.File【文件对象】
① File.separator 【 File.separator:->\ String path = “d:/java/image/io.png”; 】
② new File(“d:/java/image/io.png”); | new File(“d:/java/image/”,io.png); | new File(new File(“d:/java/image/io.png”));
③ getAbsolutePath(); //获取绝对路径【System.getProperty(“user.dir”)用户当前路径】
③ getName()【文件名】 getPath()【获取路径】 getParent()【获取父路径】
④ exists()【(文件或文件夹)是否存在】 isFile()【是否是文件】 isDirectory()【是否是文件夹】
⑤ createNewFile() 【不存在就创建新文件,存在就不创建】 delete()【删除文件】
⑥ length() 【文件大小】
⑦mkdir()【创建文件夹,上一级目录必须存在】 mkdirs()【直接创建】
list()【列出下级名称】 listFiles()【列出下级File对象】 listRoots()【列出所有盘符:d:\ c:\】
⑧编码:字符–》字节
String msg = “性命生命使命”; byte[] datas = msg.getBytes(); // utf-8中文3个字节
解码:字节–》字符
msg = new String(datas,0,datas.length,“utf8”);
2.四个抽象类:InputStream、OutputStream【字节流】 Writer Reader【字符流】
3.ByteArrayInputStrean【字节数组输入流】、 ByteArrayOutputStrean 【字节数组输出流】
① 字节数组流不需要关闭,由jvm来关闭。 任何东西都可以转字节数组。 字节数组不能太大。
② InputStream in = new ByteArrayInputStream(byte[]);
OutputStream out = new ByteArrayOutputStream(); | toByteArray():获取数据
4.处理流【装饰流】
①BufferedInputStream:字节缓存输入流。【只需要释放BufferedInputStream,会自动释放相关的其他流】
②BufferedOutputStream:字节缓存输出流。【只需要释放BufferedOutStream,会自动释放相关的其他流】
③BufferedReader:字节缓存输入流。
【(1)只需要释放BufferedReader,会自动释放相关的其他流 (2) readLine();】
④BufferedWriter:字节缓存输出流。
【(1)只需要释放BufferedWriter,会自动释放相关的其他流 (2) newLine();】
5.转换流【 作用:(1)字节流 转 字符流 ,(2)可以指定字符集】
①InputStreamReader:
②InputStreanWriter:
③ 获取网络字节输入流:InputStream in = new URL(“http://www.baidu.com”).OpenStream();
6.数据流【 方便操作八大数据类型和String 】
DataInputStream | DataOutputStream
7.对象流
ObjectInputStream:序列化|持久化(接口:Serialization)
ObjectOutputStream:反序列化
【使用transient关键字可以不序列化】
8.打印流【PrintStream 、 PrintWriter】
PritStream ps = System.out;
ps = new PritStream(new BufferedOutputStream(new FileOutputStrean(“print.txt”)),true);
ps.println(“打印流”); //可以把内容打印到print.txt文件中。
/重定向输出端/
System.setOut(ps);
System.out.println(“jjj”)

PrintWriter pw = new PrintWriter(new BufferedOutputStream(new FileOutputStrean(“print.txt”)),true);
pw.println(“打印流”);

  1. RandomAccessFile【随机读写入流】
    ① 指定起始位置,读取剩余所有内容。
    ②文件分割
    ③文件合并:【序列流:SeauenceInputStream】
    Vector vi = new Vector();
    SequenceInputStream sis = new SequenceInputStream(vi.elements());
    10.CommonsIO
    ①获取文件大小:FileUtils.sizeOf(File f); //f指定文件
    ②获取目录大小:FileUtils.sizeOf(File f) //f指定目录
    ③列出子孙级:Collection file = FileUtils.listFiles(new File(“D:\java300\IO_study04”), //选择节点
    FileFilterUtils.and(new SuffixFileFilter(“java”),EmptyFileFilter.NOT_EMPTY), //过滤条件
    DirectoryFileFilter.INSTANCE); //
    ④ 读取文件: String msg =FileUtils.readFileToString(new File(“emp.txt”),“UTF-8”);
    byte[] datas = FileUtils.readFileToByteArray(new File(“emp.txt”));
    List msgs= FileUtils.readLines(new File(“emp.txt”),“UTF-8”);
    ⑤写文件: FileUtils.write(new File(“happy.sxt”), “学习是一件伟大的事业\r\n”,“UTF-8”);
    FileUtils.writeStringToFile(new File(“happy.sxt”), “学习是一件辛苦的事业\r\n”,“UTF-8”,true);
    FileUtils.writeByteArrayToFile(new File(“happy.sxt”), “学习是一件幸福的事业\r\n”.getBytes(“UTF-8”),true);
    List datas =new ArrayList(); FileUtils.writeLines(new File(“happy.sxt”), datas,“链接符”,true);
    ⑥复制文件: FileUtils.copyFile(new File(“p.png”),new File(“p-copy.png”)); //复制文件
    FileUtils.copyFileToDirectory(new File(“p.png”),new File(“lib”)); //复制文件到目录
    FileUtils.copyDirectoryToDirectory(new File(“lib”),new File(“lib2”)); //复制目录到目录
    FileUtils.copyDirectory(new File(“lib”),new File(“lib2”)); //复制目录
    FileUtils.copyURLToFile(new URL(“https://pic2.zhimg.com/v2-7d01cab20858648cbf62333a7988e6d0_qhd.jpg”), new File(“marvel.jpg”)); //拷贝URL内容

你可能感兴趣的:(java_se)