Java IO 包有两个主要部分:
字符流(character stream)0~65535,字符流被称为写入器(writer)和读取器(reader)
字节流(byte stream) -127~128,字节流被称为输入流(inputStream)和输出流(outputStream)
1. 字节流
最基本的类InputStream和OutputStream。
2. 字符流
最基本的抽象类Reader和Writer。
3. 标准流
System.in System.out,System.err 属于字节流。
System.in是一个InputStream对象。System.out和System.err是PrintStream对象。
4.转换流
InputStreamReader和OutputStreamWriter在字符流和字节流中互相转换。“粘合剂”的作用。
5. buffered流
包括BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter.
应用buffered流和标准流实现进程间通信demo:
public class Try {
public static void main(String[] args) throws IOException {
BufferedReader reader,br;
int vuNum = 0;
String str = null;
String cmd ="D:\\java_tools\\jdk1.6.0\\bin\\java -Didea.launcher.port=7544 \"-Didea.launcher.bin.path=D:\\Program Files\\JetBrains\\IntelliJ IDEA 11.0.1\\bin\" -Dfile.encoding=UTF-8 -classpath \"D:\\workspace\\thinking\\bin;D:\\java_tools\\jdk1.6.0\\jre\\lib\\alt-rt.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\charsets.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\deploy.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\javaws.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\jce.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\jsse.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\management-agent.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\plugin.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\resources.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\rt.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\ext\\dnsns.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\ext\\localedata.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\ext\\sunjce_provider.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\ext\\sunmscapi.jar;D:\\java_tools\\jdk1.6.0\\jre\\lib\\ext\\sunpkcs11.jar;D:\\Program Files\\JetBrains\\IntelliJ IDEA 11.0.1\\lib\\junit.jar;D:\\Program Files\\JetBrains\\IntelliJ IDEA 11.0.1\\lib\\idea_rt.jar\" com.intellij.rt.execution.application.AppMain thinking.SubProcess";
Process p = Runtime.getRuntime().exec(cmd);
reader = new BufferedReader(new InputStreamReader(p.getErrorStream()));
br = new BufferedReader(new InputStreamReader(p.getInputStream()));
vuNum =Integer.parseInt(reader.readLine());
str = br.readLine();
System.out.println(str);
System.out.println(vuNum);
}
}
public class SubProcess {
public static void main(String[] args) throws IOException {
System.err.println(1025);
System.out.println("hello,wuche!");
}
}