黑马程序员——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基础--19天(IO流之二)

---------------------- android培训、java培训、期待与您交流! ---------------------- 1.IO流(BufferedWriter) /* ...

黑马程序员-Java基础总结11——IO流(二)

IO流(二) ------- android培训、java培训、期待与您交流! ---------- ———————————————IO流中的其他流—————————————— 十、...
  • zms2100
  • zms2100
  • 2014年04月13日 05:00
  • 645

黑马程序员——IO流的总结与功能分析(二)

一、Reader 1、FileReader:面向文件对象的输入流,读取文件中内容。 功能:读文硬盘中文件内容。 构造方法: FileReader(File file) FileReader(File...

黑马程序员——Java IO流(二)之流操作规律总结、File类、Properties类、序列流等

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ 六、流操作规律总结  1.明确源和目的:   源:    字符流:FileRea...

黑马程序员——IO流总结

字节流抽象基类: InputStream、OutputStream 字符流抽象基类: Reader、Writer ------------------------------------------...

黑马程序员——IO流:自顶向下的总结

在本章中,我想尝试用一种新的方法来学习知识。传统的方式下,我们按部就班的抄写老师的笔记,加上自己个人的注解和理解,随后把知识体系完完整整,十分详尽的罗列出来。然后再通过不断的复习和巩固,做一些习题来达...

黑马程序员——day19(2)IO流 总结

----------------------    android培训    java培训   期待与您交流!    ---------------------- /* InputStream...

黑马程序员-Java基础总结10——IO流体系(一)

IO流 ------- android培训、java培训、期待与您交流! ---------- 一、IO流概述: 文件是数据的静态存储形式,而流是指数据传输时的形态,而流操作对象除文件外...
  • zms2100
  • zms2100
  • 2014年04月13日 04:40
  • 711

黑马程序员——学习日记之--IO流学习总结

——- android培训、java培训、期待与您交流! ———-IO体系简表: IO流常用基类: 字节流:InputStream、OutputStream 字符...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员——IO流总结之二
举报原因:
原因补充:

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