java Io 流类详解

关于java  流类的复习;习惯性的复习按照图结构一层层往下深入去了解去复习,最后通过代码来实现感觉印象会更深刻一些;

关于 I/O流:IO可以理解为JAVA用来传递数据的管道,创建一个IO,就相当于将管道与某个数据源连接到一起了.

字节流:数据流中最小的数据单元是字节。  字节:字节是一个八位的二进制数是一个很具体的存储空间;

字符流:数据流中最小的数据单元是字符;  字符:是一个抽象的符号,例如 1、2、3 、人  等   (并不是说直接传输字符,而是将字符按照指定的编码规则,转成对应的字节流后进行传输)



java的常用输入、输出流其实都是继承自4个抽象类,分别是:

基于单字节的InputStream,OutputStream类(面向字节形式的I/O)
基于双字节的Unicode代码单元的 Reader, Writer类(面向字符形式的I/O)

Reader(读入Unicode编码字节)

  • CharArrayReader(从字符串数组中读取字符)

    /*CharArrayReader  从字符串数组中读取字符   */
     public static void chararrayreader() throws IOException {
         char [] a = new char[]{‘a‘,‘b‘,‘c‘};
         CharArrayReader charArrayReader = new CharArrayReader(a);
            /*  当 CharArrayReader  读取不到字符时  返回值为-1   */
         int i = 0;
         while ((i = charArrayReader.read())!= -1){
             System.out.println("字符 :"+(char)i);
         }
    
     }
  •   InputStreamReader(从本地系统文件中读取字符序列)
  •   FileReader(InputStreamReader的子类)
  • StringReader(从字符串数组中读取字符序列)
  • PipedReader(从线程管道中读取字符序列)
  • InputStreamReader(从输入流中读取数据)

     /* 关于 从本地文件中读取 字符序列 */
      public static void inputreader() throws IOException {
    
          /*从文件中  读取数据到 数据流 */
          InputStream inputStream = new FileInputStream("E:\\test.txt");
          /* 将字节流转换成 字符流 */
          InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
    
          char []cha = new char[1024];
          int len = inputStreamReader.read(cha);
          System.out.println(new String(cha,0,len));
          /* 关流 */
          inputStreamReader.close();
    
      }

Writer(写入) 这个不多讲 和上边reader 相反 一个写入,一个读出 直接上代码:

代码参考:http://blog.csdn.net/lanhuzi9999/article/details/36188047

 /* 关于 从本地文件中读取 字符序列 */
  public static void inputreader() throws IOException {

      /*从文件中  读取数据到 数据流 */
      InputStream inputStream = new FileInputStream("E:\\test.txt");
      /* 将字节流转换成 字符流 */
      InputStreamReader inputStreamReader = new InputStreamReader(inputStream);

      char []cha = new char[1024];
      int len = inputStreamReader.read(cha);
      System.out.println("本地文件:"+new String(cha,0,len));
      /* 关流 */
      inputStreamReader.close();

  }

  /*  Writer  */
  public static void writer() throws IOException {
      /*String Writer */
      String   string = "从今天起好好复习";
      StringWriter stringWriter = new StringWriter();
      stringWriter.write("你好吗  ");
      stringWriter.write("这是写入的  writer ");

      System.out.println(string+stringWriter.toString()
      );

      /*OutputStreamWriter  FileWriter*/
      OutputStream out = System.out;//打印到控制台
//      OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件
      OutputStreamWriter osr = new OutputStreamWriter(out);//输出
//      OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//两句可以综合到一句。
//      int ch = 97;//a
//      int ch = 20320;//你
//      osr.write(ch);
      String str = "你好吗?";//你好吗?
      osr.write(str);
      osr.flush();
      osr.close();
  }
    public static void transWriteByBuf() throws IOException {
//      OutputStream out = System.out;//打印到控制台。
        OutputStream out = new FileOutputStream("D:\\demo.txt");//打印到文件。
        OutputStreamWriter osr = new OutputStreamWriter(out);//输出
//      OutputStreamWriter osr = new OutputStreamWriter(new FileOutputStream("D:\\demo.txt"));//综合到一句。
        BufferedWriter bufw = new BufferedWriter(osr);//缓冲
//      int ch = 97;//a
//      int ch = 20320;//你
//      osr.write(ch);
        String str = "你好吗?\r\n我很好!";//你好吗?
        bufw.write(str);
        bufw.flush();
        bufw.close();

  }

