Re: [問題] DataOutput傳輸檔案的問題
※ 引述《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
討論串 (同標題文章)