Java基础学习
2013-08-09 13:30
176 查看
1:打印流(掌握)
(1)针对字节和字符数据提供一个打印流的方式。
字节流不需要刷新只是针对基本的字节流.
PrintWriter字符打印流
PrintStream:字节打印流
(2)打印流的特点:
A:可以打印任意类型的数据
B:如果启用了自动刷新,在使用println方法的时候,会自动刷新,并且会自动换行。
C:它可以直接往文件中写入数据
注意:请问哪些流对象可以直接操作文件呢?
观其构造方法,如果同时有File和String的参数。应该是可以的。
(3)为什么要学习打印流?
1) 能够方便打印各种数据值表示形式.
2) 如果启用了自动刷新,在使用println,printf,format等方法的时候会自动刷新.
3) 可以直接操作文件.
(4)打印流步骤:
1) 创建对象
2) 写入数据
3) 释放资源
(5)案例:复制文本文件(掌握)
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("b.txt"),true);
String line = null;
while((line=br.readLine())!=null)
{
pw.println(line);
}
pw.close();
br.close();
2:Properties(理解)
(1)是Map的体系,但是,它可以和IO结合使用。
(2)特殊方法:(理解)
list():把集合中的数据保存到文件中。使用打印流。
load():把文件中的数据加载到集合中,使用任意流。
store():把集合中的数据保存到文件中。使用任意流。
(3)案例:(理解)
查找prop.txt中有没有键为lisi的,如果有,则修改其实为35
代码:
package org.everbuy.properties;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
/**
*需求:查找prop.txt中有没有键为lisi的,如果有,则修改其实为35
*分析:
*1) 定义properties对象
*2) 定义源文件
*3) load()将文件内容加载到Properties集合中
*4) 遍历集合,判断lisi是否存在,如果存在将值更改35
*5) 创建目标文件
*6) store()存储到文件中
*7) 释放资源
* */
public class PropertiesTest03 {
/**
* @param args
*/
public static void main(String[] args)throws IOException {
//创建Properties对象
Properties prop = new Properties();
//定义数据源
FileReader fr = new FileReader("Test\\prop.txt");
//prop.load方法将内容加载到集合中
prop.load(fr);
//获取键值
Set<Object> set = prop.keySet();
/*//迭代器方法遍历
* Iterator<Object> it = set.iterator();
//遍历集合
while(it.hasNext()){
Object key = it.next();
//Object value = prop.get(key);
if ("lisi".equals(key)){
prop.setProperty("lisi", "60");
break;
}
}*/
//增强for循环获取元素
for (Object obj:set)
{
if ("lisi".equals(obj)){
prop.setProperty("lisi","40");
break;
}
}
//定义目的地
FileWriter fw = new FileWriter("Test\\prop.txt");
//写入数据
prop.store(fw, "hello");
//释放资源
fw.close();
fr.close();
}
}
3:序列化流(理解)
(1)序列化:把对象按照流的方式操作
反序列化:把流数据还原成对象。
ObjectOutputStream:把对象按照流的方式写入文件
writeObject(Object obj);
ObjectInputStream:把文件中的流元素还原成一个对象
Object readObject();
步骤:
1) 创建对象流对象
2) 写入对象
3) 释放资源
(2)案例:存储的对象必须实现序列化接口。(理解)
存储一个对象
//--------------存储一个对象--------------
//创建对象流对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Test\\ooss.txt"));
//创建对象
Person p1 = new Person("zhangsan1",21);
//读写数据
oos.writeObject(p1);
//释放资源
oos.close();
//--------------读取文件到对象----------------
//创建对象流对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Test\\ooss.txt"));
//创建对象
Person p1 = new Person("zhangsan1",21);
//读写数据
oos.writeObject(p1);
//释放资源
oos.close();
存储多个对象。
//创建对象流对象
//---------------存储多个对象到文件中---------------------
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Test\\ooss.txt"));
//创建对象
Person p1 = new Person("zhangsan1",21);
Person p2 = new Person("zhangsan2",23);
Person p3 = new Person("zhangsan3",24);
//将多个小对象存储要一个大容器中
ArrayList<Person> al = new ArrayList<Person>();
al.add(p1);
al.add(p2);
al.add(p3);
//读写数据
oos.writeObject(al);
//释放资源
oos.close();
//----------------------从文件中读取到对象流中并打印在控制台--------------------
//创建对象流对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Test\\ooss.txt"));
//读取文件,抛ClassNotFoundException异常
Object obj =ois.readObject();
ArrayList<Person> arr = (ArrayList)obj;
//遍历数组
for(Object o:arr)
{
Person per =(Person)o;
System.out.println(per.getName()+"..."+per.getAge());
}
//释放资源
ois.close();
(3)使用(掌握)
A:以后看到对象实现了序列化接口,就要知道,该对象可以按照流一样的方式被操作。
B:看到对象实现了序列化接口,有黄色警告时,知道怎么解决,并知道这是什么意思。
4:字符编码问题(理解)
(1)编码表:字符和数字的对应关系表。
(2)转换流中的编码问题:(理解)
字符流 = 字节流 + 编码表
OutputStreamWriter(OutputStream out, String charsetName):
(3)字符串中的编码问题:(理解)
编码:
byte[] bys = str.getBytes("GBK");// 指定编码,GBK
解码:
String s = new String(bys, "GBK");
(1)针对字节和字符数据提供一个打印流的方式。
字节流不需要刷新只是针对基本的字节流.
PrintWriter字符打印流
PrintStream:字节打印流
(2)打印流的特点:
A:可以打印任意类型的数据
B:如果启用了自动刷新,在使用println方法的时候,会自动刷新,并且会自动换行。
C:它可以直接往文件中写入数据
注意:请问哪些流对象可以直接操作文件呢?
观其构造方法,如果同时有File和String的参数。应该是可以的。
(3)为什么要学习打印流?
1) 能够方便打印各种数据值表示形式.
2) 如果启用了自动刷新,在使用println,printf,format等方法的时候会自动刷新.
3) 可以直接操作文件.
(4)打印流步骤:
1) 创建对象
2) 写入数据
3) 释放资源
(5)案例:复制文本文件(掌握)
BufferedReader br = new BufferedReader(new FileReader("a.txt"));
PrintWriter pw = new PrintWriter(new FileWriter("b.txt"),true);
String line = null;
while((line=br.readLine())!=null)
{
pw.println(line);
}
pw.close();
br.close();
2:Properties(理解)
(1)是Map的体系,但是,它可以和IO结合使用。
(2)特殊方法:(理解)
list():把集合中的数据保存到文件中。使用打印流。
load():把文件中的数据加载到集合中,使用任意流。
store():把集合中的数据保存到文件中。使用任意流。
(3)案例:(理解)
查找prop.txt中有没有键为lisi的,如果有,则修改其实为35
代码:
package org.everbuy.properties;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
/**
*需求:查找prop.txt中有没有键为lisi的,如果有,则修改其实为35
*分析:
*1) 定义properties对象
*2) 定义源文件
*3) load()将文件内容加载到Properties集合中
*4) 遍历集合,判断lisi是否存在,如果存在将值更改35
*5) 创建目标文件
*6) store()存储到文件中
*7) 释放资源
* */
public class PropertiesTest03 {
/**
* @param args
*/
public static void main(String[] args)throws IOException {
//创建Properties对象
Properties prop = new Properties();
//定义数据源
FileReader fr = new FileReader("Test\\prop.txt");
//prop.load方法将内容加载到集合中
prop.load(fr);
//获取键值
Set<Object> set = prop.keySet();
/*//迭代器方法遍历
* Iterator<Object> it = set.iterator();
//遍历集合
while(it.hasNext()){
Object key = it.next();
//Object value = prop.get(key);
if ("lisi".equals(key)){
prop.setProperty("lisi", "60");
break;
}
}*/
//增强for循环获取元素
for (Object obj:set)
{
if ("lisi".equals(obj)){
prop.setProperty("lisi","40");
break;
}
}
//定义目的地
FileWriter fw = new FileWriter("Test\\prop.txt");
//写入数据
prop.store(fw, "hello");
//释放资源
fw.close();
fr.close();
}
}
3:序列化流(理解)
(1)序列化:把对象按照流的方式操作
反序列化:把流数据还原成对象。
ObjectOutputStream:把对象按照流的方式写入文件
writeObject(Object obj);
ObjectInputStream:把文件中的流元素还原成一个对象
Object readObject();
步骤:
1) 创建对象流对象
2) 写入对象
3) 释放资源
(2)案例:存储的对象必须实现序列化接口。(理解)
存储一个对象
//--------------存储一个对象--------------
//创建对象流对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Test\\ooss.txt"));
//创建对象
Person p1 = new Person("zhangsan1",21);
//读写数据
oos.writeObject(p1);
//释放资源
oos.close();
//--------------读取文件到对象----------------
//创建对象流对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Test\\ooss.txt"));
//创建对象
Person p1 = new Person("zhangsan1",21);
//读写数据
oos.writeObject(p1);
//释放资源
oos.close();
存储多个对象。
//创建对象流对象
//---------------存储多个对象到文件中---------------------
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("Test\\ooss.txt"));
//创建对象
Person p1 = new Person("zhangsan1",21);
Person p2 = new Person("zhangsan2",23);
Person p3 = new Person("zhangsan3",24);
//将多个小对象存储要一个大容器中
ArrayList<Person> al = new ArrayList<Person>();
al.add(p1);
al.add(p2);
al.add(p3);
//读写数据
oos.writeObject(al);
//释放资源
oos.close();
//----------------------从文件中读取到对象流中并打印在控制台--------------------
//创建对象流对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Test\\ooss.txt"));
//读取文件,抛ClassNotFoundException异常
Object obj =ois.readObject();
ArrayList<Person> arr = (ArrayList)obj;
//遍历数组
for(Object o:arr)
{
Person per =(Person)o;
System.out.println(per.getName()+"..."+per.getAge());
}
//释放资源
ois.close();
(3)使用(掌握)
A:以后看到对象实现了序列化接口,就要知道,该对象可以按照流一样的方式被操作。
B:看到对象实现了序列化接口,有黄色警告时,知道怎么解决,并知道这是什么意思。
4:字符编码问题(理解)
(1)编码表:字符和数字的对应关系表。
(2)转换流中的编码问题:(理解)
字符流 = 字节流 + 编码表
OutputStreamWriter(OutputStream out, String charsetName):
(3)字符串中的编码问题:(理解)
编码:
byte[] bys = str.getBytes("GBK");// 指定编码,GBK
解码:
String s = new String(bys, "GBK");
相关文章推荐
- 黑马程序员-java学习之基础篇(二)
- 今天决定把java基础再重头学习一遍
- JavaSE入门学习46:文件传输基础之I/O流(五)(Java序列化)
- java学习-基础语法
- java 从零开始,学习笔记之基础入门<DOM解析>(三十二)
- Java中执行存储过程和函数(web基础学习笔记十四)
- Java基础学习总结(5)——多态
- java 线程 --- join,sleep,yield 基础学习
- 黑马程序员 Java基础学习笔记1
- 初学者福利:java从零基础到真正大型企业的项目实战开发学习资源
- 黑马程序员 Java基础学习笔记5 类
- Java并发学习笔记(1)——并发编程基础
- java基础知识回顾之java Thread类学习(十二)-- 线程中断
- Java基础之001-学习资源的选择
- java基础学习总结——数组
- JAVA基础 day26 正则表达式的简单学习
- Java基础班学习笔记(4)
- java基础学习总结——面向对象2
- java基础学习总结——对象转型