TCPアップロードファイルにいくつかの問題が見つかりました
1808 ワード
public class TCPServerFs implements Runnable{
private Socket s;
public TCPServerFs(Socket s) {
super();
this.s = s;
}
@Override
public void run() {
// TODO Auto-generated method stub
//
try {
InputStream in = s.getInputStream();
//
byte[] buf = new byte[1024];
int len = in.read(buf);
String FileName = new String(buf,0,len);
System.out.println(" :"+FileName);
File uf = new File("F:/0123/MyServer",FileName);
//FileOutputStream fos = new FileOutputStream(uf);
int count =1;
//
while (uf.exists()) {
System.out.println(uf.exists());
int index = FileName.lastIndexOf(".");
String name = FileName.substring(0, index);
String type = FileName.substring(index+1);
uf = new File("F:\\0123\\MyServer",name+"("+(count++)+")."+type);
}
System.out.println(" :"+uf.getName());
FileOutputStream fos = new FileOutputStream(uf);
//
while ((len = in.read(buf))!=-1) {
fos.write(buf,0,len);
}
PrintStream out = new PrintStream(s.getOutputStream(),true);
out.println(" shang ");
System.out.println(" :"+s.getInetAddress().getHostName());
} catch (Exception e) {
e.getMessage();
}
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
ServerSocket ss = new ServerSocket(10713);
while (true) {
System.out.println(" , ");
Socket s = ss.accept();
new Thread(new TCPServerFs(s)).start();
}
}
}
ファイルオブジェクトを作成するときにファイルインスタンスは作成されないのでfile.exists()はfalseを返しますが
//FileOutputStream fos = new FileOutputStream(uf);読み取りストリームはファイルオブジェクトに関連付けられているファイルが存在しない場合に自動的に作成されるのでfile.exists()はtrueが完全にアップロードできない最初のファイルサービス側の最初のファイルのサイズを0に返します.