美文网首页
JavaForAndroid13

JavaForAndroid13

作者: tah | 来源:发表于2018-04-24 09:58 被阅读1次

    一、I/O操作 Input/Output
    从数据源中读取数据,以及将数据写入到数据目的地当中。
    I/O的流向stream
    数据流:在数据源和程序之间建立的数据流跑的管道。
    IO的分类
    1、输入流、输出流
    2、字节流、字符流
    3、节点流、处理流

    二、字节流类:读写文件时,以字节为基础
    输入流:InputStream(抽象类) ->FileInputStream(子类)
    int read(byte[] b,int off,int len) //读取数据,读取到的数据放到byte[]比特类型数组中,从byte[]数组的off位开始放数据,读取一次最多读len长度的数据,返回值为一次read方法总共读了多少个字节的数据
    输出流: OutputStream(抽象类) -> FileOutputStream(子类)
    void write(byte[] b,int off,int len) //写入数据,byte[]表示要往文件写入的数据,从byte[]位开始写入,写len长度的数据
    e.g.
    导入IO包:import java.io.**;
    使用io流会导致编译器异常,需要使用trycatch
    //声明输入流的引用
    FileInputStream fis = null;
    //声明输出流的引用
    FileOutputStream fos = null;
    try {
    //生成代表输入流的对象
    fis = new FileInputStream("读取文件地址");
    //生成代表输出流的对象
    fos = new FileOutputStream("写入文件的地址");
    byte [] buffer = new byte[100];
    int temp = fis.read(buffer,0, buffer.length);
    fos.write(buffer,0,temp);
    for(int i=0;i<buffer.length;i++){
    System.out.println(buffer[i]); //ASCII码,如果是中文会导致乱码
    }
    //根据buffer内的字节生成字符,并生成一个字符串
    String s = new String(buffer);
    //trim()方法会去除收尾的空格和空字符
    //例如“ abc def ” 变成 “abc def”
    s = s.trim();
    System.out.println(s);
    } catch (Exception e) {
    System.out.println(e);
    } finally {
    //关闭IO流
    try{
    fis.close();
    fos.close();
    }catch(Exception e){
    System.out.println(e);
    }
    }

    三、大文件字节流读写操作
    byte [] buffer = new buffer [1024];//定义一个长度为1024字节的数组
    while (true){
    //当读取数据完了之后,read方法返回值为-1
    int temp = fis.read(buffer,0,buffer.length);
    if(temp == -1) {
    break;
    }
    fos.write(buffer,0,temp);
    } finally {
    //关闭IO流
    try{
    fis.close();
    fos.close();
    }catch(Exception e){
    System.out.println(e);
    }
    }

    四、字符流:读写文件时,以字符为基础
    字符输入流:Reader ->FileReader
    int read(char[] c, int off, int len)
    字符输出流:Writer -> FileWriter
    void write(char[] c, int off, int len)
    e.g.
    FileReader fr = null;
    FileWriter fw = null;
    try {
    fr = new FileReader("读取文件地址");
    fw = new FileWriter("写入文件的地址");
    char [] buffer = new byte[100];
    int temp = fr.read(buffer,0, buffer.length);
    fw.write(buffer,0,temp);
    for(int i=0;i<buffer.length;i++){
    System.out.println(buffer[i]); //打印字符
    }
    System.out.println(s);
    } catch (Exception e) {
    System.out.println(e);
    } finally {
    //关闭IO流
    try{
    fr.close();
    fw.close();
    }catch(Exception e){
    System.out.println(e);
    }
    }

    五、节点流和处理流
    BufferedReader:字符输入处理流
    readLine() //一次读取一行的数据

    FileReader fileReader = null;
    BufferedReader bufferedReader = null;
    try {
    fileReader = new FileReader("读取文件地址");
    bufferedReader = new BufferedReader(fileReader);
    String line = null;
    while(true){
    line = bufferedReader.readLine();
    if(line == null){
    break;
    }
    System.out.println(line);
    }
    } catch (Exception e) {
    System.out.println(e);
    } finally {
    //关闭IO流
    try{
    fileReader.close();
    bufferedReader.close();
    }catch(Exception e){
    System.out.println(e);
    }
    }

    六、泛型
    https://blog.csdn.net/sunxianghuang/article/details/51982979

    相关文章

      网友评论

          本文标题:JavaForAndroid13

          本文链接:https://www.haomeiwen.com/subject/srrkcftx.html