zoukankan      html  css  js  c++  java
  • 流的文件操作(File)

    一、流的分类:

      1、流按照方向分类:分为输入流和输出流,流的操作是相对于内存而言。

        输入流的定义:当我们从数据源中将数据读取到内存中就称为输入流,也叫读取流。

        输出流的定义:当我们将内存中处理好的数据写入数据源,就称为输出流,写入流。

      2、流按照内容分类:可以分为字节流、字符流、对象流。

    数据的传输在底层都是以二进制的方式传输,所以无论是哪种流,其实都是字节流。而字符流和对象流只是在字节的基础上做了一层封装,以便于对字符数据和对象数据进行操作。

    二、流的父类

      1、所有字节流的父类都是:InputStream和OutputStream;

      2、所有字符流的父类都是:Reader和Writer。

    三、流的操作步骤

      1、建立流。所谓建立流就是建立内存和数据源之间传输数据的通道。

      2、操作流。操作传输的数据。

      3、关闭流。关闭内存和数据源之间的通道,释放资源。

        例:

        import java.io.FileInputStream;
        import java.io.FileNotFoundException;
        import java.io.IOException;
        import java.io.InputStream;

        public class StreamTest{
        public StreamTest(){
          InputStream in = null;
            try {
             //建立流
          in = new FileInputStream("info.txt"); 
          int data = 0;
             //操作流,一次读取一个字节。如果为-1,那么表示读取完毕
          while((data = in.read()) != -1){
          System.out.println(data);
        }
          } catch (Exception e) {
          e.printStackTrace();
          }finally{
          try {
             //关闭流
           in.close();
          } catch (Exception e) {
          e.printStackTrace();
            }
          }
        }
      }

      备注:流使用完毕后,必须关闭,如果不关闭会浪费内存资源,另外,写入流有可能写不进数据。关闭的顺序必须是先建立的流后关闭,后建立的流先关闭。

    四、建流的目的是:完成内存数据和磁盘数据的转换。

    五、以下是部分流的文件操作

      //第二个参数为true,表示已追加的方式向资源文件中写入数据,运行代码几次,资源文件就会追加几次数据,并且不会覆盖资源文件原来的数据。

      OutputStream out = null;

      out = new FileOutputStream("info.txt",true);

      out.write("Java技术".getBytes());

      注:、当使用OoutputStream写入流时,如果文件不存在,读取流会抛出FileNotFoundException异常。写入流会自动创建新文件。但是前提是该文件所在的目录必须存在。

      //创建文件对象

      File f = new File("c:/abc/a.txt");

      //或得文件名

      String name = f.getName();

      System.out.println(name);

      //得到文件所在目录

      String dir = f.getParent();

      system.out.println(dir);

      //得到文件的绝对路径

      String path = f.getAbsolutePath();

      System.out.println(path);

      //判断文件对象所代表的文件或目录是否存在,如果存在,结果就为true

      boolean isEx = f.exists();

      System.out.println(isEx);

      //判断文件对象代表的是否是存在 的文件

      System.out,pritln(f.isFile());

      //判断文件对象代表的是否是目录

      System.out.println(f.isDirectory());

      //得到一个目录中偶有文件列表,包含文件和目录,但是不包含子目录中的内容

      File f = new File("D:/KwDownload");

      File[] fs = f.listFiles();

        for(File ft : fs){

          System.out.println(ft.getName());

          }

      //删除指定目录下的文件

      File f = new File("D:/KwDownload/a.docx");

      f.delete();

      //删除文件对象所代表的文件或目录,前提必须是空文件才删得掉

      File f = new File("D:/KwDownload/aaa");

      f.delete();

      //得到指定目录下所有文件及子文件夹中的文件

      public static void (String[] args){

        list(new File("D:/KwDownload"));

        }

      public static void list(File dirFile){

        File[] fs = dirFile.listFiles();

          for(File f : fs){

            if(f.isFile()){

              System.out.println(f.getAbsolutePath());

            }else{

              list(f)

              }

           }

        }

      //创建制定路径的目录

      File f = new File("D:/aaa");

      f.mkdir();

      //创建文件选择对象

      JFileChooser jfc = new JFileChooser;

  • 相关阅读:
    7-1 城市间紧急救援 (25 分)(最短路径:斯特拉算法)
    常见的MD5碰撞
    PHP常见绕过(更新ing)
    7-10 旅游规划 (25 分)
    杂记:用python向网页提交数据
    python学习日记
    NOIP2018提高组金牌训练营——搜索专题
    noip复习之拓扑排序
    NOIP2018提高组金牌训练营——字符串专题
    NOIP2018提高组金牌训练营——数论专题
  • 原文地址:https://www.cnblogs.com/j120zjb/p/5402932.html
Copyright © 2011-2022 走看看