黑马程序员——IO流总结之二

原创 2012年03月27日 01:47:35
---------------------- android培训java培训、期待与您交流! ----------------------

String[] list() File[] listFiles()的区别:

      String[] list()这个方法返回的是当前目录下的文件以及文件夹名称,他只有名称

      File[] listFiles() 这个方法往回返的是当前目录下的文件以及文件夹的对象, 这里边得到的是对象我们可以通过getName()获得名称也可以getPath获取路径,在开发用这个比较好,里边的信息都能获得到。

递归思想:

      因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。在列出过程中出现的还是目录的话,还可以再次调用本功能。也就是函数自身调用自身。这种表现形式,或者编程手法,称为递归。

递归要注意:

1,限定条件。

2,要注意递归的次数。尽量避免内存溢出。

class File

{

      public static void main(String[] args)

      {

           要注意的是:递归的话必须在这里建立对象。

           File dir= new File("D:\\myjava");

           int num = getSum(100);如果这里等于一万就内存溢出。因为栈内存满了

           System.out.println("num="+num);

      }

      public static int getSum(int num)

      {

           if (num==1)

                 return 1;

           return num+getSum(num-1);

      }

}

主函数调用 showA();   这就是递归

void showA()

{

      showB();

      System.out.println("A");

}

void showB()

{

      showC();

      System.out.println("B");

}

void showC()

{

      System.out.println("C");

}

Properties

      Propertieshashtable的子类。也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。不需要泛型。是集合中和IO技术相结合的集合容器。该对象的特点:可以用于键值对形式的配置文件。那么在加载数据时,需要数据有固定格式:键=值。

        凡是文档中前边加井号的都是注释信息不会被Properties加载。Properties加载的信息必须是键值对。

能够读取对象的读写流

用了ObjectOutputStream就必须用ObjectInputStream 读出来他们俩要成对出现,这可以直接对对象进行读写。

这个对象必须被序列化。静态是不能被序列化的。

ObjectOutputStreamoos = new ObjectOutputStream(new FileOutputStream("obj.txt"));

           oos.writeObject(newPerson("lisi",30));把对象写入到硬盘上,是数据持久化

ObjectInputStreamois = new ObjectInputStream(new FileInputStream("obj.txt"));

           Person p = (Person)ois.readObject();从硬盘上读取对象,并取出对象,很方便

           System.out.println(p);

他们俩要成对出现,用了ObjectOutputStream 就必须用ObjectInputStream 读出来

随即读写流:

     随机读取访问,优点是可以分段读写数据。

      raf.seek();调整对象中的指针位置来进行指定的数据读取和写入,数据分段用处很大。

      RandomAccessFileraf = new RandomAccessFile("ran.txt","r");

     该类不是算是IO体系中子类。而是直接继承自Object。但是它是IO包中成员。因为它具备读和写功能。内部封装了一个数组,而且通过指针对数组的元素进行操作。可以通过getFilePointer获取指针位置,同时可以通过seek改变指针的位置。其实完成读写的原理就是内部封装了字节输入流和输出流。

 

用于操作字节数组的流对象。

       ByteArrayInputStream :在构造的时候,需要接收数据源,。而且数据源是一个字节数组。

       ByteArrayOutputStream:在构造的时候,不用定义数据目的,因为该对象中已经内部封装了可变长度的字节数组。

数据源

     ByteArrayInputStream bis = newByteArrayInputStream("美女".getBytes());

数据目的  发现源和目的都在内存中

      ByteArrayOutputStream bos = newByteArrayOutputStream();

可以用于操作基本数据类型的数据的流对象:DataInputStreamDataOutputStream

      DataInputStreamdis = new DataInputStream(new FileInputStream("abcd.txt"));

      DataOutputStreamdos = new DataOutputStream(new FileOutputStream("utfdate.txt"));

      这里边有操作基本数据类型的功能读IntInt等等,那么他的作用在于,把基本数据类型和流相结合,他能操作基本数据类型,所以构造函数要传递一个流进来。要传字节流因为Data* 他是字节流的小弟。

编码:字符串变成字节数组

解码:字节数组变成字符串

