JAVA高级视频02_IO输入与输出日记5(02-13到15)
来源:互联网 发布:js里getjson 编辑:程序博客网 时间:2024/06/14 20:31
02-13
ObjectOutputStream
ObjectInputStream
用于从底层流中读取对象类型的数据和将对象类型的数据写入底层输出流,这连个类必须实现Serializable接口。对象中的transient(临时)和Static(全局)类型的变量不会被读取和写入。
例子:定义学生类
import java.io.Serializable;
publicclass Student2implements Serializable {
intid;
String name;
intage;
String department;
public Student2(int id, String name, int age, String department) {
super();
this.id = id;
this.name = name;
this.age = age;
this.department = department;
}
}
利用ObjectOutputStream和ObjectInputStream对对象进行读写
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
publicclass Serialization {
publicstaticvoid main(String[] args)throws IOException, Exception {
Student2 st1=new Student2(1,"zhangsan",38,"shuxue");
Student2 st2=new Student2(2,"lisi",22,"lishi");
Student2 st3=new Student2(3,"wangwu",39,"english");
Student2 st4=new Student2(4,"lideguo",32,"yuwen");
FileOutputStream fos=new FileOutputStream("student2.txt");
BufferedOutputStream bos=new BufferedOutputStream(fos);
ObjectOutputStream dos=new ObjectOutputStream(bos);
dos.writeObject(st1);
dos.writeObject(st2);
dos.writeObject(st3);
dos.writeObject(st4);
dos.close();
FileInputStream fis=new FileInputStream("student2.txt");
BufferedInputStream bis=new BufferedInputStream(fis);
ObjectInputStream dis=new ObjectInputStream(bis);
st1=(Student2)dis.readObject();
st2=(Student2)dis.readObject();
st3=(Student2)dis.readObject();
st4=(Student2)dis.readObject();
dis.close();
System.out.print("stu1 id="+st1.id);
System.out.print(" "+st1.name);
System.out.print(" "+st1.age);
System.out.println(" "+st1.department);
System.out.print("stu2 id="+st2.id);
System.out.print(" "+st2.name);
System.out.print(" "+st2.age);
System.out.println(" "+st2.department);
System.out.print("stu3 id="+st3.id);
System.out.print(" "+st3.name);
System.out.print(" "+st3.age);
System.out.println(" "+st3.department);
System.out.print("stu4 id="+st4.id);
System.out.print(" "+st4.name);
System.out.print(" "+st4.age);
System.out.print(" "+st4.department);
}
}
字节流和字符流的转换
InputStreamReader和OutputStreamWriter用于字节流和字符流转换,这两个最好不要直接使用,而是用BufferedReader和BufferedWriter进行包装后使用。
02-14
Java程序和其他进程的通信
A:在java中可以用Process类的实例对象表示子进程,子进程的输入和输出不再连接到键盘和显示器,而是以管道流的形式连接到父进程的一个输出流和输入流对象上。
B:调用Process类的getOutputStream和getInputStream方法可以获得连接到子进程的输出流和输入流对象
C:用process类的destory()方法结束子进程的运行。
例子:MyTest类
import java.io.*;
publicclassMyTest {
publicstaticvoid main(String[] args) {
BufferedReader bi = new BufferedReader(new InputStreamReader(System.in));
while(true)
{
try{
String str = bi.readLine();
if(str!=null)
{
System.out.println("TestMy:"+str);
}
else
{
return;
}
}
catch(Exception e){
}
}
}
}
运行类:
import java.io.*;
publicclass TestInOut implements Runnable {
Processp =null;
public TestInOut()
{
try{
p =Runtime.getRuntime().exec("java MyTest");
new Thread(this).start();
}catch(Exception e){}
}
publicstaticvoid main(String[] args)
{
TestInOut t = new TestInOut();
t.send();
}
public void run()
{
InputStream in = p.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
while(true)
{
try
{
String str = br.readLine();
if(str!=null)
{
System.out.println(str);
}
else
{
return;
}
}
catch(Exception e)
{
}
}
}
publicvoid send()
{
while(true)
{
OutputStream out = p.getOutputStream();
try
{
out.write("help/r/n".getBytes());
}
catch(Exception e)
{
}
}
}
}
02-15
Decorator设计模式:用一个对象包装另一个对象
这个类需要继承FilterXXXX命名的类,
例子:
import java.io.PrintWriter;
import java.io.StringWriter;
publicclass TestPrintWriter {
publicstaticvoid main(String[] args) {
try{
thrownew Exception("test,ce shi");
}catch(Exception e){
StringWriter aa=new StringWriter();
PrintWriter bb=new PrintWriter(aa);
e.printStackTrace(bb);
System.out.println(e.getMessage());
System.out.println(bb.toString());
}
}
}
- JAVA高级视频02_IO输入与输出日记5(02-13到15)
- JAVA高级视频02_IO输入与输出日记2(02-04到05)
- JAVA高级视频02_IO输入与输出日记3(02-06到10)
- JAVA高级视频02_IO输入与输出日记4(02-11到12)
- JAVA高级视频02_IO输入与输出日记1(02-01到02—03)
- JAVA高级视频_IO输入与输出
- Java高级视频_IO输入与输出(一)
- Java高级视频_IO输入与输出(二)
- Java高级视频_IO输入与输出(三)
- JAVA高级视频_IO输入与输出02、03 RandomAccessFile 学习笔记
- JAVA高级视频02_IO输入与输出 05 FileInputStream和FileOutPutStream
- JAVA高级视频02_IO输入与输出 06 PipedInputStream和PipedOutPutStream 学习笔记
- JAVA高级视频02_IO输入与输出 06 PipedWriter和PipedReader学习笔记
- JAVA高级视频02_IO输入与输出 06 ByteArrayInputStram和ByteArrayOutputStream 学习笔记
- JAVA高级视频02_IO输入与输出 字符编码学习笔记
- 学习笔记11—JAVA高级视频02_IO输入与输出
- JAVA高级视频_IO输入与输出01 学习笔记
- JAVA高级视频_IO输入与输出04 学习笔记
- Linux平台VPN技术概论
- 黑客常用软件大全
- ASP文件下载用流输出的函数
- 遗传算法入门--连载5
- Qt的动态信号与槽机制
- JAVA高级视频02_IO输入与输出日记5(02-13到15)
- 遗传算法入门--连载6
- css加div下拉菜单源码
- 遗传算法入门--连载7
- js中的null值------一个问题的解决方案
- 校验
- JavaScript剪切板特效
- android按键驱动开发实例1(修改一个按键)
- 遗传算法入门--连载8