黑马程序员_<<properties,打印流,合并流,分割流>>
--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------
1. Properties
1.概述
Properties是Hashtable的子类,存储的格式那么也是键值对,但是键和值都是字符串类型
2.常用方法
- public class PropertiesDemo1 {
- public static void main(String[] args) {
- Properties pro = new Properties();
- /* setProperty(String key,String value)添加键和值 */
- pro.setProperty("java01", "001");
- pro.setProperty("java02", "002");
- /* 通过键获得值:String getProperty(String key) */
- System.out.println(pro.getProperty("java01"));
- /* Set<String>stringPropertyNames()获得键集 */
- Set<String> set = pro.stringPropertyNames();
- for (String s : set)
- System.out.println(s + ":" + pro.getProperty(s));
- }
- }
- 结果:
- 001
- java02:002
- java01:001
3.配置文件
将配置文件中的信息存到集合中,然后修改其键和值,然后在传给文件。配置文件中的信息都是用=号存储的,例如:张三=001
第一种方法:我们不使用Properties对象,就是用集合来操作,思路:我们将文件读取出来,然后对每一行进行用=分割,把左边的存为键,把右边的存为值。
- import java.io.FileReader;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.Properties;
- import java.util.Set;
- public class PropertiesDemo1 {
- public static void main(String[] args) throws IOException {
- BufferedReader br = new BufferedReader(new FileReader("F:\\pro.txt"));//读取流
- HashMap<String, String> map = new HashMap<String, String>();//map集合
- String line = null;
- while ((line = br.readLine()) != null) {
- String[] s = line.split("=");
- map.put(s[0], s[1]);
- }
- System.out.println(map);
- }
- }
- 结果:
- {java02=002, java03=003, java01=001}
第二种方法:我们使用Properties对象,这样我们可以方便的加载流,来操作文件。
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.util.HashMap;
- import java.util.Properties;
- import java.util.Set;
- public class PropertiesDemo1 {
- public static void main(String[] args) throws IOException {
- /* void load(Reader reader)将读取流字符流加载到集合中 */
- Properties pro = new Properties();
- FileReader fr = new FileReader("F:\\pro.txt");
- pro.load(fr);// 将字符读取流中读取的文件放到Properties对象中
- System.out.println("加载后的集合:" + pro);
- /* 下面我们修改集合中的数值 */
- pro.setProperty("java02", "hello");
- /*
- * store(Writer writer,String
- * comments)通过字符写入流,把集合中的信息更新配置文件,comments是注视内容
- */
- FileWriter fw = new FileWriter("F:\\pro.txt");
- pro.store(fw, "java");// 更新配置文件,注释为:java
- fr.close();
- fw.close();
- }
- }
- 结果:
- 加载后的集合:{java03=003, java02=002, java01=001}
4.计算程序运行次数
- importjava.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.io.PrintStream;
- import java.util.Properties;
- public class PropertiesDemo {
- publicstatic void main(String[] args) throws IOException {
- /*
- * 计算程序的运行次数 思路: 1.创建一个配置文件,然后然后里面定义了一个计数器
- * 2.每次运行的时候,都取出来,然后自增,然后再存回去
- */
- Filefile = new File("F:\\pro.ini");
- if(!file.exists())
- file.createNewFile();
- Propertiespro = new Properties();
- pro.load(newFileInputStream(file));// 加载流
- Stringvalue = pro.getProperty("count");
- intcount = 0;
- if(value != null)
- count= Integer.parseInt(value);
- count++;//自增
- pro.setProperty("count",count + "");// 改变值
- pro.store(newFileOutputStream(file), "java for count");// 更新文件
- System.out.println(pro);
- }
- }结果:
- 运行一次,count就+1.
2. 打印流
PrintStream:字节打印流
其构造方法传入的参数:
File对象,字符串路径,字节流。
PrintWriter:字符打印流
其构造方法传入的参数有:
File对象,字符串路径,字节流,字符流。
另外注意的是:字符流中传入的是流的话,可以设置自动刷新,只有使用println,printf,format方法可以自动刷新。
- import java.io.BufferedReader;
- import java.io.File;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- public class PrintStreamDemo {
- public static void main(String[] agrs) throws IOException {
- // File f=newFile("F:\\demo.txt");
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- PrintWriter pw = new PrintWriter(System.out,true);//true表示自动刷新,但是必须是println方法
- String line = null;
- while ((line = br.readLine()) != null) {
- if ("over".equals(line))
- return;
- pw.println("内容是:" + line);
- //pw.flush();
- }
- br.close();
- pw.close();
- }
- }
现在是把内容打印在了控制台上,也可以打印在文件中,把PrintWriter流对象更改一下就可以的啊。
3. 合并流
将多个流合并成一个流,便于操作
例如:三个文件的内容写入到第四个文件中,那先把指定到前三个文件的流合并成一个流,然后指向第四个进行读取后,写入
1.可以现将两个流合并到一个流,然后再把合并流和另外一个流再合并,public SequenceInputStream(InputStreams1,InputStream s2)
2.也可以使用集合,public SequenceInputStream(Enumeration<? extends InputStream> e)
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.SequenceInputStream;
- import java.util.Enumeration;
- import java.util.Vector;
- import java.io.FileInputStream;
- public class SqueDemo {
- public static void main(String[] agrs) throws IOException {
- Vector<FileInputStream> v = new Vector<FileInputStream>();
- v.add(new FileInputStream("F:\\1.txt"));
- v.add(new FileInputStream("F:\\2.txt"));
- v.add(new FileInputStream("F:\\3.txt"));
- Enumeration<FileInputStream> en = v.elements();
- SequenceInputStreamsis = new SequenceInputStream(en);
- FileOutputStream out = new FileOutputStream("F:\\4.txt");
- byte[] b = new byte[1024];
- int len = 0;
- while ((len = sis.read(b)) != -1) {
- out.write(b, 0, len);
- out.flush();
- }
- sis.close();
- out.close();
- }
- }
4. 切割流
将图片分割后,然后在合并
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.SequenceInputStream;
- import java.util.Enumeration;
- import java.util.Vector;
- public class PhotoDemo {
- public static void main(String[] args) throws IOException {
- FenGe();
- HeBing();
- }
- private static void HeBing() throws FileNotFoundException, IOException {
- /* 其实这个也可以使用循环,然后添加到集合, */
- Vector<FileInputStream> v = new Vector<FileInputStream>();
- v.add(new FileInputStream("F:\\part\\1.part"));
- v.add(new FileInputStream("F:\\part\\2.part"));
- v.add(new FileInputStream("F:\\part\\3.part"));
- v.add(new FileInputStream("F:\\part\\4.part"));
- v.add(new FileInputStream("F:\\part\\5.part"));
- Enumeration<FileInputStream> en = v.elements();
- SequenceInputStream sis = new SequenceInputStream(en);
- FileOutputStream out = new FileOutputStream("F:\\part\\1.bmp");
- byte[] b = new byte[1024];
- int len = 0;
- while ((len = sis.read(b)) != -1) {
- out.write(b, 0, len);
- out.flush();
- }
- sis.close();
- out.close();
- }
- /* 分割 */
- private static void FenGe() throws FileNotFoundException, IOException {
- FileInputStream input = new FileInputStream("F:\\1.png");
- FileOutputStream out = null;
- byte[] buf = new byte[1024 * 100];
- int count = 1;
- int len = 0;
- while ((len = input.read(buf)) != -1) {
- out = new FileOutputStream("F:\\part\\" + (count++) + ".part");// 分割后的后缀名自己可以自定义
- out.write(buf, 0, len);
- out.flush();
- out.close();
- }
- input.close();
- }
- }
其实也可以分割媒体,电影和音乐的。
--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! --------------------
黑马程序员_<<properties,打印流,合并流,分割流>>的更多相关文章
- 黑马程序员_<<String类>>
--------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1. String类 1.概述 String ...
- 大数据-将MP3保存到数据库并读取出来《黑马程序员_超全面的JavaWeb视频教程vedio》day17
黑马程序员_超全面的JavaWeb视频教程vedio\黑马程序员_超全面的JavaWeb教程-源码笔记\JavaWeb视频教程_day17-资料源码\day17_code\day17_1\ 大数据 目 ...
- 2016年8月17日 内省(1)18_黑马程序员_使用beanUtils操纵javabean
8.内省(1):18_黑马程序员_使用beanUtils操纵javabean 1.导入两个包: 2.调用静态方法. 9.泛型 map.entrySet() :取出map集合的键值对组成一个set集合. ...
- 黑马程序员_高新技术之javaBean,注解,类加载器
----------- android培训.java培训.java学习型技术博客.期待与您交流! ---------- 第一部分 javaBean 一,由内省引出javaBean 1,内省: 内省对应 ...
- JavaWeb开发之四:servlet技术 黑马程序员_轻松掌握JavaWeb开发之四Servlet开发 方立勋老师视频教程相当的经典
总结: 记住:servlet对象在应用程序运行的过程中只创建一次,浏览器每次访问的时候,创建reponse对象 request对象,然后调用servlet的service方法,reponse对象和re ...
- 黑马程序员_ JAVA中的多线程
------- android培训.java培训.期待与您交流! ---------- 尽管线程对象的常用方法可以通过API文档来了解,但是有很多方法仅仅从API说明是无法详细了解的. 本来打算用一节 ...
- 黑马程序员_ Objective-c 面向对象笔记详解
1)类,对象,方法 类 类名: 1) 类名的第一个字母必须是大写 2) 不能有下划线 3) 多个英文单词,用驼峰标识 类的声明和实现 类的声明 @interface 类名 : NSObject { @ ...
- 黑马程序员_ Objective-c 概述及面向对象与三大特性
-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ (一).语法概述 1. oc介绍:(.m文件) 1> c语言的基础上,增加 ...
- 黑马程序员_ Objective-c 之block、protocol学习笔记
一):block学习总结 block :用来保存一段代码. 1.block 特点: 1> Block封装了一段代码,可以在任何时候执行 2> Block可以作为函数或者函数的返回值, ...
- 黑马程序员——OC语言 类和对象
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)类 1)类的声明 代码编写 ①定义一个Car类,拥有2个属性:轮子数 ...
随机推荐
- android TimerTask 的简单应用,以及java.lang.IllegalStateException: TimerTask is scheduled already错误的解决方法【转】
Android应用开发中常常会用到定时器,不可避免的需要用到 TimerTask 定时器任务这个类下面简单的一个示例演示了如何使用TimerTask这个示例演示了3秒未有触屏事件发生则锁屏(只是设置下 ...
- Jquery小东西收集
1. $(document).ready(),$(function(){}),$(window).load(),window.onload的关系与区别 $(document).ready(functi ...
- Canvas transform浅析
没有前奏,直接进入主题 transform调用方法: ctx.transform(a,b,c,d,e,f);如下 var ctx = document.getElementById("myC ...
- java学习——IO流
字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表.获取对应的文字.在对这个文字进行操作.简单说:字节流+编码表 ---------------------------- ...
- c++面试(二)
1.宏参数的连接 #define CONS(a,b) (int)(a##e##b) CONS(2,3) =>2e3 =2000 2.const int b=10; int c=20; const ...
- 【HAOI2011】向量
[题目描述] 给你一对数a,b,你可以任意使用(a,b), (a,-b), (-a,b), (-a,-b), (b,a), (b,-a), (-b,a), (-b,-a)这些向量,问你能不能拼出另一个 ...
- Python django admin 替换表单控件
测试版本: Python 2.7 Django 1.6.2 models.py from django.db import models class Article(models.Model): ti ...
- php回调函数callback函数实例
<?php // 将文本中的年份增加一年. $text = "April fools day is 04/01/2002\n"; $text.= "Last chr ...
- C# web访问mysql数据库-整理归纳总结
基本对比 使用方式 使用场合 优缺点 是否需要安装 需要的dll网址 引用方式 程序内引用 程序初期确定使用MySql,前期添加引用 大多数情况下使用在类文件内,多数使用于aspx,ashx等带有后置 ...
- 黑马程序员—C语言的函数、数组、字符串
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.函数 定义:函数是代码复用的一种机制. 函数的基本语法: 返回类型 函数名 ( 参数类型 参 ...