黑马程序员_day25_IO流的其他流
2013-04-12 21:16
295 查看
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
打印流:PrintStream:
1,使它们能够方便地打印各种数据值表示形式.
2,提供了一系列的打印功能.可以打印任何数据。
3,它的特有的方法不抛出异常。
构造方法:
该流是一个处理目的的流对象。
目的:
1,File对象。 可以指定字符集
2,字符串路径。可以指定字符集
3,字节输出流。可以对println方法进行自动刷新。
Write和print的区别(重要)
PrintStream out = new PrintStream("tempfile\\print_print.txt");
//使用PrintStream继承的方法。write。
out.write(866); //write将接收到整数的最后一个字节写入到流。
//使用PrintStream的特有方法。print.
out.print(865);//print方法,可以将参数的数据表现形式打印到目的中。原理是将97转成字符串,在write到目的。
//print方法打印各种数据都会将其变成字符串。所以可以保证数据的原有表现形式。
out.close();
打印流的另一个比较常用的字符打印流
PrintWriter:字符打印流。
构造函数:
1,File对象。
2,字符串路径。
3,字节输出流。
4,字符输出流。
自动刷新 autoFlush
PrintWriter out = new PrintWriter(System.out,true);
注意传递参数只有是流时,才可以自动刷新,而且当后面的传递参数为true时,才会自动刷新。
//需求:想将键盘录入的数据存储到文件中,并希望自动刷新。
// PrintWriter out = new PrintWriter(new FileWriter("a.txt"),true);
String line = null;
while((line=bufr.readLine())!=null){
if("over".equals(line)){
break;
}
out.write(line.toUpperCase()+"\r\n");
或者写out.println(line.toUpperCase());
}
out.close();
bufr.close();
二、序列流
SequenceInputStream: 序列流。
将多个流进行逻辑串联(进行合并,变成一个流,操作起来很方便,因为多个源变成了一个源)
FileInputStream fis1 = new FileInputStream("tempfile\\seq_1.txt");
FileInputStream fis2 = new FileInputStream("tempfile\\seq_2.txt");
FileInputStream fis3 = new FileInputStream("tempfile\\seq_3.txt");
ArrayList<FileInputStream> v = new ArrayList<FileInputStream>();
v.add(fis1);
v.add(fis2);
v.add(fis3);
枚举对象的获取 ,Collection中的方法。
Enumeration<FileInputStream> en = Collections.enumeration(v);
SequenceInputStream sis = new SequenceInputStream(en);
三、操作对象的类
ObjectInputStream与ObjectOutputStream:
1,可以用流直接操作对象。
writeObj();
readObj();
//反序列化。
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("tempfile\\obj.txt"));
Person p = (Person)ois.readObject();
System.out.println(p.getName()+":"+p.getAge());
ois.close();
}注意:这里的person类要实现 class Person implements Serializable接口
// 序列化。使用ObjectOutputStream写一个对象到文件中。如果目的是硬盘等设备,也就对象的持久化。
public static void writeObj() throws IOException, IOException{
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("tempfile\\obj.txt"));
oos.writeObject(new Person("xiaoming",20));
writeObject()的参数是一个对象。
oos.close();
Serializable:接口
用于给被序列化的类添加一个序列版本号。
private static final long serialVersionUID = 123456L;该数值可以自定义
为了判断序列化的对象和对应的class类是否匹配。
注意:类中的静态数据不会被序列化。
那么非静态数据有些不需要序列化的怎么办呢?这需要一个关键字来完成。transient 瞬间的,暂时的。
四、RandomAccessFile:
1,不是字节流或者字符流体系中的成员。
2,该类是用于操作File的类。
3,该对象既可以读取又可以写入。
4,该对象中封装中了一个byte类型的数组。
5,其实它内部就是封装了字节输入流和字节输出流。
6,通过seek方法设置数组的指针就可以实现对文件数据的随机读写。 可以实现数据的修改。
注意:被操作的数据一定要规律。
五、流规律
明确数据所在的设备:
源设备:
键盘(System.in)
硬盘(FileXXX)FileReader FileInputStream
内存(数组)ByteArrayInputStream CharArrayReader StringReader
网络(Socket)
目的设备:
显示器(控制台System.out)
硬盘(FileXXX)FileWriter FileOutputStream
内存(数组)ByteArrayOutputStream CharArrayWriter StringWriter
网络(Socket)
具体使用哪个对象就可以明确了。
明确是否需要额外功能?
1,是否需要高效?缓冲区Buffered 四个。
2,是否需要转换?转换流 InputStreamReader OutputStreamWriter
3,是否操作基本数据类型? DataInputStream DataOutputStream
4,是否操作对象(对象序列化)? ObjectInputStream ObjectOutputStream
5,需要对多个源合并吗? SequenceInputStream
6,需要保证数据的表现形式到目的地吗? PrintWriter
----------- android培训、java培训、java学习型技术博客、期待与您交流! ------------
相关文章推荐
- 黑马程序员-基础IO流(其他流)
- 黑马程序员——Java中IO流(字节流 字符流 其他流 )
- 黑马程序员--IO流中的File类和Properties类、其他流
- 黑马程序员——Java基础---IO流(File类、Properties类、其他流)
- 黑马程序员----Java中的其他IO流
- 黑马程序员----IO流(其他)
- 黑马程序员--Java基础学习(其他对象和IO流)第十八天
- 黑马程序员——IO流——IO转换流,打印流,序列化流,properties以及其他流
- 黑马程序员——Java语言基础——07.IO流(2)File类和其他流
- 黑马程序员——java基础——IO流(2)File类,IO常用流对象及IO包中其他类
- 黑马程序员--集合工具类、其他对象、IO流概述
- 黑马程序员————字符串缓冲区 & 其他常用对象(day15)
- 黑马程序员_Java基础_IO流_打印流,合并流,分割文件,对象持久化,管道流...其他常用流
- 黑马程序员java基础之io流中的其他流
- 黑马程序员-day25-正则表达式
- 黑马程序员--Java面向对象——IO流其他对象
- (黑马程序员)IO流中的其他类总结(二)
- 黑马程序员-JAVA基础-IO流其他类
- 黑马程序员--IO流04--其他类
- 黑马程序员-day20-IO流(其他类)