------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
兴趣是学习编程最好的老师
不积跬步,无以至千里
这辈子没办法做太多事情,所以每一件都要做到精彩绝伦。
<序列流>
1.序列流可以把多个字节输入流整合成一个,从序列流中读取数据时,将从被整合的第一个流开始读,读完一个之后继续读第二个, 以此类推.
整合两个: SequenceInputStream(InputStream, InputStream)
整合多个: SequenceInputStream(Enumeration)
例如:
整合两个:
SequenceInputStream sis = new SequenceInputStream(new FileInputStream("aaa.txt"));
整合多个:
FileInputStream fis1 = new FileInputStream("a.txt");
FileInputStream fis2 = new FileInputStream("b.txt");
FileInputStream fis3 = new FileInputStream("c.txt");
Vector<FileInputStream> v = new Vector<>();
v.add(fis1); v.add(fis2);
v.add(fis3);
Enumeration<FileInputStream> en = v.elements(); //获取流对象
SequenceInputStream sis = new SequenceInputStream(en); //传递给SequenceInputStream的构造函数
FileOutputStream fos = new FileOutputStream("d.txt");
int b;
while((b = sis.read()) != -1) {
fos.write(b);
}
sis.close();
fos.close();
}
1.内存输出输出流可以向内存中写数据, 把内存当作一个缓冲区, 写出之后可以一次性获取出所有数据
2.使用方式
创建对象: new ByteArrayOutputStream()
写出数据: write(int), write(byte[])
获取数据: toByteArray()
class Demo{
public static void main(String[] args){
FileInputStream fis = new FileInputStream("aaa.txt");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int b;
while((b = fis.read())=!1){
bos.write(b);
}
fis.close();}
}
1.对象操作流可以将一个对象写出, 或者读取一个对象到程序中,也就是执行了序列化和反序列化的操作。 要写出的对象必须实现Serializable接口才能被序列化
2.使用方式 要写出的对象必须实现Serializable接口才能被序列化
写出: new ObjectOutputStream(OutputStream), writeObject()
读取: new ObjectInputStream(InputStream), readObject()
public static void main(String[] args) throws IOException {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("c.txt")); //创建输出流对象
Person p1 = new Person("张三", 23);
Person p2 = new Person("李四", 24);
ArrayList<Person> list = new ArrayList<>(); // //创建集合对象
list.add(p1); //将人添加到集合中
list.add(p2);
oos.writeObject(list); //写出集合对象
oos.close(); }
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("c.txt"));
List<Person> list = (List<Person>) ois.readObject(); //读取对象
for (Person person : list) { //遍历集合
System.out.println(person);
}
ois.close(); }
<打印流>
1.是打印流可以很方便的将对象的toString()结果输出, 并且自动加上换行, 而且可以使用自动刷出的模式
System.out就是一个PrintStream, 其默认向控制台输出信息
2.使用方式
打印: print(), println()
自动刷出: PrintWriter(OutputStream out, boolean autoFlush, String encoding)
PrintStream ps = new PrintStream("e.txt");
ps.println(97); //将97转换成字符串写出
ps.write(97); //直接将97写出
ps.close();
<标准输入输出流>
1.标准输入输出流
System.in是InputStream, 标准输入流, 默认可以从键盘输入读取字节数据
System.out是PrintStream, 标准输出流, 默认可以向Console中输出字符和字节数据
2.修改标准输入输出流
修改输入流: System.setIn(InputStream)
修改输出流: System.setOut(PrintStream)
class Demo{
public static void main(String[] agrs){
System.setIn(new FileInputStream("aaa.txt"));
System.setOut(new PrintStream("bbb.txt"));
InputStream is = System.in;
PrintStream ps = System.out;
int b;
while((b=is.read()!=-1)){
ps.println(b);}
is.close();
ps.close();
}
}
<数据输入输出流>
1.数据输入输出流
DataInputStream, DataOutputStream可以按照基本数据类型大小读写数据
2.使用方式
DataInputStream(InputStream), readInt(), readLong()
DataOutputStream(OutputStream), writeInt(), writeLong()
<Properties>
1.向内存中存入值,并通过键获取值setProperty(key,value) getProperty(key);
2.通过load方法,读取配置文件,propertyNames获取所有的key,返回Enumeration
3.根据键改值,并重新存入到配置文件setProperty(key,value),list(new PrintStream()),System.getProperties();获取系统属性,propertyNames将所有的键返回到枚举里,就可以迭代了