写入内存 内存输入流:ByteArrayInputStream
从内存读出 内存输出流:ByteArrayOutputStream
内存操作流一般在生成一些临时信息时才会使用。代码执行后临时信息会被删除。
public ByteArrayInputStream(byte[] b)
public ByteArrayInputStream(byte[] b,int begin,int length)
public ByteArrayOutputStream()
public void write(int b)
import java.io.IOException;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
public class TestJava{
}
class Demo{
public static void main(String[] args) throws Exception{
String str = "HELLOWORLD!";
ByteArrayInputStream bi = null;
ByteArrayOutputStream bo = null;
bi = new ByteArrayInputStream(str.getBytes());
bo = new ByteArrayOutputStream();
int tempRec = 0;
while((tempRec = bi.read())!=-1){
char tempRecChar = (char)tempRec;
bo.write(Character.toLowerCase(tempRecChar));
}
String info = bo.toString();
try{
bi.close();
bo.close();
}catch(IOException e){
e.printStackTrace();
}
System.out.println(info);
}//main
}
管道流(进程间的通信)
发出信息(PipedOutputStream)
接收信息(PipedInputStream)
import java.io.IOException;
import java.io.PipedOutputStream;
import java.io.PipedInputStream;
public class TestJava{
}
class Send implements Runnable{
private PipedOutputStream po = null;
public Send(){
this.po = new PipedOutputStream();
}
public void run(){
String str = "Hello World!";
try{
this.po.write(str.getBytes());
}catch(IOException e){
e.printStackTrace();
}
}
public PipedOutputStream getPo(){
return this.po;
}
}//send class
class Receive implements Runnable{
private PipedInputStream pi = null;
public Receive(){
this.pi = new PipedInputStream();
}
public void run(){
byte[] bReady = new byte[1024];
int lenReady = 0;
try{
lenReady = this.pi.read(bReady);
}catch(IOException e){
e.printStackTrace();
}
System.out.println("Content:"+new String(bReady,0,lenReady));
}
public PipedInputStream getPi(){
return this.pi;
}
}//receive class
class Demo{
public static void main(String[] args) throws Exception{
Send s = new Send();
Receive r = new Receive();
try{
s.getPo().connect(r.getPi());
}catch(IOException e){
e.printStackTrace();
}
new Thread(s).start();
new Thread(r).start();
}//main
}
output: Content:Hello World!
在操作时只需要使用PipedOutputStream类中的connect方法就能将两个管道线程连接在一起。
线程启动后会自动进行管道的输入输出操作。
打印流:
PrintStream是OutputStream的子类。
构造:
public PrintStream(File file) throws FileNotFoundException
public PrintStream(OutputStream out)
普通:
public PrintStream printf(Locale l,String format,Object...args) //根据指定Locale进行格式化输出
public PrintStream printf(String format,Object...args) //根据本地环境进行格式化输出
public void println(boolean b)
public void print(boolean b)
有一个PrintStream的构造方法可以接收OutputStream的子类,所以包装OutputStream后用PrintStream进行输出更为方便。
而且PrintStream也可以像C语言一样进行格式化输出。%d %c % f %s,前三个都可以用s%输出
import java.io.File;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.io.OutputStream;
public class TestJava{
}
class Demo{
public static void main(String[] args) throws Exception{
OutputStream ou = new FileOutputStream(new File("C:"+File.separator
+"JavaStudy"+File.separator+"JavaIO"+File.separator+"test05.txt"));
PrintStream pts = new PrintStream(ou);
pts.print("Hello ");
pts.print("World!");
pts.print("\r\n2+2="+4);
String name = "FangXy";
int age = 24;
float score = 65.0f;
char gender = 'M';
pts.printf("\r\nName:%s,Age:%d,Score:%f,Gender:%c",name,age,score,gender);
pts.close();
}//main
}
执行后文件中:
Hello World!
2+2=4
Name:FangXy,Age:24,Score:65.000000,Gender:M