zoukankan      html  css  js  c++  java
  • Java的IO流

    概念

    1. IO流:数据从外部介质(磁盘、键盘)输入到内存为输入流,反之为输出流。
    2. 文件的存储方式:所有的文件在硬盘或在传输时都是以字节的方式进行的,字符是只有在内存中才会形成。读取字节流后,不直接操作,而是查询指定编码表,就可以转化为字节流(如文字)。
    3. Java的字节流和字符流
      1. 字节流:按字节处理,直接操作文件本身,主要用于处理二进制数据、视频、图片、文件等。
      2. 字符流:按虚拟机的encode来处理,要进行字符集转化。主要用来处理文本。
    4. 父类:InputStream、OutputStream是所有字节IO流的祖先,Reader、Writer是所有字符IO流的祖先。他们r都是抽象类,写代码不能能直接new,需要使用多态方式转化。
    5. 字节流和字符流的区别:字节流不使用缓冲区

    操作举例

    字节流举例

    import java.io.File;    
    import java.io.FileOutputStream;    
    import java.io.OutputStream;    
    public class OutputStreamDemo05 {    
    	public static void main(String[] args) throws Exception {  
    		File f = new File("d:" + File.separator + "test.txt"); // 声明File对象 
    		//通过子类实例化父类对象 
    		OutputStream out = null;  
    		out = new FileOutputStream(f);  //多态实例化
    		String str = "Hello World!!!";
    		byte b[] = str.getBytes();
    		out.write(b);
    		out.close(); //因为字节流不用缓冲区,所以即使不关闭流,也会输出结果
    		}
    }
    

    字符流举例

    import java.io.File;    
    import java.io.FileWriter;    
    import java.io.Writer;    
    public class WriterDemo03 {    
        public static void main(String[] args) throws Exception { 
        	File f = new File("d:" + File.separator + "test.txt");
        	//通过子类实例化父类对象 
        	Writer out = null;   
        	out = new FileWriter(f); //多态实例化
        	String str = "Hello World!!!";
        	out.write(str); 
        	//out.close();//只有关闭字符流或者使用out.flush()强制清空缓冲区,才会输出结果
        }
    

    相互转化

    从字节流转化为字符流时,实际上就是byte[]转化为String
    String(byte bytes[], String charsetName)
    字符流转化为字节流时,实际上是String转化为byte[]
    byte[] String.getBytes(String charsetName)

  • 相关阅读:
    前端之JQuery
    前端之BOM和DOM
    前端之js
    Django之创建项目、目录层级、基本操作
    前端小练习-Michael的博客界面(粗糙版)
    前端之CSS(下)
    Django简介(MVC、MTV)
    react中自定义函数、生命周期钩子函数、修改状态、组件、组件传值
    react中类组件、函数组件、state、单层遍历、多层遍历、先遍历后渲染、if-else、三目运算符
    搭建react的架手架
  • 原文地址:https://www.cnblogs.com/chzhyang/p/13437909.html
Copyright © 2011-2022 走看看