IO流图解

IO(in / out)流的分类

  流向:

    输入流  读取数据

    输出流  写出数据

  数据类型:

    字节流

    一个字节占8位, 以一个字节为单位读数据  

    八大数据类型所占字节数:
    byte(1), short(2), int(4), long(8),float(4), double(8),boolean(1),char(2)

      字节输入流  读取数据  InputStream

      字节输出流  写出数据  OutputStream

    字符流

    一个字符占两个字节, 以一个字符为一个单位

      字符输入流  读取数据  Reader

      字符输出流  写出数据  Writer

字节流的基本抽象类

InputStream    OutputStream

字符流的基本抽象类

Reader   Writer

  功能:
    节点流: 只有一个根管道套在文件上进行传输
    处理流: 将节点流处理一下, 增强管道的功能, 相当于在管道上套一层

File类基本操作

         File file=new File("D:\\0603\\03.txt");
         File file2=new File("D:\\06\\03\\01");
         File file3=new File("D:\\0603\\06.txt");
         System.out.println(file.exists());//判断文件是否存在,返回Boolean值
         System.out.println(file.mkdir());//创建文件夹,只能创建一层,返回Boolean值
         System.out.println(file2.mkdirs());//创建文件夹,创建多层,返回Boolean值
         System.out.println(file3.createNewFile());//创建新文件,此处需处理异常,返回Boolean值
         System.out.println(file3.delete());//删除文件,返回Boolean值
         File file4=new File("D:\\0603\\03_new.txt");
         System.out.println(file.renameTo(file4));//文件改名,传入另一个文件
         System.out.println(file.getName());//返回名
         System.out.println(file.getPath());//返回文件路径
         System.out.println(file.isDirectory());//返回是否文件夹
         System.out.println(file.isFile());//返回是否文件
         System.out.println(file.length());//返回文件长度
         File[] files=f.listFiles(); //获取路径下的文件名

查找并输出文件夹下文件夹及文件名:

 package com.hanqi.maya.util;

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

 public class TestFile {
     public static void main(String[] args) {
         File file=new File("D:\\");
         filesum(file,1);
     }
     public static void filesum(File f,int len){
         if(f.exists()){//判断路径是否存在
             File[] files=f.listFiles(); //获取路径下的文件名
             for(File fi:files){ //循环输出文件名
                 if(fi.isDirectory()){  //判断是否文件夹
                     printBlank(len);
                     System.out.println(fi.getName());
                     filesum(fi,len+1);  //继续调用自身
                 }else{
                     printBlank(len);  //输出空格
                     System.out.println(fi.getName());    //获取当前文件夹名
                 }
             }
         }else{
             System.out.println("文件不存在!!!");
         }
     }
     public static void printBlank(int len){
         for (int i = 0; i < len; i++) {//输出. 以区分文件夹层次
             System.out.print(". ");
         }
     }
 }

I/O 流基本操作

InputStream的基本方法:
  int read(): 每次调用这个方法, 就读取一个字节, 以整数的形式返回,可以用 char 强转成字符
  int read(byte[] buffer---缓冲区): 让流每次读满一个缓冲区, 再统一处理, 先存在缓冲区里, 返回值int是返回实际当中读取了多少字节数(伤硬盘的原理)
  int read(byte[] buffer, int offset, int length): 也是一个缓冲区, 读取length长度的字节数, 存到buffer的缓冲区里, 从buffer的offset位置开始存, 返回值是实际读了多少字节数
  close(): 关闭资源

OutputStream的基本方法:
  void write(int b)
  void write(byte[] b)
  int wirte(byte[] buffer, int offset, int length)
  close()
  flush(): 将缓冲区中的文件全部写出
  在使用流的时候:先flush, 再close

Reader的基本方法:
  int read()
  int read(char[] c)
  int read(char[] c, int offset, int length)
  close()

Writer的基本方法:
  void write()
  void write(char[] c)
  void write(char[] c, int offset, int length)
  // 直接写一个字符串出去, 字符串里面的有一个方法s.toCharArray(), 查API
  void write(String s)
  void write(String s, int offset, int length)
  close()
  flush()
FileInputStream
FileOutputStream
BufferedReader
  readLine()---每次调用就会读取一行
BufferedWriter
  writeLine(String s)---每次调用写出一行

