黑马程序员技术交流社区
标题:
关于多线程问题
[打印本页]
作者:
杨银川
时间:
2011-12-20 23:23
标题:
关于多线程问题
本帖最后由 杨银川 于 2011-12-21 18:28 编辑
public void run() {
// TODO Auto-generated method stub
String ip=s.getInetAddress().getHostAddress();
try {
System.out.println("ip:"+ip);
InputStream in=s.getInputStream();
FileOutputStream fos=new FileOutputStream("D:\\Test\\test\\server.jpg");
byte[] buf=new byte[1024];
int len=0;
while((len=in.read(buf))!=-1){
fos.write(buf, 0, len);
}
//反馈
OutputStream out=s.getOutputStream();
out.write("上传成功".getBytes());
s.close();
fos.close();
} catch (Exception e) {
// TODO: handle exception
throw new RuntimeException(ip+"上传失败");
}
以上是我写的上传图片部分代码,我的问题是如果把fos.close();换成in.close(),怎么图片是0kb,我是在最后关的啊,应该是把数据都读写完了,再关的,怎么一个数据都没读到,是不是多线程执行的问题啊?
作者:
海中的游弋草
时间:
2011-12-21 09:59
我这里有可以成功运行的代码你可以参考一下。
package com.io.test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class test4 {
/**
* @param args
*/
public static void main(String[] args) {
FileInputStream fin=null;
FileOutputStream fos=null;
try
{
fin=new FileInputStream("c:/defaultSkin.png");
fos=new FileOutputStream("c:/1.png");
byte[] buf=new byte[1024];
int length=0;
while((length=fin.read(buf)) != -1)
{
fos.write(buf,0,length);
}
}
catch(IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
if(fin != null)
{
try {
fin.close();
} catch (IOException e) {
throw new RuntimeException("关闭写入失败");
}
}
if(fos != null)
{
try {
fos.close();
} catch (IOException e) {
throw new RuntimeException("关闭读出失败");
}
}
}
}
}
作者:
刘基军
时间:
2011-12-21 10:02
把fos.close();换成in.close().....
----fos是输出流,而in是输入流,应该不能这样替换吧
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2