您的位置:首页 > 编程语言 > Java开发

java基础IO流 Properties类,打印流,合并流

2015-06-10 22:34 381 查看
Properties类


一、概述

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

2、特点:

1)可用于键值对形式的配置文件

2)在加载时,需要数据有固定的格式,常用的是:键=值

二、特有方法

1、设置

Object setProperty(String key,String value);

//设置键和值,调用Hashtable的方法put

2、获取

String getProperty(String key);

//指定key搜索value

Set stringPropertyName();

//返回属性列表的键集,存入Set集合

3、加载流和存入流

void load(InputStream ism);

//从输入字节流中读取属性列表(键和元素对)。又称将流中的数据加载进集合。

void load(Readerreader);

//从输入字符流中读取属性列表(键和元素对)。又称将流中的数据加载进集合。

voidlist(PrintStream out);//将属性列表输出到指定的输出流

void store(OutputStreamout,String comments);

//对应load(InputStream )将属性列表(键值对)写入输出流。comments属性列表的描述。

void store(Writerwriter, String comments);

//对应load(Reader)将属性列表(键值对)写入输出流。comments属性列表的描述。

package properties;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;

public class PropertiesDemo {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//SetandGet();
loadDemo();
}
public static void loadDemo() throws IOException {
Properties p=new Properties();
FileInputStream fis=new FileInputStream("F:\\info.txt");
//将流存到集合中
p.load(fis);
p.setProperty("zhaosi", "29");
p.list(System.out);
FileOutputStream fos=new FileOutputStream("F:info.txt");
p.store(fos, "haha");
p.list(System.out);

}
//设置和获取元素
public static void SetandGet(){
Properties p=new Properties();
p.setProperty("张三", "13");
p.setProperty("wangwu", "23");
p.setProperty("赵六", "33");
System.out.println(p);
Set<String> names=p.stringPropertyNames();
for (String name : names) {
System.out.println(name+":::"+p.getProperty(name));
}

}

}
练习二
package properties;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;

public class RunCount {

/**
* 记录程序运行次数的配置文件
* 运行到多少次需要去注册
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
File file=new File("F:\\count.ini");
if (!file.exists()) {
file.createNewFile();
}
FileInputStream fis=new FileInputStream(file);
//把流存到集合中
Properties p=new Properties();
p.load(fis);
int count=0;
String value=p.getProperty("time");
if (value!= null) {
count=Integer.parseInt(value);
if (count>=5) {
System.out.println("您的体验次数用完,需要注册缴费!");
}
count++;
}
p.setProperty("time",count+"");
FileOutputStream fos=new FileOutputStream("F:\\count.ini");
p.store(fos, "");

}

}


打印流

一、概述

1、打印流包括:PrintStream和PrintWriter

2、该流提供了打印方法,可将各种类型的数据都原样打印。

二、字节打印流:PrintStream

构造方法中可接收的参数类型:

1、File对象。File

2、字符串路径:String

3、字符输出流:OutputStream

三、字符串打印流:PrintWriter

构造方法中可接受的参数类型

1、File对象:File

2、字符串路径:String

3、字节输出流:OutputStream

4、字符输出流:Writer

练习:

package printWriterDemo;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class PrintStream {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));
PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter("F:\\1.txt")),true);
String line=null;
while ((line=bf.readLine())!=null) {
if ("over".equals(line)) {
break;
}
out.println(line.toUpperCase());
//out.flush();
}
bf.close();
out.close();
}

}


序列流

一、概述

1、SequenceInputStream对多个流进行合并。也被称为合并流。

二、常见合并多个流文件步骤

1、创建集合,并将流对象添加进集合

2、创建Enumeration对象,将集合元素加入。

3、创建SequenceInputStream对象,合并流对象

4、创建写入流对象,FileOutputStream关联写入文件

5、利用SequenceInputStream对象和FileOutputStream对象读数据进行反复读写操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: