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

1. Properties

1.概述

Properties是Hashtable的子类,存储的格式那么也是键值对,但是键和值都是字符串类型

2.常用方法

  1. public class PropertiesDemo1 {
  2. public static void main(String[] args) {
  3. Properties pro = new Properties();
  4. /* setProperty(String key,String value)添加键和值 */
  5. pro.setProperty("java01", "001");
  6. pro.setProperty("java02", "002");
  7. /* 通过键获得值:String getProperty(String key) */
  8. System.out.println(pro.getProperty("java01"));
  9. /* Set<String>stringPropertyNames()获得键集 */
  10. Set<String> set = pro.stringPropertyNames();
  11. for (String s : set)
  12. System.out.println(s + ":" + pro.getProperty(s));
  13. }
  14.  
  15. }
  16. 结果:
  17. 001
  18. java02:002
  19. java01:001

3.配置文件

将配置文件中的信息存到集合中,然后修改其键和值,然后在传给文件。配置文件中的信息都是用=号存储的,例如:张三=001

第一种方法:我们不使用Properties对象,就是用集合来操作,思路:我们将文件读取出来,然后对每一行进行用=分割,把左边的存为键,把右边的存为值。

  1. import java.io.FileReader;
  2. import java.io.IOException;
  3. import java.util.HashMap;
  4. import java.util.Properties;
  5. import java.util.Set;
  6.  
  7. public class PropertiesDemo1 {
  8. public static void main(String[] args) throws IOException {
  9. BufferedReader br = new BufferedReader(new FileReader("F:\\pro.txt"));//读取流
  10. HashMap<String, String> map = new HashMap<String, String>();//map集合
  11. String line = null;
  12. while ((line = br.readLine()) != null) {
  13. String[] s = line.split("=");
  14. map.put(s[0], s[1]);
  15. }
  16. System.out.println(map);
  17. }
  18.  
  19. }
  20. 结果:
  21. {java02=002, java03=003, java01=001}

第二种方法:我们使用Properties对象,这样我们可以方便的加载流,来操作文件。

  1. import java.io.FileReader;
  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. import java.util.HashMap;
  5. import java.util.Properties;
  6. import java.util.Set;
  7.  
  8. public class PropertiesDemo1 {
  9. public static void main(String[] args) throws IOException {
  10. /* void load(Reader reader)将读取流字符流加载到集合中 */
  11. Properties pro = new Properties();
  12. FileReader fr = new FileReader("F:\\pro.txt");
  13. pro.load(fr);// 将字符读取流中读取的文件放到Properties对象中
  14. System.out.println("加载后的集合:" + pro);
  15. /* 下面我们修改集合中的数值 */
  16. pro.setProperty("java02", "hello");
  17. /*
  18. * store(Writer writer,String
  19. * comments)通过字符写入流,把集合中的信息更新配置文件,comments是注视内容
  20. */
  21. FileWriter fw = new FileWriter("F:\\pro.txt");
  22. pro.store(fw, "java");// 更新配置文件,注释为:java
  23. fr.close();
  24. fw.close();
  25. }
  26.  
  27. }
  28. 结果:
  29. 加载后的集合:{java03=003, java02=002, java01=001}

4.计算程序运行次数


  1. importjava.io.File;
  2. import java.io.FileInputStream;
  3. import java.io.FileNotFoundException;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.OutputStream;
  7. import java.io.PrintStream;
  8. import java.util.Properties;
  9.  
  10. public class PropertiesDemo {
  11.  
  12. publicstatic void main(String[] args) throws IOException {
  13. /*
  14. * 计算程序的运行次数 思路: 1.创建一个配置文件,然后然后里面定义了一个计数器
  15. * 2.每次运行的时候,都取出来,然后自增,然后再存回去
  16. */
  17.  
  18. Filefile = new File("F:\\pro.ini");
  19. if(!file.exists())
  20. file.createNewFile();
  21.  
  22. Propertiespro = new Properties();
  23. pro.load(newFileInputStream(file));// 加载流
  24. Stringvalue = pro.getProperty("count");
  25. intcount = 0;
  26. if(value != null)
  27. count= Integer.parseInt(value);
  28. count++;//自增
  29. pro.setProperty("count",count + "");// 改变值
  30. pro.store(newFileOutputStream(file), "java for count");// 更新文件
  31. System.out.println(pro);
  32. }
  33.  
  34. }结果:
  35. 运行一次,count就+1.

