Re: [問題] DataOutput傳輸檔案的問題

看板java作者 (完成這條天堂路)時間16年前 (2009/09/12 22:59), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《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
文章代碼(AID): #1AgxSri9 (java)
討論串 (同標題文章)
文章代碼(AID): #1AgxSri9 (java)