作者reon (完成这条天堂路)
看板java
标题Re: [问题] DataOutput传输档案的问题
时间Sat Sep 12 22:58:58 2009
※ 引述《cates (车文晶)》之铭言:
: 大家好 我有一个传输档案的问题想请教大家,
: 我目前有写一个蓝芽程式,是利用StreamConnectionNotifier
: 去做传档,不过有遇到一个问题,当我的byte [] buffer大小
: 设128或256时,接收端虽然能接收到档案,可是却开启不了档(我是传图片)
: ,当buffer设512时就可以开档了,照理说buffer设128 or 256应该
: 都没有关系才对,想请教大家我的想法哪里有问题呢??
: 谢谢大家
: 部份程式码如下:
: //--------------传送端-------------------------------------
: byte[] buffer=new byte[512];
: int i;
: dos=new DataOutputStream(conn.openDataOutputStream());
改成ObjectOutputStream oos = new ObjectOutputStream( con..自行完成 );
: FileInputStream fis=new FileInputStream(new File(FilePath)); //C://1.jpg
这行留着
: while((i=fis.read(buffer))!=-1)
: dos.write(buffer,0,i);
: fis.close();
: dos.close();
这段整个改掉 也不用宣告buffer阵列大小了
BufferedInputStream fin = new BufferedInputStream(fis);
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[] input = new byte[1];
while(fin.read(input) !=-1){
bout.write(input);
}
input = bout.toByteArray();
oos.write(input);
oos.flush();
oos.close();
: //-------------接收端--------------------------------------
: DataInputStream dis=new DataInputStream(conn.openInputStream());
DataInputStream 改成ObjectInputStream 依此类推 下面自行改成向上面一样
: FileOutputStream fos=new FileOutputStream("C:\\ReceiveFile");
: int i=0;
: byte[] buffer=new byte[512];
: while((i=dis.read(buffer))!=-1)
: fos.write(buf, 0, i);
: fos.close();
: dis.close();
这是我硕论时在写网路程式的遇到类似的问题 希望可以解决你的问题
因为DataOutputStream在输出的时候好像会加料= =||
好像是Header还是啥的问题 输出字串和字元是还不太有问题
不过小到像byte的资料似乎会有点问题
快两年了 当完兵有点忘了 有误请指正@@
不过总言 ObjectOutputStream和ByteArrayOutputStream真的是好物
希望对你有帮助
--
最深的祝福是没有期限的
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.232.178.29