2. 打印流

PrintStream:字节打印流

其构造方法传入的参数:

File对象,字符串路径,字节流。

PrintWriter:字符打印流

其构造方法传入的参数有:

File对象,字符串路径,字节流,字符流。

另外注意的是:字符流中传入的是流的话,可以设置自动刷新,只有使用println,printf,format方法可以自动刷新。

  1. import java.io.BufferedReader;
  2. import java.io.File;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.PrintWriter;
  6.  
  7. public class PrintStreamDemo {
  8. public static void main(String[] agrs) throws IOException {
  9. // File f=newFile("F:\\demo.txt");
  10. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  11. PrintWriter pw = new PrintWriter(System.out,true);//true表示自动刷新,但是必须是println方法
  12. String line = null;
  13. while ((line = br.readLine()) != null) {
  14. if ("over".equals(line))
  15. return;
  16. pw.println("内容是:" + line);
  17. //pw.flush();
  18.  
  19. }
  20. br.close();
  21. pw.close();
  22. }
  23. }

现在是把内容打印在了控制台上,也可以打印在文件中,把PrintWriter流对象更改一下就可以的啊。

3. 合并流

将多个流合并成一个流,便于操作

例如:三个文件的内容写入到第四个文件中,那先把指定到前三个文件的流合并成一个流,然后指向第四个进行读取后,写入

1.可以现将两个流合并到一个流,然后再把合并流和另外一个流再合并,public SequenceInputStream(InputStreams1,InputStream s2)

2.也可以使用集合,public SequenceInputStream(Enumeration<? extends InputStream> e)

  1. import java.io.FileOutputStream;
  2. import java.io.IOException;
  3. import java.io.SequenceInputStream;
  4. import java.util.Enumeration;
  5. import java.util.Vector;
  6. import java.io.FileInputStream;
  7.  
  8. public class SqueDemo {
  9. public static void main(String[] agrs) throws IOException {
  10. Vector<FileInputStream> v = new Vector<FileInputStream>();
  11. v.add(new FileInputStream("F:\\1.txt"));
  12. v.add(new FileInputStream("F:\\2.txt"));
  13. v.add(new FileInputStream("F:\\3.txt"));
  14. Enumeration<FileInputStream> en = v.elements();
  15. SequenceInputStreamsis = new SequenceInputStream(en);
  16.  
  17. FileOutputStream out = new FileOutputStream("F:\\4.txt");
  18. byte[] b = new byte[1024];
  19. int len = 0;
  20. while ((len = sis.read(b)) != -1) {
  21. out.write(b, 0, len);
  22. out.flush();
  23. }
  24. sis.close();
  25. out.close();
  26.  
  27. }
  28. }

4. 切割流

将图片分割后,然后在合并

  1. import java.io.FileInputStream;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.io.SequenceInputStream;
  6. import java.util.Enumeration;
  7. import java.util.Vector;
  8.  
  9. public class PhotoDemo {
  10. public static void main(String[] args) throws IOException {
  11.  
  12. FenGe();
  13.  
  14. HeBing();
  15.  
  16. }
  17.  
  18. private static void HeBing() throws FileNotFoundException, IOException {
  19. /* 其实这个也可以使用循环,然后添加到集合, */
  20. Vector<FileInputStream> v = new Vector<FileInputStream>();
  21. v.add(new FileInputStream("F:\\part\\1.part"));
  22. v.add(new FileInputStream("F:\\part\\2.part"));
  23. v.add(new FileInputStream("F:\\part\\3.part"));
  24. v.add(new FileInputStream("F:\\part\\4.part"));
  25. v.add(new FileInputStream("F:\\part\\5.part"));
  26. Enumeration<FileInputStream> en = v.elements();
  27. SequenceInputStream sis = new SequenceInputStream(en);
  28.  
  29. FileOutputStream out = new FileOutputStream("F:\\part\\1.bmp");
  30. byte[] b = new byte[1024];
  31. int len = 0;
  32. while ((len = sis.read(b)) != -1) {
  33. out.write(b, 0, len);
  34. out.flush();
  35. }
  36. sis.close();
  37. out.close();
  38. }
  39.  
  40. /* 分割 */
  41. private static void FenGe() throws FileNotFoundException, IOException {
  42. FileInputStream input = new FileInputStream("F:\\1.png");
  43.  
  44. FileOutputStream out = null;
  45. byte[] buf = new byte[1024 * 100];
  46. int count = 1;
  47. int len = 0;
  48. while ((len = input.read(buf)) != -1) {
  49. out = new FileOutputStream("F:\\part\\" + (count++) + ".part");// 分割后的后缀名自己可以自定义
  50. out.write(buf, 0, len);
  51. out.flush();
  52. out.close();
  53.  
  54. }
  55. input.close();
  56. }
  57.  
  58. }

