输入流和输出流的使用步骤分为以下三步:
1、创建输入流
2、创建输出流
3、读写数据
4、释放资源
不同的用法如以下代码所示:
public class Test3 {
/**
* @param args
* @throws FileNotFoundException
*/
public static void main(String[] args) throws IOException{
method6();
}
private static void method6() throws IOException {
//创建输入流对象
InputStream is = System.in;
Reader r = new InputStreamReader(is);
//创建输出流对象
FileWriter fw = new FileWriter("a.txt");
//读写数据
char [] chs = new char[1024];
int len;
while((len = r.read(chs)) != -1){
fw.write(chs,0,len);
fw.flush();
}
//释放资源
fw.close();
is.close();
}
private static void method3() throws FileNotFoundException, IOException {
//创建输入流对象
InputStream is = System.in;
//创建输出流对象
FileWriter fw = new FileWriter("a.txt");
//读写数据
byte[] bys = new byte[1024];
int len;//用于存储读取到的字节个数
while((len = is.read(bys)) != -1){
fw.write(new String(bys,0,len));//读到几个写几个
fw.flush();//刷新缓冲区
}
//释放资源
fw.close();
is.close();
}
private static void method2() throws FileNotFoundException, IOException {
method4();
}
private static void method4() throws FileNotFoundException, IOException {
//创建输入流对象
BufferedReader br = new BufferedReader(new FileReader("Test2.java"));
//创建输出流对象
Writer w = new OutputStreamWriter(System.out); //多态
//读写数据
String line;
while((line = br.readLine()) != null){
w.write(line);
w.write("\r\n");
}
//释放资源
w.close();
br.close();
}
private static void method1() throws FileNotFoundException, IOException {
// TODO Auto-generated method stub
//创建输入流对象
BufferedReader br = new BufferedReader(new FileReader("Test2.java"));
//创建输出流对象
OutputStream os = System.out;
//读写数据
String line;
while((line = br.readLine()) != null){
os.write(line.getBytes());
os.write("\r\n".getBytes());
}
//释放资源
os.close();
br.close();
}
}
二,对象流和properties的结合使用
properties类表示一个持久的属性集,属性列表中每个键及其对应的值
都是一个字符串类型。
//创建属性列表对象
Properties prop = new Properties();
//添加映射关系
prop.put("","")
prop.put("","")
prop.put("","")
//遍历属性列表
//获取所有的key,通过key获取value
Set<Object> keys = prop.keySet();
for(Object key:keys){
Object value = prop.get(key);
System.out.println(key + value)
}
//获取所有结婚证对象
Set<Map.Entry<Object,Object>> entrys = prop.entrySet();
for(Map.Entry<Object, Object> entry : entrys){
Object key = entry.getkey();
Object value = entry.getValue();
System.out.println(key,value);
}
Properties和IO流结合的操作
//创建属性列表对象
Properties prop = new Properties();
//添加映射关系
prop.setProperty("","")
prop.setProperty("","")
prop.setProperty("","")
//创建打印流对象
PrintWriter out = new PrintWriter("a.txt");
prop.list(out);
//释放资源
out.close();
把文件中的数据读到集合中
//创建属性列表对象
Properties prop = new Properties();
//创建一个输入流对象
FileReader fr = new FileReader("a.txt");
prop.load(fr);
//释放资源
fr.close();
System.out.println(prop);
代码如下所示:
public class Test5 {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//将文件中的内容写入property中,非常方便
//创建属性列表对象
Properties prop = new Properties();
//创建一个输入流对象
FileReader fr = new FileReader("a.txt");
prop.load(fr);
//释放资源
fr.close();
System.out.println(prop);
}
private static void method2() throws FileNotFoundException {
//将property中的属性写入文件
//创建属性列表对象
Properties prop = new Properties();
//添加映射关系
prop.setProperty("ck123","wangwu");
prop.setProperty("ji234","zhangsan");
prop.setProperty("po789","lisi");
//创建打印流对象
PrintWriter out = new PrintWriter("a.txt");
prop.list(out);
//释放资源
out.close();
}
private static void method1() {
//property的使用
//创建属性列表对象
Properties prop = new Properties();
//添加映射关系
prop.put("zhangsan","123");
prop.put("lisi","000001");
prop.put("liliu","2345");
//遍历属性列表
//获取所有的key,通过key获取value
Set<Object> keys = prop.keySet();
for(Object key:keys){
Object value = prop.get(key);
System.out.println(key+","+ value);
}
//获取所有结婚证对象
Set<Map.Entry<Object,Object>> entrys = prop.entrySet();
for(Map.Entry<Object, Object> entry : entrys){
Object key = entry.getKey();
Object value = entry.getValue();
System.out.println(key+","+value);
}
}
}