writeObject()写字符串成功,但向量就不行,为什么? 你向量里的Object有没有implements Serializable 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果我将向量toString()后就可以了,不知道什么原因,请多帮忙 我这样用可以的啊Server: Vector v = new Vector();v.add("a");v.add("b");v.add("c");objOut.writeObject(v);Client: Vector v = (Vector)input.readObject();System.out.println(v.toString());//为[a, b, c] Vector 肯定可以用readObject() 读回来的,因为它实现了Serializable 接口,但放在Vector 中的对象就不一定实现了Serializable 接口,因此不一定会序列化成功。不过你的例子中包含的是String 对象,是实现了Serializable 接口的,是肯定可以的。可以用下面例子测试一下:import java.io.*;import java.util.*;public class TestObject { public static void main(String[] args) { try { Vector v = new Vector(); v.add( "a" ); v.add( "b" ); v.add( "c" ); v.add( "e" ); v.add( "f" ); v.add( "g" ); System.out.println(v.toString()); ObjectOutputStream os = new ObjectOutputStream( new FileOutputStream("v.ser", true)); os.writeObject(v); ObjectInputStream is = new ObjectInputStream( new FileInputStream("v.ser")); Vector v1 = (Vector) is.readObject(); System.out.println(v1.toString()); } catch(Exception e) { e.printStackTrace(); } }}检查一下你想用writeObject() 的对象是否声明实现了Serializable 接口。 可以写的,我怀疑你读出时没有类型转换import java.io.*;import java.util.*;public class WriteTest { public static void main(String[] args) { Vector v = new Vector(); v.add("a"); v.add("b"); v.add("c"); try{ FileOutputStream ostream = new FileOutputStream("t.tmp"); ObjectOutputStream p = new ObjectOutputStream(ostream); p.writeObject(v); p.flush(); ostream.close(); }catch(Exception e){ e.printStackTrace(); } }}读方法如下import java.io.*;import java.util.*;public class Test { public static void main(String[] args) { try{ FileInputStream istream = new FileInputStream("t.tmp"); ObjectInputStream p = new ObjectInputStream(istream); Vector v = (Vector)p.readObject(); System.out.println(v); istream.close(); }catch(Exception e){ e.printStackTrace(); } }} 各位呀,我测试了这么久,还是不行,我将你们的程序放在应用里面都可以用但一道我的web里面就不行了,这是为什么呀,代码如下:applet: void jButton1_actionPerformed(ActionEvent e) { try{ URL url=new URL(getDocumentBase(),"/servlet/pack.Servlet_test"); URLConnection con=url.openConnection(); con.setUseCaches(true); con.setDoOutput(true); con.setDoInput(true); ByteArrayOutputStream byteout=new ByteArrayOutputStream(); DataOutputStream out=new DataOutputStream(byteout); out.writeUTF(this.jTextField1.getText()); out.flush(); byte buf[]=byteout.toByteArray(); con.setRequestProperty("Content-type","application/octest-stream"); con.setRequestProperty("Content-length",""+buf.length); DataOutputStream dataout=new DataOutputStream(con.getOutputStream()); dataout.write(buf); dataout.flush(); dataout.close(); ObjectInputStream in=new ObjectInputStream(con.getInputStream()); Vector v=(Vector)in.readObject(); String str=v.toString();// String str=in.readObject().toString(); this.jTextArea1.setText(str); in.close(); }catch(Exception ee){ System.out.println("applet:"+ee.getMessage()); } }servlet: public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType(CONTENT_TYPE); try{ DataInputStream in=new DataInputStream(request.getInputStream()); String response_str=in.readUTF(); System.out.println(response_str); response.setContentType("application/octest-stream"); ObjectOutputStream servletout=new ObjectOutputStream(response.getOutputStream()); System.out.println(v.toString()); servletout.writeObject(v); servletout.flush(); servletout.close(); }catch(Exception e){ System.out.println("servlet:"+e.getMessage()); } } /**Process the HTTP Post request*/ public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request,response); } 关于timezone的问题 aaa|bbb|ccc|用replace怎么把|替换掉? 问一个困惑我已久的问题:JDK在安装的时候为什么不自己设置系统的环境变量呢?为什么非要由用户来指定呢? 崩溃 !一个让新手很郁闷的问题 请问建立一个tcp连接后是否只能发送一次GET? 一道关于单例模式的题 怎么样才能知道那个类是匿名类? snoopy学Java之JB8 可怜的布局?? 请求援助! 如何发送html格式邮件? 请各位帮忙!有分送(32分)
Server:
Vector v = new Vector();
v.add("a");
v.add("b");
v.add("c");
objOut.writeObject(v);Client:
Vector v = (Vector)input.readObject();
System.out.println(v.toString());//为[a, b, c]
import java.util.*;public class TestObject {
public static void main(String[] args) {
try {
Vector v = new Vector();
v.add( "a" );
v.add( "b" );
v.add( "c" );
v.add( "e" );
v.add( "f" );
v.add( "g" );
System.out.println(v.toString());
ObjectOutputStream os = new ObjectOutputStream( new FileOutputStream("v.ser", true));
os.writeObject(v);
ObjectInputStream is = new ObjectInputStream( new FileInputStream("v.ser"));
Vector v1 = (Vector) is.readObject();
System.out.println(v1.toString());
} catch(Exception e) {
e.printStackTrace();
}
}
}检查一下你想用writeObject() 的对象是否声明实现了Serializable 接口。
import java.io.*;
import java.util.*;public class WriteTest {
public static void main(String[] args) {
Vector v = new Vector();
v.add("a");
v.add("b");
v.add("c");
try{
FileOutputStream ostream = new FileOutputStream("t.tmp");
ObjectOutputStream p = new ObjectOutputStream(ostream);
p.writeObject(v);
p.flush();
ostream.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
读方法如下
import java.io.*;
import java.util.*;public class Test {
public static void main(String[] args) {
try{
FileInputStream istream = new FileInputStream("t.tmp");
ObjectInputStream p = new ObjectInputStream(istream); Vector v = (Vector)p.readObject();
System.out.println(v);
istream.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
但一道我的web里面就不行了,这是为什么呀,代码如下:
applet:
void jButton1_actionPerformed(ActionEvent e) {
try{
URL url=new URL(getDocumentBase(),"/servlet/pack.Servlet_test");
URLConnection con=url.openConnection();
con.setUseCaches(true);
con.setDoOutput(true);
con.setDoInput(true);
ByteArrayOutputStream byteout=new ByteArrayOutputStream();
DataOutputStream out=new DataOutputStream(byteout);
out.writeUTF(this.jTextField1.getText());
out.flush();
byte buf[]=byteout.toByteArray();
con.setRequestProperty("Content-type","application/octest-stream");
con.setRequestProperty("Content-length",""+buf.length);
DataOutputStream dataout=new DataOutputStream(con.getOutputStream());
dataout.write(buf);
dataout.flush();
dataout.close();
ObjectInputStream in=new ObjectInputStream(con.getInputStream());
Vector v=(Vector)in.readObject();
String str=v.toString();
// String str=in.readObject().toString();
this.jTextArea1.setText(str);
in.close();
}catch(Exception ee){
System.out.println("applet:"+ee.getMessage());
}
}servlet:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType(CONTENT_TYPE);
try{
DataInputStream in=new DataInputStream(request.getInputStream());
String response_str=in.readUTF();
System.out.println(response_str);
response.setContentType("application/octest-stream");
ObjectOutputStream servletout=new ObjectOutputStream(response.getOutputStream());
System.out.println(v.toString());
servletout.writeObject(v);
servletout.flush();
servletout.close();
}catch(Exception e){
System.out.println("servlet:"+e.getMessage());
}
} /**Process the HTTP Post request*/
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response);
}