(1)一个人只要自己不放弃自己,整个世界也不会放弃你.
(2)天生我才必有大用
(3)不能忍受学习之苦就一定要忍受生活之苦,这是多么痛苦而深刻的领悟.
(4)做难事必有所得
(5)精神乃真正的刀锋
(6)战胜对手有两次,第一次在内心中.
(7)编写实属不易,若喜欢或者对你有帮助记得点赞+关注或者收藏哦~
Java SE 091 节点流、过滤流深入详解
文章目录
1.节点流过滤流
FilterInputStream以及它的子类是过滤流,其余的是节点流。
2.OutputStream
package com.javareview.io.stream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
/**
* 数据由程序流向文件
* @author x_xiongjie
*(1)对于文件输出流,如果有文件,就可以直接往文件里面写入内容。
*(2)如果没有文件,就新建一个文件,然后将内容写到新建的文件里面去。
*(3)若不想每次在写入文件内容时后写入的文件内容将前面写入的文件内容覆盖掉,则可在构建文件输出流时将追加方式设置为true.即在构造方法中加入将追加设置为true。
*/
public class OutputStreamTest1 {
public static void main(String[] args) throws IOException {
OutputStream os = new FileOutputStream(new File("d:/test.txt"),true);
String str = "Xiong Jie and Liu Manlin will get married!";
byte[] buffer = str.getBytes();
os.write(buffer);
os.close();
}
}
3.输出流写数据的逻辑
4.过滤流
5.BufferedOutputStream(缓冲输出流)
(1)BufferedInputStream与BufferedOutputStream都是过滤流,即它们不能直接与文件打交道。它们是与一个节点流打交道的。
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
/**
* 缓冲流不会直接的去写到文件里面,而是写到内存的缓冲区,缓冲区什么时候会将内存中的数据写入目标呢?
* 有两种方式:
* 1、flush()方法:清空绥中的输出流,强制的使得任何的缓冲输出字节,都会被写到底层的输出流里面,本例中它底层的输出流就是
* FileOutputStream,写到它里边儿去之后,它就会写到文件里面去。
* 2、close()方法,在关闭流之前,会先将缓冲区里面的东西清空,即调用一下flush()方法,然后再将数据写到目标。
* @author x_xiongjie
*
*/
public class BufferedOutputStreamTest1 {
public static void main(String[] args) throws Exception {
OutputStream os = new FileOutputStream("d:/te.txt");
BufferedOutputStream bos = new BufferedOutputStream(os);
bos.write("Xiong Jie and Liu Manlin will get married!".getBytes());
bos.close();
os.close();
}
}
6.ByteArrayInputStream(字节数组输入流)
import java.io.ByteArrayInputStream;
/**
* 字节数组输入流
*/
public class ByteArrayInputStreamTest {
public static void main(String[] args) {
String str = "Xiong Jie and Liu Manlin will get married!";
byte[] buffer = str.getBytes();
ByteArrayInputStream bis = new ByteArrayInputStream(buffer);
ByteArrayInputStream bis2 = new ByteArrayInputStream(buffer, 0, 25);
for(int i = 0 ; i < str.length(); i++){
int c ;
while(-1!=(c = bis.read())){
if(0 == i){
System.out.println((char) c);
}else{
System.out.println(Character.toUpperCase((char)c));
}
}
System.out.println();
//重新定位流到这个位置上,上一次对这个流调用mark方法的那个位置。
bis.reset();
}
}
}