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类基本操作

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

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

  1. package com.hanqi.maya.util;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8.  
  9. public class TestFile {
  10. public static void main(String[] args) {
  11. File file=new File("D:\\");
  12. filesum(file,1);
  13. }
  14. public static void filesum(File f,int len){
  15. if(f.exists()){//判断路径是否存在
  16. File[] files=f.listFiles(); //获取路径下的文件名
  17. for(File fi:files){ //循环输出文件名
  18. if(fi.isDirectory()){ //判断是否文件夹
  19. printBlank(len);
  20. System.out.println(fi.getName());
  21. filesum(fi,len+1); //继续调用自身
  22. }else{
  23. printBlank(len); //输出空格
  24. System.out.println(fi.getName()); //获取当前文件夹名
  25. }
  26. }
  27. }else{
  28. System.out.println("文件不存在!!!");
  29. }
  30. }
  31. public static void printBlank(int len){
  32. for (int i = 0; i < len; i++) {//输出. 以区分文件夹层次
  33. System.out.print(". ");
  34. }
  35. }
  36. }

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)---每次调用写出一行

例子:

  1. package com.hanqi.maya.util;
  2.  
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileNotFoundException;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.io.InputStream;
  9. import java.io.OutputStream;
  10.  
  11. public class Test2 {
  12. public static void main(String[] args) {
  13. File file=new File("E:\\ceshi.txt");
  14. File ofile=new File("E:\\cewshi2.txt");
  15. int a=-1;//用作判断
  16.  
  17. try {
  18. InputStream in =new FileInputStream(file);
  19. OutputStream out = new FileOutputStream(ofile);
  20. while((a=in.read())!=-1){//将下一个字符赋给a并输出和写入,如果没有下一个 则a=-1结束while循环
  21. System.out.print((char)a);//强转输出字符
  22. out.write(a);//写入到文件
  23. }
  24. in.close();
  25. out.close();
  26. } catch (FileNotFoundException e) {
  27. e.printStackTrace();
  28. } catch (IOException e) {
  29. e.printStackTrace();
  30. }
  31. }
  32. }
  1. package com.hanqi.maya.util;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.BufferedWriter;
  5. import java.io.File;
  6. import java.io.FileInputStream;
  7. import java.io.FileNotFoundException;
  8. import java.io.FileOutputStream;
  9. import java.io.FileReader;
  10. import java.io.FileWriter;
  11. import java.io.IOException;
  12. import java.io.InputStream;
  13. import java.io.OutputStream;
  14. import java.io.Reader;
  15. import java.io.Writer;
  16.  
  17. public class Test3 {
  18. public static void main(String[] args) {
  19. File file=new File("E:\\ceshi.txt");
  20. File ofile=new File("E:\\cewshi8.txt");
  21.  
  22. Reader r=null;
  23.  
  24. try {
  25. r=new FileReader(file);
  26. Writer w=new FileWriter(ofile);
  27. BufferedReader br=new BufferedReader(r);
  28. BufferedWriter bw=new BufferedWriter(w);
  29. String s=null;
  30. while((s=br.readLine())!=null){
  31. System.out.print(s);
  32. bw.write(s);
  33. bw.flush();//如果写入需要用 flush 刷新流,否则会在缓冲区不写入文件
  34. }
  35. br.close();
  36. bw.close();//调用该方法前会自动调用 flush
  37. } catch (FileNotFoundException e) {
  38.  
  39. e.printStackTrace();
  40. } catch (IOException e) {
  41. e.printStackTrace();
  42. }
  43. }
  44. }

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. react 基础

    一.组件 函数式定义的无状态组件 es5原生方式React.createClass定义的组件 es6形式的extends React.Component定义的组件 React.Component是以E ...

  2. Java对象与类中的一个小练习

    一直在Eclipse里做练习.是做一个练习,执行一个的那种.刚刚学习了Java的对象与类,练习中把类和执行放在同一包下的两个.java文件里面了.是可以执行的.(Get) 相关代码: public c ...

  3. Safari Private 模式下 localStorage 的问题

    现如今好多浏览器都有「隐身模式」,Safari 管这叫「Private Browing」,国内各种牌子的套壳浏览器叫「无痕浏览」.私以为从命名上来说,倒是国内更中文一些. 这种模式下浏览网页踏雪无痕, ...

  4. 一篇文章带你快速入门createjs

    开始用createjs这个框架的时候,发现网上的相关教程还是挺少的,所以写一篇文章,方便日后查看.   createjs简介 官网:http://www.createjs.cc/ createjs中包 ...

  5. octomap中3d-rrt路径规划

    路径规划 碰撞冲突检测 在octomap中制定起止点,目标点,使用rrt规划一条路径出来,没有运动学,动力学的限制,只要能避开障碍物. 效果如下: #include "ros/ros.h&q ...

  6. Css实现一个简单的幻灯片效果页面

    使用animation动画实现一个简单的幻灯片效果. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 2 ...

  7. Treasure Hunt

    Treasure Hunt time limit per test 1 second memory limit per test 256 megabytes input standard input ...

  8. 用netsh wlan命令行解决“Win10下WLAN不自动登陆”问题

    系统崩溃了,找了一个版本Windows 10重装后,发现进入系统后不会自动连接自己家的Wifi,每次都要手动点"登录",烦不胜烦. 于是百度.Google一起上,找解决方案,然后所 ...

  9. AospExtended K3 Note最新官方版 Android7.1.2 极速 省电 流畅 Galaxy XIAOMI Moto Lenovo Coolpad 均支持

    AospExtended 最新官方版 Android7.1.2 极速 省电 流畅 Galaxy  XIAOMI Moto  Lenovo  Coolpad  均支持 之前用过1629开发版等,体验了很 ...

  10. StructureMap经典的IoC/DI容器

    StructureMap是一款很老的IoC/DI容器,从2004年.NET 1.1支持至今. 一个使用例子 //创建业务接口 public interface IDispatchService { } ...