黑马程序员_java Properties与序列流篇Day5

原创 2013年12月02日 16:56:25

  ----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! -----------

                                                    黑马程序员_java Properties与序列流篇Day5

 

核心:

1,当我们写应用的时候,如果用户已经使用的次数过了,就要提醒注册

2,序列流,在序列流中切割时注意我们每一部分的大小,待会组装时,可以比这个小,但绝不能比它大,如:读取时byte[] b=newbyte[1024*200];   200K,最好在切割与组装时保持一致。

 

其实这篇博客早该写了,但总是抑制不止这颗想继续看视频的心,

不过还是相信“不积跬步无以至千里,不积小流无以成江海”,不罗嗦了,还是来点实在的吧。

(一)

Properties的黑马程序员_java基础_Day2(上),这篇文章已基本介绍了Properties是什么,但并没有将其应用介绍清楚,当我们使用文本编辑器或者一些其他软件时,我们可能会注意到,当我们将文件中字体选中变色后,当我们关闭软件再次打开,颜色是改变后的颜色,这说明软件把用户选则的操作记录下来了,将其存放在文件中,当再次打开时,我们就会看到这样的结果。

 

其实Properties最重要的还是与流一起操作,Properties类中几个重要的方法我们的注意一下的,分别是:load(),List(),store().这些方法都是为我们的功能服务的,当我们写应用的时候,如果用户已经使用的次数过了,就要提醒注册。

 

一步一步来:

 

 

Step1,学习Properties与流结合的读取

 

Properties prop=new Properties();

FileInputStream fr=newFileInputStream("d:/1/1.txt");

prop.load(fr);//fr代表的是输入流

prop.list(System.out); System.out代表输出流,只不过是输出在控制台


 

 

 

Step2,学习Properties与流结合的写入

Properties prop=new Properties();

prop.setProperty("num",String.valueOf(1));

FileOutputStream fw=new FileOutputStream("d:/1/2.txt");

prop.store(fw,"注册登记");

 

其实结合这两个我们就可以实现注册监控了,我们将prop.setProperty("num",String.valueOf(1));

中的1改为变量,读取时重新赋值,这样不就实现了监控吗?

 

 

Step3,原理,为什么Properties直接用store就可以存储我们的键对值呢?

 

其实我们就是不用他的方法,直接用流操作也能实现这样监控的功能,但是这样不更加简单吗,他的底层还是用流操作的。

如下:只举了写Properties的部分代码。

FileReader f=new FileReader("d:/1/1.txt");

        

        BufferedReader br=new BufferedReader(f);

//     int len=0;

         String str=null;

//     char[] b=new char[1024];

         Properties p=new Properties();

        while((str=br.readLine())!=null)

        {

          

            String[]str1=str.split("=");

            //System.out.println(str1[0]+"="+str1[1]);

          

            p.setProperty(str1[0],str1[1]);

            

            

        }

 

 

(二)

 

序列流,SequenceInputStream,从字面意思我们就应该知道了,这是由许多流组成的一个队列,在总结序列流之前先了解一下文件切割SplitFile(这个是我们自己要实现的类),这个有点牛,我们可以将我们的文件切割成很多部分,直接上代码,这是我写的将一张700多K图片切割的。

 

publicstatic void SplitFile()throws IOException

    {

       FileInputStream fis=new FileInputStream("d:/12.jpg");

        BufferedInputStream bis=newBufferedInputStream(fis);

     

       

       

        int len =0;

        byte[] b=newbyte[1024*200];

        int num=1;

        while((len=bis.read(b))!=-1)

        {

       

        System.out.println("sd");

         FileOutputStream fos=new FileOutputStream("d:/"+num+".part");

             BufferedOutputStream bos=new BufferedOutputStream(fos);

             num++;

         bos.write(b);

         bos.close();

        }

      

        bis.close();

    }

其实他就是一个写操作,不过就是这两句

FileOutputStream fos=new FileOutputStream("d:/"+num+".part");

  BufferedOutputStream bos=new BufferedOutputStream(fos);

加到了while里面实现的效果。Num变量主要是为了文件名不一样。如果一样,那不覆盖了吗!

 

我们看看效果:

 

 

 

 

 

 

那切完了,我们还要组装吧,就用到了序列类,代码如下

Vector<FileInputStream>e=new Vector<FileInputStream>();

      

      

       FileInputStream fis1=new FileInputStream("d:/1.part");

       FileInputStream fis2=new FileInputStream("d:/2.part");

       FileInputStream fis3=new FileInputStream("d:/3.part");

       FileInputStream fis4=new FileInputStream("d:/4.part");

      

       e.add(fis1);

       e.add(fis2);

       e.add(fis3);

       e.add(fis4);

      

       Enumeration<FileInputStream> enm=e.elements();

       SequenceInputStream sis=new SequenceInputStream(enm);

        FileOutputStream fos=new FileOutputStream("d:/隐形的翅膀.jpg");

         BufferedOutputStream bos=newBufferedOutputStream(fos);

       int len=0;

       byte[] b=newbyte[1024*200];

       while((len=sis.read(b))!=-1)

       {

           bos.write(b);

       }

      

  ----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! -----------

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

『黑马程序员』---java--IO--Properties-打印流-序列流基础

----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------ java.util 类Properties是hashtable的子类, (...

黑马程序员--Java基础学习之IO流之File类、Properties对象、打印流、序列流等

一、File对象 流对象只能操作数据,而文件等信息必须通过File类操作。 File常见方法 1、创建。 boolean createNewFile(); //f.createNewFile();/...

黑马程序员——Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

第一讲     File类 一、概述 1、File类:文件和目录路径名的抽象表现形式 2、特点:         1)用来将文件或文件夹封装成对象  ...

黑马程序员——java的IO之流操作的基本规律,Properties类,打印流,序列流

1.Properties——配置文件类 1.Properties是Hashtable的子类,它具备Map集合的特点。而且它里面还有存储的键值对,都是字符串,无泛型定义。是集合中和IO技术想结合的集合容...

黑马程序员——Java基础----IO(File类、Properties类、打印流、序列流、合并流)(3)

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------                         ...

黑马程序员--------java IO流 File类、Properties、打印流、合并流、对象序列化、随机读写、字符编码

-----------android培训、java培训、java学习型技术博客、期待与您交流!------------ File类   1、用来将文件或者文件夹封装成对象, 方便对文件与文件夹...

黑马程序员-Java I/O流(二)-File类、Properties类、打印流、序列流(合并流)

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流!—— 一、File类 概述 是将文件和文件夹封装成的对象,方便对文件或者文件夹的属性信息进行操作。File类的实例是不可...

Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流) (黑马程序员)

一、概述 1、File类:文件和目录路径名的抽象表现形式 2、特点:         1)用来将文件或文件夹封装成对象         2)方便于对文件...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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