例子:

 package com.hanqi.maya.util;

 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;

 public class Test2 {
     public static void main(String[] args) {
         File file=new File("E:\\ceshi.txt");
         File ofile=new File("E:\\cewshi2.txt");
         int a=-1;//用作判断

         try {
             InputStream in =new FileInputStream(file);
             OutputStream out = new FileOutputStream(ofile);
             while((a=in.read())!=-1){//将下一个字符赋给a并输出和写入,如果没有下一个 则a=-1结束while循环
                 System.out.print((char)a);//强转输出字符
                 out.write(a);//写入到文件
             }
             in.close();
             out.close();
         } catch (FileNotFoundException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 }
 package com.hanqi.maya.util;

 import java.io.BufferedReader;
 import java.io.BufferedWriter;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.Reader;
 import java.io.Writer;

 public class Test3 {
     public static void main(String[] args) {
         File file=new File("E:\\ceshi.txt");
         File ofile=new File("E:\\cewshi8.txt");

         Reader r=null;

         try {
             r=new FileReader(file);
             Writer w=new FileWriter(ofile);
             BufferedReader br=new BufferedReader(r);
             BufferedWriter bw=new BufferedWriter(w);
             String s=null;
             while((s=br.readLine())!=null){
                 System.out.print(s);
                 bw.write(s);
                 bw.flush();//如果写入需要用 flush 刷新流,否则会在缓冲区不写入文件
             }
             br.close();
             bw.close();//调用该方法前会自动调用 flush
         } catch (FileNotFoundException e) {

             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 }

Java之IO流概述和File基本操作的更多相关文章

  1. Java基础-IO流对象之File类

    Java基础-IO流对象之File类 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.IO技术概述 回想之前写过的程序,数据都是在内存中,一旦程序运行结束,这些数据都没有了,等下 ...

  2. Java 之 IO流概述

    一.IO 流 我们知道存在硬盘中数据是永久保存的,而在内存中的数据只是临时的,内存中的数据可以存入硬盘中,硬盘中的数据也也可以读入内存中. 我们把这种数据的传输,可以看做一种数据的流动,按照流动的方法 ...

  3. Java之IO流用法总结

    Java的IO流概述:1.I/O是Input/Output的缩写,I/O技术是非常实用的技术,用于处理设备之间的数据传输.如读/写文件,网络通讯等.2.Java程序中,对于数据的输入/输出操作以“流( ...

  4. Java API —— IO流( FileInputStream & FileOutputStream & BufferedInputStream & BufferedOutputStream )

    1.IO流概述 · IO流用来处理设备之间的数据传输        · 上传文件和下载文件        · Java对数据的操作是通过流的方式 · Java用于操作流的对象都在IO包中   2.IO ...

  5. Java 的 IO 流

    接着上一篇的 “Java 的 File 类” 的随笔,在File类的基础上,我们就走进Java的IO流吧. 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在 ...

  6. Java进阶 | IO流核心模块与基本原理

    一.IO流与系统 IO技术在JDK中算是极其复杂的模块,其复杂的一个关键原因就是IO操作和系统内核的关联性,另外网络编程,文件管理都依赖IO技术,而且都是编程的难点,想要整体理解IO流,先从Linux ...

  7. 【重学Java】IO流

    IO流的UML类图 File类 File类概述和构造方法[应用] File类介绍 它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言,其封装的并不是一个真正存在 ...

  8. Java基础——IO流

    今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...

  9. Java - 文件(IO流)

    Java - 文件 (IO)   流的分类:     > 文件流:FileInputStream | FileOutputStream | FileReader | FileWriter     ...

随机推荐

  1. Nodejs的http模块

    一.http服务器    我们知道传统的HTTP服务器是由Aphche.Nginx.IIS之类的软件来搭建的,但是Nodejs并不需要,Nodejs提供了http模块,自身就可以用来构建服务器,例如: ...

  2. 【源码分享】mui实现简单的手机音乐播放器

    mui实现简单的手机音乐播放器 最近先来无事,我用mui写了一个可以跨页面控制的音乐播放器.主要功能有上一曲,下一曲,播放,暂停,感兴趣的可以继续看下去. 说的总是不实在,直接上源码,有兴趣的可以读下 ...

  3. .NET C#到Java没那么难,Servlet篇

    前言 .NET C#到Java没那么难,都是面向对向的语言,而且语法还是相似的,先对比一下开发环境,再到Servlet,再到MVC,都是一样一样的,只是JAVA的配制项比较多而已,只要配好一个,后面都 ...

  4. response.sendRedirect页面跳转的方法总结——实习第六天

    今天想到要写这个博客完全是因为今天在这上面摔了一跤,同时也意识到了对于一个学Java的人来讲,知其然并且知其所以然是有多么的重要. 今天报了一个错误,讲的是空指针异常,原因就是在response.se ...

  5. 【T-SQL进阶】03.执行计划之旅-1

    到大牛们说执行计划,总是很惶恐,是对知识的缺乏的惶恐,所以必须得学习执行计划,以减少对这一块知识的惶恐,下面是对执行计划的第一讲-理解执行计划. 本系列[T-SQL]主要是针对T-SQL的总结. T- ...

  6. mysql CMD命令

    1.连接Mysql 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL.首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql -u root ...

  7. sql嵌套批量更新

    嵌套批量更新 UPDATE CheLiang SET lineName = t.linename FROM TeamJiHua t ,CheLiang tc WHERE t.id = tc.teami ...

  8. 小程序解析html标签wxPrase插件

    微信小程序的标签和原来我们习惯用的标签是不一样的,例如视图容器标签小程序是view,然而html就很多比如常用的div就和小程序的view类似. 通常我们在开发小程序(从列表页跳转到详情页)通过富文本 ...

  9. 4.Smarty模板之间调用

    {include file="header.tpl" name="cai"}

  10. iOS中UIWebView执行JS代码(UIWebView)

    iOS中UIWebView执行JS代码(UIWebView) 有时候iOS开发过程中使用 UIWebView 经常需要加载网页,但是网页中有很多明显的标记让人一眼就能看出来是加载的网页,而我们又不想被 ...