zoukankan      html  css  js  c++  java
  • Java基础之IO

    File类

    File文件类只能对文件本身操作,不能对文件中的内容进行操作。

      public File(String pathname);构造方法。

      boolean createNewFile() throws IOException; 创建新的文件
      boolean mkdir() 创建目录
      boolean mkdirs() 创建多层目录
      boolean delete():删除文件或目录
      Boolean exists():判断文件或目录是否存在。
      boolean isFile(): 判断是否为文件
      boolean isDirectory():判断是否为目录

      String[] list(): 列出指定目录下所有的文件或文件夹的名称。
      File[] listFile(): 列出指定目录下所有文件或目录对象。

      String getName():得到文件或目录的名称
      String getPath():得到文件或目录的相对路径.
      String getAbsolutePath():得到文件或目录的绝对路径

    编写一个方法遍历某个目录下所有的文件。(面试题) 一定要用方法的递归(方法内部调用自己)。
    //列出指定目录下所有的文件
    public static void fun(File file){//要查询的目录
    //判断file是目录还是文件
    if(file.isFile()){
      System.out.println("该文件所在的绝对路径:"+file.getAbsolutePath());
    }else{
    //2.获取该目录下所有子文件和子目录对象
      File[] childFiles=file.listFiles();
      if(childFiles!=null){
        for(File f:childFiles){//a b a.txt
          fun(f); //调用方法自己
          }
        }
      }
    }

    1.上面的File类只能对文件进行操作,不能对文件中的内容进行操作。
    使用IO流来对文件中的内容进行操作。都是站在程序的角度
    1.根据流的方法分为:
    输入流和输出流
    2.根据读取的单位。
    字节流和字符流

    1.字符输入流Reader和字符输出流Writer。 通过文件发现这两个类都是抽象类,该类无法实例化对象,找它的子类FileReader。
    FileReader(File file);
    FileReader(String path);

    2.FileReader 字符输入流。读取文件的内容以字符的形式来读取。
      File file=new File("D://a.txt");
      FileReader fr=new FileReader(file);
      int i=fr.read();//每次读取一个字符,返回读取的字符对应的ASSIC值。
      while(i!=-1){
        char c=(char)i;
        System.out.println(c);
        i=fr.read();
      }

    3.以字符数组的方式来读取
      File file=new File("D://a.txt");
      FileReader fr=new FileReader(file);
      char[] cs=new char[1000];
      int i=fr.read(cs);//
      while(i!=-1){
        String str=new String(cs,0,i);//把cs字符数组转化为字符串,从数组中第一个元素,转化i个字符
        System.out.println(str);
        i=fr.read(cs);
    }

    4.Writer:FileWriter();字符输出流,通过程序向文件写入内容
      File file=new File("D://a.txt");
      FileWriter fw=new FileWriter(file,true); //没有自动会建。 true:是否运行追加
      String str="I am fine ";
      fw.write(str); //
      //fw.flush();//刷新FileWrite中内容。
      fw.close();

    字节流:
    InputStream 和 OutputStream 这两个类为字节输入和输出的父类。这两个类也是抽象类。这两个类不能创建对象,需要使用子类来完成。
    FileInputStream FileOutputStream

    FileOutputStream:字节输出流
      File file=new File("D://d.txt");
      FileOutputStream fos=new FileOutputStream(file,true);//字节输出流
      String str="你好!玛德";
      byte[] b=str.getBytes();//把str转化为字节数组
      fos.write(b);//write(byte[] b)
      fos.close();//关闭

    FileInputStream:字节输入流
      File file=new File("D://d.txt");
      FileInputStream fis=new FileInputStream(file);
      byte[] bytes=new byte[10];
      int i= fis.read(bytes);
      while(i!=-1){
        String str=new String(bytes,0,i);
        System.out.println(str);
        i=fis.read(bytes);
      }
      fis.close();

    处理流:

    字符的处理流:

      BufferedWriter字符输出的处理流

      BufferedWriter:字符输出的处理流
      BufferedWriter(Writer out) :这是它的构造方法。
        FileWriter fw=new FileWriter("D://c.txt");
        BufferedWriter bw=new BufferedWriter(fw,true); //升级。
        bw.write("Hello Word");
        bw.flush();
        bw.newLine(); //产生换行,可以应用于任何系统。
        bw.close();

      BufferedReader字符输入的处理流 

      Reader r=new FileReader("笔记.txt");
        BufferedReader br=new BufferedReader(r);
        String line=br.readLine();// 可以读取一行。
        while(line!=null){
          System.out.println(line);
          line=br.readLine();
        }
        br.close();

    字节的缓存流: 

      BufferedOutputStream:字节输出流的缓存流。
      BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("D://e.txt"));
        String str="Hello Good";
        byte[] bytes=str.getBytes();
        bos.write(bytes);
        bos.close();

      BufferedInputStream:字节输入流的缓存流
      BufferedInputStream bis=new BufferedInputStream(new FileInputStream("D://e.txt"));
        byte[] b=new byte[20];
        int i= bis.read(b);
        while(i!=-1){
          String str=new String(b,0,i);
          System.out.println(str);
          i= bis.read(b);
        }
        bis.close();

    对象流:

    对象流:(重要) 通过该流可以把Java中的对象进行保存(文件,云盘,网络上)。
    ObjectInputStream 和 OjbectOutputSteam:

    序列化(Serialize): 用ObjectOutputStream类将一个Java对象通过IO流写入到数据源中
    public static void main(String[] args) throws Exception
    {
      OutputStream os=new FileOutputStream("D://a.txt");
      ObjectOutputStream oos=new ObjectOutputStream(os);

      //注意:该类People 必须实现Serializable接口。
      // 该类中所有要序列化的属性的类型必须也实现Serializable接口

      People p=new People("张三",19);
      oos.writeObject(p); //把一个对象通过ObjectOutputStream写入到数据源

      oos.close();
      os.close();
    }


    反序列化(Deserialize):用ObjectInputStream类从数据源中恢复该Java对象。
    public static void main(String[] args) throws Exception
    {
      ObjectInputStream ois=new ObjectInputStream(new FileInputStream("D://a.txt"));
      Object o=ois.readObject(); //获取该文件中的对象
      People p=(People)o; //向下转型
      System.out.println(p.getName()+"=====>"+p.getAge()+"----->");//toString();
      ois.close();
    }

  • 相关阅读:
    2行2列分别使用逗号串连起来
    动态获取数据表或临时表列名
    判断临时表是否存在
    RICOH C4502彩色打印机取消双面打印功能
    UNPIVOT逆透视以及动态逆透视存储过程
    动态透视表
    MS SQL的CASE...WHEN...THEN...END语法
    获取数据库中所有触发器
    动态表名,列名,输入参数,输出参数等
    使用CTE生成辅助表(数字或时间)等
  • 原文地址:https://www.cnblogs.com/zjc364259451/p/11194449.html
Copyright © 2011-2022 走看看