博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java day 9
阅读量:5997 次
发布时间:2019-06-20

本文共 8139 字,大约阅读时间需要 27 分钟。

1、IO流:用来处理设备之间的数据传输(文件复制,上传文件和下载文件)

2、IO流分类:

(1)输出流(FileWriter):         A、往文件中写数据,传递一个文件名称            a、构造方法:FileWriter(String fileName)            b、成员方法:void write(String str);void fiush();void close()         B、输出流写数据的步骤:            a、创建输出流对象;(调用系统资源创建了一个文件;创建输出流对象;把输出流对象指向文件)            b、调用输出流对象的写数据的方法;            c、释放资源         C、FileWriter写数据的方法:            a、void write(String str):写一个字符串数据            b、void write(String str,int index,int len):写一个字符串中的一部分数据            c、void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值,如'a',97            d、void write(char[ ] chs):写一个字符数组数据            e、void write(char[ ] chs,int index,int len):写一个字符数组数据的一部分数据          例:                 package com.itheima;                 import java.io.FileWriter;                 import java.io.IOException;                 public class FileWriterTest {                   public static void main(String[] args) throws IOException {                         FileWriter fw=new FileWriter("b.txt");                         //void write(String str):写一个字符串数据                         fw.write("abcde");                         //void write(String str,int index,int len):写一个字符串中的一部分数据                         fw.write("abcde",0,5);                        //void write(int ch):写一个字符数据,这里写int类型的好处是既可以写char类型的数据,也可以写char对应的int类型的值,如'a',97                         fw.write('a');                         fw.write(97);                       //void write(char[] chs):写一个字符数组数据                         char[] chs={'a','b','c','d','e'};                         fw.write(chs);                      //void write(char[] chs,int index,int len):写一个字符数组数据的一部分数据                         fw.write(chs,2,3);                      //释放资源                         fw.close();                  }                 }     注意:        a、相对路径:相对当前项目而言的,在项目的根目录下(例:a.txt)        b、绝对路径:以盘符开始的路径(例:d:\\ a.txt)(2)输入流(FileReader):      A、往文件中读数据到控制台,传递一个文件名称         a、构造方法: FileReader(String fileName)         b、成员方法:int read();int read(char[ ] cbuf):一次读一个字符数组的数据,返回的是实际读取字符的个数           例:             package com.itheima;             import java.io.FileReader;             import java.io.IOException;             public class FileReaderDemo2 {             public static void main(String[] args) throws IOException {         //创建输入流对象         FileReader fr=new FileReader("fr2.txt");        //调用输入流对象的读数据方法       //int read(char[] cbuf):一次读一个字符数组的数据,返回的是实际读取字符的个数    /*     * char[] chs=new char[5];      * //第一次读数据      * int len=fr.read(chs);     * System.out.println("len:"+len);      * System.out.println(new String(chs,0,len));     * //第二次读数据      * len=fr.read(chs);      * System.out.println("len:"+len);     * System.out.println(new String(chs,0,len));      * //第三次读数据      * len=fr.read(chs);     * System.out.println("len:"+len);      * System.out.println(new String(chs,0,len));     */       //char[] chs=new char[5];       char[] chs=new char[1024];//这里可以是1024及其整数倍               int len; //1、fr.read(chs);//2、len=fr.read(chs); //3、len!=-1                while((len=fr.read(chs))!=-1){       System.out.println(new String(chs,0,len));             }    //释放资源    fr.close();           }           }    B、输入流读数据的步骤:       a、创建输入流对象       b、调用输入流对象的读数据的方法       c、释放资源     注意:      (1)读数据首先要看文件是否存在,如果报错java.io.FileNotFoundException: fr.txt (系统找不到指定的文件),则在该项目下创建一个file文件      (2)读数据/写数据都要导入相应的包,并抛出异常    *close()和flush()方法的区别:      (1)flush():刷新缓冲区,流对象还可以继续使用;      (2)close():先刷新缓冲区,然后通知系统释放资源,流对象不可以再被使用了

3、实现数据的换行:

(1)windows:\r\n; (2)linux:\n; (3)mac:\r  *数据的追加写入:FileWriter(String fileName,boolean append)

4、输入/输出缓冲流:

(1)BufferedWriter:将文本写入字符输出流,缓冲各个字符,从而提供各个字符、数组和字符串的高效写入 (2)BufferedReader:从字符输入流中读取文本,缓冲各个字符,从而实现各个字符、数组和行的高效读取 (3)缓冲流读取数据的两种方式:         a、一次读写一个字符:          例:                 int ch;         while((ch=br.read())!=-1) {          System.out.print((char)ch);          }         b、一次读写一个字符数组:         例:                char[] chs=new char[1024];        int len;        while((len=br.read(chs))!=-1) {            System.out.print(new String (chs,0,len));        }       注意:在创建一个输出缓冲流对象时,后面一定要记得加new FileWriter,如:BufferedWriter bw=new BufferedWriter(new FileWriter("bw.txt"))

5、缓冲流的特殊功能:

(1)BufferedWriter             void newLine():写一个换行符,这个换行符由系统决定 (2)BufferedReader             String readLine():一次读取一行数据,但不读取换行符

6、复制文本文件的5种案例:

package com.itheima;     import java.io.BufferedReader;     import java.io.BufferedWriter;     import java.io.FileReader;     import java.io.FileWriter;     import java.io.IOException;     public class CopyFileDemo {       public static void main(String[] args) throws IOException {        //创建输入流对象    /*     * FileReader fr=new FileReader("FileWriterDemo.java"); //创建输出流对象 FileWriter     * fw=new FileWriter("Copy.java"); //一次读写一个字符数据 int ch;     * while((ch=fr.read())!=-1){ fw.write(ch); }     *      * //一次读写一个字符数组 char[] chs=new char[1024]; int len;     * while((len=fr.read(chs))!=-1){ fw.write(chs,0,len); }     *      * //释放资源 fw.close(); fr.close(); } }     */        /*     * method1("FileWriterDemo.java","Copy.java");//需要修改5个地方     * method2("FileWriterDemo.java","Copy.java");     * method3("FileWriterDemo.java","Copy.java");     * method4("FileWriterDemo.java","Copy.java");     * method5("FileWriterDemo.java","Copy.java");     */     String srcFileName="FileWriterDemo.java";     String destFileName="Copy.java";     method1(srcFileName,destFileName);//只需要修改一个地方     method2(srcFileName,destFileName);     method3(srcFileName,destFileName);     method4(srcFileName,destFileName);     method5(srcFileName,destFileName);          }         //缓冲流:一次读写一个字符串       public static void method5(String srcFileName,String destFileName) throws IOException {                //创建输入缓冲流对象           BufferedReader br=new BufferedReader(new FileReader(srcFileName)) ;        //创建输出缓冲流对象           BufferedWriter bw=new BufferedWriter(new FileWriter(destFileName)) ;        //一次读写一个字符串           String line;        //1、br.readLine()        //2、line=br.readLine()        //3、line!=null        while((line=br.readLine())!=null) {            bw.write(line);            bw.newLine();            bw.flush();        }        //释放资源          bw.close();           br.close();    }         //缓冲流:一次读写一个字符数组      public static void method4(String srcFileName,String destFileName) throws IOException {             //创建输入缓冲流对象          BufferedReader br=new BufferedReader(new FileReader(srcFileName)) ;            //创建输出缓冲流对象          BufferedWriter bw=new BufferedWriter(new FileWriter(destFileName)) ;           //一次读写一个字符数组          char[] chs=new char[1024];           int len;           while((len=br.read(chs))!=-1){          bw.write(chs,0,len);           }          //释放资源         bw.close();          br.close();       }          //缓冲流:一次读写一个字符    public static void method3(String srcFileName,String destFileName) throws IOException {        //创建输入缓冲流对象        BufferedReader br=new BufferedReader(new FileReader(srcFileName)) ;        //创建输出缓冲流对象        BufferedWriter bw=new BufferedWriter(new FileWriter(destFileName)) ;        //一次读写一个字符         int ch;         while((ch=br.read())!=-1){                 bw.write(ch);          }        //释放资源          bw.close();           br.close();    }               //基本流:一次读写一个字符数组    public static void method2(String srcFileName,String destFileName) throws IOException {        //创建输入流对象        FileReader fr=new FileReader (srcFileName);        //创建输出流对象        FileWriter fw=new FileWriter(destFileName);        //一次读写一个字符数组         char[] chs=new char[1024];          int len;          while((len=fr.read(chs))!=-1){                fw.write(chs,0,len);         }        //释放资源          fw.close();           fr.close();    }              //基本流:一次读写一个字符     public static void method1(String srcFileName,String destFileName) throws IOException {       //创建输入流对象    FileReader fr=new FileReader (srcFileName);    //创建输出流对象    FileWriter fw=new FileWriter(destFileName);    //一次读写一个字符     int ch;     while((ch=fr.read())!=-1){             fw.write(ch);      }    //释放资源      fw.close();       fr.close();}

}

转载于:https://www.cnblogs.com/cqxljj/p/10214473.html

你可能感兴趣的文章
对象不支持此属性或方法
查看>>
process launch failed : failed to get the task for process xxx
查看>>
ADS1.2安装
查看>>
[华为机试练习题]9.坐标移动
查看>>
April Fools Day Contest 2016 B. Scrambled
查看>>
iOS开发--多线程
查看>>
BZOJ4527 : K-D-Sequence
查看>>
网易游戏2015年暑期实习生面试经历-游戏研发project师
查看>>
Celery的实践指南
查看>>
Shell中的while循环【转】
查看>>
Linux下安装memcached
查看>>
qt介绍
查看>>
hdu 3709 数字dp(小思)
查看>>
什么是线程安全和线程不安全
查看>>
结合Domino打造全功能的Grid
查看>>
Ibatis对日期的处理
查看>>
五句话搞定JavaScript作用域
查看>>
死磕 Fragment 的生命周期
查看>>
计算(calc.cpp)
查看>>
Pycharm For Linux
查看>>