韩顺平 java笔记 第43-46讲 io编程

时间:2021-12-22 21:02:34

1、java流分为两种

  (1)字节流:可以用于读写二进制文件及任何类型文件byte

  (2)字符流:可以用于读写文本文件,不能操作二进制文件

        字节流     字符流

    输入     InputStream           Reader

    输出     OutputStream         Writer

2、File类的基本用法

  import   java.io.*;

  public class Io{

    File f1 = new File("e:\\aa.txt");//创建一个文件对象

    System.out.println("文件路径"+f1.getAbsolutePath());//得到文件的路径

    System.out.println("文件的大小"+f1.length());//得到文件的大小,字节数

     

      File f3 = new File("e:\\ff");//创建文件夹

      if(f3.isDirectory()){//判断文件夹是否存在

        System.out.println("文件夹存在,不能创建!");

      }else{

        f3.mkdir();//创建文件夹

      }

 

    File f2 = new File("e:\\ff\\hsp.txt");//创建文件和创建文件夹

    if(!f2.exists()){//判断文件是否存在

      try{//可以存在

        f2.createNewfile();//创建一个新文件

      }catch(Exception e){

        e.printStackTrace();

      }

    }else{

      System.out.println("文件存在,不能创建!");

    }

 

      File f4 = new File("e:\\ff");\\列出一个文件夹下面的所有文件

      if(f4.isDirectory()){\\判断文件夹是否存在

        File lists[] = f4.listFiles();//将文件夹的文件,传给lists数组

        for(int i=0;i<lists.length;i++){//遍历数组

          System.out.println("显示出文件名是"+lists[i].getName());//输出文件夹下所有的文件名

        }

      }

  }

3.读取文件

  import java.io.*;

  public class Io{

    public static void main(String[] args){

      File f = new File("e:\\ff\\hsp.txt");//得到一个文件对象,f指向e:ff\hsp.txt文件

      FileInputStream fis = null;

      try{

        fis = new FileInputStream(f);//定义一个字节数组,相当于缓存

        byte []bytes = new byte[1024];

        int n=0;//得到实际读取到的字节数

        while((n=fis.read(bytes))!=-1){//循环读取

          String s = new String(bytes,0,n);//把字节转成String

          System.out.println(s);

        }

      }catch(Exception e){

        e.printStackTrace();

      }finally{

        try{//关闭文件流必须放在finally语句块中

          fis.close();

        }catch(Exception e){

          e.printStackTrace();

        }

      }

    }

  }

4、从键盘接收用户输入内容,并保存到文件中

  import java.io.*;

  public class Io{

    public static void main(String[] args){

      File f = new File("e:\\ff\\ss.txt");//直接覆盖写同一个文件

      FileOutputStream fos = null;

      if(f.exists()){

        System.out.println("文件已存在");

      }else{

        try{

          fos = new FileOutputStream(f);

          String s ="hello,world!\r\n";

          String s1="中国人";

          fos.write(s.getBytes());

          fos.write(s1.getBytes());

        }catch(Exception e){

          e.printStackTrace();

        }finally{

          try{

            fos.close();

          }catch(Exception e2){

            e2.printStackTrace();

          }

        }

      }

    }

  }

5、图片拷贝

      import java.io.*;

    public class Io{

    public static void main(String[] args){

      FileInputStream fis = null;//输入流先将图片读到内存 再读到文件

      FileOutputStream fos = null;//输出流

        try{

          fis= new FileInputStream("e:\\ff\\a.jsp");

          fos = new FileOutputStream("e:\\a.jsp");

          byte buf[] = new byte[1024];

          int n=0;//记录实际读取到的字节数

             while ((n=fis.read(buf))!=-1){//循环读取图片

            fos.write(buf);//输出到指定文件

          }

        }catch(Exception e){

          e.printStackTrace();

        }finally{

          try{

            fis.close();

            fos.close();

          }catch(Exception e){

            e.printStackTrace();

          }

        }

      }

    }

6.读取一个文件并写入到另一个文件中char[]来中转

 import java.io.*;

  public class Io{

    public static void main(String[] args){

      FileReader fr = null;//文件取出字符流对象(输入流)

      FileWriter fw = null;

      try{

          fr= new FileReader("e:\\ff\\hsp.txt");//创建fr对象

          fw = new FileWriter("e:\\hsp.txt");//创建输出对象

          char c[] = new char[1024];

          int n=0;//读入到内存

             while ((n=fr.read(c))!=-1){

            String s = new String(c,0,n);

            System.out.println(s);

            fw.write(c,0,n);

          }

        }catch(Exception e){

          e.printStackTrace();

        }finally{

          try{

            fr.close();

            fw.close();

          }catch(Exception e){

            e.printStackTrace();

          }

        }

      }

    }

7、缓冲字符流

    import java.io.*;

    public class Io{

    public static void main(String[] args){

      BufferedReader br = null;

      BufferedWriter bw = null;

      try{

          FileReader fr = new FileReader("e:\\ff\\hsp.txt");

          br = new BufferedReader(fr);

          FileWriter bw = new FileWriter("e:\\hsp.txt");

          bw = new BufferedWriter(fw);

          String s= "";//循环读取

             while ((s=br.readLine())!=null){

            bw.write(s+"\r\n");

          }

        }catch(Exception e){

          e.printStackTrace();

        }finally{

          try{

            br.close();

            bw.close();

          }catch(Exception e){

            e.printStackTrace();

          }

        }

      }

    }