黑马程序员_<<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个属性:轮子数 ...
随机推荐
- struts.enable.DynamicMethodInvocation = true 动态方法调用(转)
原文地址:http://blog.csdn.net/wfcaven/article/details/5937557 default.properties 在Struts 2的核心jar包-struts ...
- C#中的IO流操作(FileStream)
StreamReader和StreamWriter适用于对文本文件的操作,因为它是以字符为单位进行的操作 不用担心编码问题 using (Stream s = new FileStream(@&quo ...
- Web api 文档以及测试工具配置
第一步: 创建web api 在nuget 上搜索 webapitestclient (包含预发行版) 然后在 /Areas/HelpPage/Views/Help/Api.cshtml 末尾 添加 ...
- Swift - 15 - 导入Foundation使用更多字符串功能
//: Playground - noun: a place where people can play import Foundation var str = "Hello, playgr ...
- JavaScript--格式化当前时间
<!doctype html> <html> <head> <meta charset="UTF-8"> <title> ...
- SSM框架入门和搭建 十部曲
又快到毕业设计的时候了,有的学弟说想用ssm做毕业设计,在网上找到资料看不懂,基础差.我就帮他写了一个demo,顺便也整理一下. SSM框架,顾名思义,就是Spring+SpringMVC+mybat ...
- 你好,C++(12)如何管理多个类型相同性质相同的数据?3.6 数组
3.6 数组 学过前面的基本数据类型之后,我们现在可以定义单个变量来表示单个的数据.例如,我们可以用int类型定义变量来表示公交车的216路:可以用float类型定义变量来表示西红柿3.5元一斤.但 ...
- C++变量的“总分性”(Mereology)
Stroustrup 在自传中说自己在哲学上深受 Kierkegaard (吉爾凱高爾)的影响,而讨厌黑格尔.所以看 Stroustrup 的书,很少感受到抽象理论的重要性.这也影响了C++的文化:许 ...
- Bit Map解析
1. Bit Map算法简介 来自于<编程珠玑>.所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素.由于采用了Bit为单位来存储数据,因此在存储空 ...
- javascript 原生 cookie 处理
来自网络! function getCookie(name) { var start = document.cookie.indexOf(name + "="); var len ...