String -->byte[]: str.getBytes();指定编码表str.getBytes(charsetName);

byte[] -->String: new String(byte[]);指定编码表new String(byte[]charsetName); new一个对象就行了

      知识点:当用GBK或者UTF-8编码,而用ISO8859-1解码失败的时候,是可以通过重新对失败的文件进行在进行编码,之后再解码一次就OK了。

      但是当用GBK或者UTF-8编码,而用UTF-8或者Gbk解码失败的时候,不能通过重新对失败的文件进行在进行编码,因为这两种编码集都识别中文。utf-8gbk都识别中文,但是同一个中文在这两个表中的代表的编码是不一样的,gbk编码是两个字节代表一个字。u8编码是三个字节代表一个字。

       经过半天的总结,终于把这一块给重新复习了下,体会到了什么叫做温故而知新,其实及时总结会巩固学习过的知识,希望自己以后养成写技术博客的习惯。初学者的总结,欢迎指点,拍砖也行!

---------------------- android培训java培训、期待与您交流! ----------------------  

java IO流学习总结

Java中的流,可以从不同的角度进行分类。     按流的方向分:输入流和输出流。     按处理数据单位分:字节流和字符流。     按实现功能分:节点流和处理流。       输出流:     ...
  • du_minchao
  • du_minchao
  • 2015年10月11日 12:35
  • 15275

Java中IO流学习总结

Java中IO流学习总结一.IO流中的结构 字符流:顾名思义,该流只能处理字符,但处理字符速度很快 字节流:可以处理所有以bit为单位储存的文件,也就是说可以处理所有的文件,但是在处理字符上的速度不如...
  • Yue_Chen
  • Yue_Chen
  • 2017年05月26日 18:00
  • 217

Java中的IO流总结

Java中的IO流总结 1. 流的继承关系,以及字节流和字符流。 2. 节点流FileOutputStream和FileInputStream和处理流BufferedInputStream和Bu...
  • u013309870
  • u013309870
  • 2016年08月03日 20:03
  • 922

IO流总结(基础知识)

IO这章的知识在上面一篇博客也说过一点,主要要体会一下装饰者设计模式和适配器设计模式,这样更利于我们理解复杂的IO体系结构。今天就让我们看一看。不过在讲IO 之前,我们先把文件(File)的知识简单过...
  • u013263323
  • u013263323
  • 2015年05月26日 09:58
  • 926

java中IO流的知识点总结

1.流的概念流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。2.IO流...
  • u011626964
  • u011626964
  • 2015年09月01日 10:39
  • 6928

最完整的Java IO流学习总结

一、 File类 1、 java.io.File 类是专门对文件进行操作的类。(只能对文件本身进行操作,不能对文件内容操作) 2、 File类是“文件和目录路径名的抽象表示”。 而不是指文件的内容...
  • SilenceOO
  • SilenceOO
  • 2016年03月28日 00:37
  • 487

java IO体系的学习总结

java IO体系的整理笔记1.Java Io流的概念,分类,类图。1.1 Java Io流的概念    java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作。在java中把不同...
  • nightcurtis
  • nightcurtis
  • 2016年05月05日 16:31
  • 3229

Java IO流学习总结

Java流操作有关的类或接口: Java流类图结构:   流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数...
  • m631521383
  • m631521383
  • 2014年11月21日 16:57
  • 842

Java IO流知识总结

Java IO的一般使用原则: 一、按数据来源(去向)分类: 1、是文件: FileInputStream, FileOutputStream, FileReader, FileWriter 2、是b...
  • baofengjun
  • baofengjun
  • 2014年04月02日 10:11
  • 1910

java IO流学习总结

最近在看javaIO,总结一下这部分内容,如果有问题欢迎大家指出。1.流的分类:按照数据流向的不同:输入流、输出流 按照处理数据的单位的不同:字节流 、字符流(处理的文本文件,若处理视频、图像、音频...
  • csdn_cwj
  • csdn_cwj
  • 2016年06月09日 09:12
  • 381
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员——IO流总结之二
举报原因:
原因补充:

(最多只允许输入30个字)