其实也可以分割媒体,电影和音乐的。

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

黑马程序员_<<properties,打印流,合并流,分割流>>的更多相关文章

  1. 黑马程序员_<<String类>>

    --------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1. String类 1.概述 String ...

  2. 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17

    黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...

  3. 2016年8月17日 内省(1)18_黑马程序员_使用beanUtils操纵javabean

    8.内省(1):18_黑马程序员_使用beanUtils操纵javabean 1.导入两个包: 2.调用静态方法. 9.泛型 map.entrySet() :取出map集合的键值对组成一个set集合. ...

  4. 黑马程序员_高新技术之javaBean,注解,类加载器

    ----------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 第一部分 javaBean 一,由内省引出javaBean 1,内省: 内省对应 ...

  5. JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典

    总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...

  6. 黑马程序员_ JAVA中的多线程

    ------- android培训.java培训.期待与您交流! ---------- 尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的. 本来打算用一节 ...

  7. 黑马程序员_ Objective-c 面向对象笔记详解

    1)类,对象,方法 类 类名: 1) 类名的第一个字母必须是大写 2) 不能有下划线 3) 多个英文单词,用驼峰标识 类的声明和实现 类的声明 @interface 类名 : NSObject { @ ...

  8. 黑马程序员_ Objective-c 概述及面向对象与三大特性

    -----------android培训.java培训.java学习型技术博客.期待与您交流!------------ (一).语法概述 1. oc介绍:(.m文件) 1> c语言的基础上,增加 ...

  9. 黑马程序员_ Objective-c 之block、protocol学习笔记

    一):block学习总结 block :用来保存一段代码. 1.block 特点:  1> Block封装了一段代码,可以在任何时候执行   2> Block可以作为函数或者函数的返回值, ...

  10. 黑马程序员——OC语言 类和对象

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)类 1)类的声明 代码编写 ①定义一个Car类,拥有2个属性:轮子数 ...

随机推荐

  1. android TimerTask 的简单应用,以及java.lang.IllegalStateException: TimerTask is scheduled already错误的解决方法【转】

    Android应用开发中常常会用到定时器,不可避免的需要用到 TimerTask 定时器任务这个类下面简单的一个示例演示了如何使用TimerTask这个示例演示了3秒未有触屏事件发生则锁屏(只是设置下 ...

  2. Jquery小东西收集

    1. $(document).ready(),$(function(){}),$(window).load(),window.onload的关系与区别 $(document).ready(functi ...

  3. Canvas transform浅析

    没有前奏,直接进入主题 transform调用方法: ctx.transform(a,b,c,d,e,f);如下 var ctx = document.getElementById("myC ...

  4. java学习——IO流

    字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表.获取对应的文字.在对这个文字进行操作.简单说:字节流+编码表 ---------------------------- ...

  5. c++面试(二)

    1.宏参数的连接 #define CONS(a,b) (int)(a##e##b) CONS(2,3) =>2e3 =2000 2.const int b=10; int c=20; const ...

  6. 【HAOI2011】向量

    [题目描述] 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个 ...

  7. Python django admin 替换表单控件

    测试版本: Python 2.7 Django 1.6.2 models.py from django.db import models class Article(models.Model): ti ...

  8. php回调函数callback函数实例

    <?php // 将文本中的年份增加一年. $text = "April fools day is 04/01/2002\n"; $text.= "Last chr ...

  9. C# web访问mysql数据库-整理归纳总结

    基本对比 使用方式 使用场合 优缺点 是否需要安装 需要的dll网址 引用方式 程序内引用 程序初期确定使用MySql,前期添加引用 大多数情况下使用在类文件内,多数使用于aspx,ashx等带有后置 ...

  10. 黑马程序员—C语言的函数、数组、字符串

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...