本帖最后由 范龙彬 于 2011-11-25 14:14 编辑
网络编程...中上传图片代码
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Test7 {
public static void main(String[]args) throws IOException{
Socket s =new Socket("127.0.0.1",10003);
BufferedInputStream bufi =new BufferedInputStream(new FileInputStream("d:\\123.jpg"));
BufferedOutputStream bufo =new BufferedOutputStream(s.getOutputStream());
byte [] buf =new byte[1024];
int len =0;
while((len=bufi.read(buf))!=-1){
bufo.write(buf,0,len);
}
s.shutdownOutput();
BufferedInputStream bufr =new BufferedInputStream(s.getInputStream());
byte [] nuf =new byte [1024];
bufr.read(nuf);
System.out.println(new String(nuf));
}
}
class PicServe{
public static void main(String[]args) throws IOException{
ServerSocket ss =new ServerSocket(10003);
Socket s= ss.accept();
System.out.println(s.getLocalAddress());
BufferedInputStream bufi =new BufferedInputStream(s.getInputStream());
byte [] buf =new byte[1024];
int len =0;
BufferedOutputStream bufo =new BufferedOutputStream(new FileOutputStream("D:\\345.jpg"));
while((len =bufi.read(buf))!=-1){
bufo.write(buf,0,len);
}
/* OutputStream out =s.getOutputStream();
out.write("上传成功".getBytes());*/
BufferedOutputStream bufoo =new BufferedOutputStream(s.getOutputStream());
bufoo.write("上传成功".getBytes());
bufoo.flush(); // 小小的一个刷新足足让我郁闷三小时..
}
}
OutputStream 的write方法可以自动刷新
经过测试 查找相关文档发现 BufferedOutputStream 为了节约了计算机资源,避免每次都调用一次写入流的操作 .加入了一个byte[] 数组 ..这里要注意的是它不具备自动刷新功能.大家小心..
可能是因为上面的问题秀住大脑了,有一个问题一直没有想通
这段代码出现了数据丢失..
3.52M的文件上传完却变成了 3.5M 为什么 求解
该贴已经同步到 范龙彬的微博 |
|