一、流的分类:

  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;

流的文件操作(File)的更多相关文章

  1. JAVASE02-Unit06: 文件操作——File 、 文件操作—— RandomAccessFile

    Unit06: 文件操作--File . 文件操作-- RandomAccessFile java.io.FileFile的每一个实例是用来表示文件系统中的一个文件或目录 package day06; ...

  2. c#中@标志的作用 C#通过序列化实现深表复制 细说并发编程-TPL 大数据量下DataTable To List效率对比 【转载】C#工具类:实现文件操作File的工具类 异步多线程 Async .net 多线程 Thread ThreadPool Task .Net 反射学习

    c#中@标志的作用   参考微软官方文档-特殊字符@,地址 https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/toke ...

  3. C#基础精华04(文件流,文件操作,File、Directory、Path,Directory)

    文件流 FileStream  可读可写  大文件  释放 StreamReader 读取   释放 StreamWriter 写入   释放 using 中释放 File 可读可写  小文件 操作文 ...

  4. java IO流 Zip文件操作

    一.简介 压缩流操作主要的三个类 ZipOutputStream.ZipFile.ZipInputStream ,经常可以看到各种压缩文件:zip.jar.GZ格式的压缩文件 二.ZipEntry   ...

  5. JAVA中的I/O流以及文件操作

    一 JAVA语言中主要通过流来完成IO操作. 流:计算机的输入输出之间流动的数据序列,也是类的对象.java中的流方式就像是建立在数据交换源和目的之间的一条通信路径. 数据源:计算机中的数据源是指可以 ...

  6. java I/O框架 (二)文件操作(File)

    1.介绍 java io中最常操作的就是我们电脑中的文件,将这些文件以流的形式本地读写,或者上传到网络上.java中的File类就是对这些存储于磁盘上文件的虚拟映射,这也体现了java面向对象的思想, ...

  7. 文件操作(FILE)与常用文件操作函数

    文件 1.文件基本概念 C程序把文件分为ASCII文件和二进制文件,ASCII文件又称文本文件,二进制文件和文本文件(也称ASCII码文件)二进制文件中,数值型数据是以二进制形式存储的, 而在文本文件 ...

  8. java IO流 对文件操作的代码集合

    Io流 按照分类 有两种分类 流向方向: 有输入流和输出流 按照操作类型有:字节流和字符流 按照流向方向 字节流的一些操作 //读文件 FileInputStream fis = new FileIn ...

  9. C语言文件操作 FILE结构体

    内存中的数据都是暂时的,当程序结束时,它们都将丢失.为了永久性的保存大量的数据,C语言提供了对文件的操作. 1.文件和流 C将每个文件简单地作为顺序字节流(如下图).每个文件用文件结束符结束,或者在特 ...

随机推荐

  1. Go语言实战 - 创业进行时之创业伊始

    在工作了10年之后,我于32岁的年纪在两个月前辞职创业了. 简单介绍一下之前的整个职业生涯,挺典型的,工程师 –> 资深工程师 –> 架构师 –> 项目经理 –> 部门经理,可 ...

  2. Js toString()方法笔记

    一.前言 toString()用于将该对象以字符串(string)的形式返回,该方法属于Object对象;也就是说对象都能够使用此方法. 之前所接触的是array.toString()数组转换为字符串 ...

  3. angularjs中provider,factory,service的区别和用法

    angularjs中provider,factory,service的区别和用法 都能提供service,但是又有差别 service 第一次被注入时实例化,只实例化一次,整个应用的生命周期中是个单例 ...

  4. EF-InvalidOperation系列

    1.InvalidOperation强制转换为值类型 'System.Guid' 失败,因为实例化的值为 null.结果类型的泛型参数或查询必须使用可以为 null 的类型 错误信息: The cas ...

  5. javascript运动系列第五篇——缓冲运动和弹性运动

    × 目录 [1]缓冲运动 [2]弹性运动 [3]距离分析[4]步长分析[5]弹性过界[6]弹性菜单[7]弹性拖拽 前面的话 缓冲运动指的是减速运动,减速到0的时候,元素正好停在目标点.而弹性运动同样是 ...

  6. 深入理解DOM节点类型第四篇——文档片段节点DocumentFragment

    × 目录 [1]特征 [2]作用 前面的话 在所有节点类型中,只有文档片段节点DocumentFragment在文档中没有对应的标记.DOM规定文档片段(document fragment)是一种“轻 ...

  7. 【原创】开源Math.NET基础数学类库使用(08)C#进行数值积分

                   本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新  开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...

  8. 【开源】OSharp框架解说系列(5.2):EntityFramework数据层实现

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  9. Android探索之HttpURLConnection网络请求

    前言: 最近一直想着学习一下比较好的开源网络框架okhttp,想着学习之前还是先总结一下Android原生提供的网络请求.之前一直在使用HttpClient,但是android 6.0(api 23) ...

  10. 为 Neutron 准备物理基础设施(I) - 每天5分钟玩转 OpenStack(75)

    前面讨论了 Neutron 的架构和基础知识,接下来就要通过实验深入学习和实践了. 第一步就是准备实验用的物理环境,考虑如下几个问题: 需要几个节点? 如何分配节点的角色? 节点上部署哪些服务? 配几 ...