File  类  (重点讲解)

  • File  类的对象  表示了磁盘上的文件或者文件目录
  • File类直接处理文件  和文件系统
  • File类提供了方法 对文件或者文件目录进行操作
  • File 常用方法
  • 懒得写了  直接复制粘贴来源:http://www.jb51.net/article/36126.htm               

    创建方法

    1.boolean createNewFile() 不存在返回true 存在返回false
    2.boolean mkdir() 创建目录
    3.boolean mkdirs() 创建多级目录

    删除方法

    1.boolean delete()
    2.boolean deleteOnExit() 文件使用完成后删除

  • 判断方法

    1.boolean canExecute()判断文件是否可执行
    2.boolean canRead()判断文件是否可读
    3.boolean canWrite() 判断文件是否可写
    4.boolean exists() 判断文件是否存在
    5.boolean isDirectory()
    6.boolean isFile()
    7.boolean isHidden()
    8.boolean isAbsolute()判断是否是绝对路径 文件不存在也能判断

    获取方法

    1.String getName()
    2.String getPath()
    3.String getAbsolutePath()
    4.String getParent()//如果没有父目录返回null
    5.long lastModified()//获取最后一次修改的时间
    6.long length()
    7.boolean renameTo(File f)
    8.File[] liseRoots()//获取机器盘符
    9.String[] list()
    10.String[] list(FilenameFilter filter)

  • 常用方法实现
  •  /*File  类  */
      public static  void File () throws IOException {
          System.out.println("woca ");
          /*创建一个路径*/
          File file3 = new File("E://file//jj");
         System.out.println( file3.mkdir());
          /*创建一个文件  */
          File file = new File("E://te.txt");
          file.createNewFile();
    
          /* 根据一个 基路径去创建文件  */
          File file2 = new File(file3,"tt.txt");
          file2.createNewFile();
          /* 判断  file对象是否是 文件或者路径 */
    
          System.out.println("是否是路径"+file3.isDirectory());
          System.out.println("是否是文件"+file2.isFile());
    
          /*  获取某个文件夹内文件的目录 */
    
          File file4 = new File("E://workspace");
    
          String names[]  = file4.list();
          for(String name :names) {
              System.out.println(name);
          }
    
          /*  删除文件  */
          file2.delete();
    
      }
时间: 2024-08-05 15:20:53

java Io 流类详解的相关文章

Java中的IO流系统详解

Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换.而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换.字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高

JDK1.8 java.io.Serializable接口详解

java.io.Serializable接口是一个标志性接口,在接口内部没有定义任何属性与方法.只是用于标识此接口的实现类可以被序列化与反序列化.但是它的奥秘并非像它表现的这样简单.现在从以下几个问题入手来考虑. 希望对象的某些属性不参与序列化应该怎么处理? 对象序列化之后,如果类的属性发生了增减那么反序列化时会有什么影响呢? 如果父类没有实现java.io.Serializable接口,子类实现了此接口,那么父类中的属性能被序列化吗? serialVersionUID属性是做什么用的?必须申明

Java:Object类详解

Java的一些特性会让初学者感到困惑,但在有经验的开发者眼中,却是合情合理的.例如,新手可能不会理解Object类.这篇文章分成三个部分讲跟Object类及其方法有关的问题. 上帝类 问:什么是Object类? 答:Object类存储在java.lang包中,是所有java类(Object类除外)的终极父类.当然,数组也继承了Object类.然而,接口是不继承Object类的,原因在这里指出:Section 9.6.3.4 of the Java Language Specification:"

Java之Object类详解

相等性的比较: 1.对于原生数据类型来说,比较的是左右两边的值是否相等 2.对于引用类型来说,比较左右两边的引用是否指向同一个对象,或者说左右两边的引用地址是否相同 java.lang.Object类.java.lang包在使用的时候无需显示导入,编译时由编译器自动帮助我们导入 API(application Programming interface),应用编程接口. package com.yuanzijian01; public class ObjectTest { public stat

java的Random类详解

Random类是一个专门用来生成一个伪随机数的类,这个类提供了两个构造函数,一个使用默认的种子,另一个需要程序员显示传入一个long型整数的种子.与Math类中的random方法生成的伪随机数不同的是,Math的random方法生成的伪随机数取值范围是[0,1.0),Random类不仅可以生成浮点数的伪随机数,还可以生成整数类型的伪随机数,还可以指定伪随机数的范围非常好用..下面是转载的博客园中的一篇文章讲解的非常好. Random类 (java.util) Random类中实现的随机算法是伪随

Java中ArrayList类详解

1.什么是ArrayList ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处: 动态的增加和减少元素 实现了ICollection和IList接口 灵活的设置数组的大小 2.如何使用ArrayList 最简单的例子: ArrayList List = new ArrayList(); for( int i=0;i <10;i++ ) //给数组增加10个Int元素 List.Add(i); //..程序做一些处理 List.Remove

Java Properties工具类详解

1.Java Properties工具类位于java.util.Properties,该工具类的使用极其简单方便.首先该类是继承自 Hashtable<Object,Object> 这就奠定了Properties类的本质其实是一个HashTable,那么对于各种工具类的典型特性就是在HashTable的基础之上做各种封装,以降低操作的难度.说白了,本质上还是key = value结构,只不过key和value都是字符串而已.可以理解成为一个简化版的Map<String, String&g

java中File类详解

构造函数 代码如下: public class FileDemo {     public static void main(String[] args){         //构造函数File(String pathname)         File f1 =new File("c:\\abc\\1.txt");         //File(String parent,String child)         File f2 =new File("c:\\abc&qu

java.util.Arrays类详解

为实现数组的排序和查找.数组的比较和对数组填充元素,java.util.Arrays类包括各种各样的静态方法.这些方法都有对所有基本类型的重载方法. 可以使用sort方法对整个数组或部分数组进行排序.例如,下面的代码对数值型数组和字符型数组进行排序. double[] numbers = {6.0,4.4,1.9,2.9,3.4,3.5}; java.util.Arrays.sort(numbers);最后的结果是[1.9, 2.9, 3.4, 3.5, 4.4, 6.0]默认为升序排列 cha