各位大哥帮小弟看看为什么这个Client接到文件不能删除呢?
可以删除或者改名,但是一删除马上就会被恢复,到底是怎么回事呢,而且被恢复之后的文件是不能再删除的也不能访问,注销或者重启之后这个文件就不见了******************
Server.java
******************
import java.net.*;
import java.io.*;public class Server {
private Socket sock=null;
final static private int BUFFER=1024;
public Server() {
try{
ServerSocket serverSock=new ServerSocket(18080);
byte[] buf=new byte[BUFFER];
int num;
while(true){
sock=serverSock.accept();
OutputStream out=sock.getOutputStream();
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("fileSocket/roman.avi"),BUFFER);
while((num=bis.read(buf))!=-1){
// System.out.println("SI:" + num);
if(num<BUFFER){
byte[] wbuf = new byte[num];
for (int i = 0; i < num; i++) {
wbuf[i] = buf[i];
}
}
out.write(buf);
}
out.close();
bis.close();
}
}catch(Exception e){
e.printStackTrace();
}
} public static void main(String[] arg){
Server s=new Server();
}
}*********************
Client.java
*********************
import java.net.*;
import java.io.*;
import java.util.Date;public class Client {
final static private int BUFFER=1024;
public Client() {
try{
Date start = new Date();
Socket sock = new Socket("127.0.0.1", 18080);
InputStream in = sock.getInputStream();
FileOutputStream fos=new FileOutputStream("fileSocket/copy.avi");
int num=0;
byte[] buf=new byte[BUFFER];
while((num=in.read(buf))!=-1){
// System.out.println("SI:" + num);
if(num<BUFFER){
byte[] wbuf = new byte[num];
for (int i = 0; i < num; i++) {
wbuf[i] = buf[i];
}
}
fos.write(buf);
}
fos.flush();
fos.close();
in.close();
System.out.println("send:Success");
sock.close();
Date end = new Date();
long tmp=(end.getTime()-start.getTime());
long second=tmp / 1000;
calcHM(second,tmp%1000);
////System.out.println("millisencond "+ tmp + " and second " + second);
}catch(Exception e){
e.printStackTrace();
}
}
//显示时间的函数
public void calcHM(long timeInSeconds,long mili) {
long hours, minutes, seconds;
hours = timeInSeconds / 3600;
timeInSeconds = timeInSeconds - (hours * 3600);
minutes = timeInSeconds / 60;
System.out.println(hours + " hour(s) " + minutes + " minute(s) " +timeInSeconds +" second(s) " + mili +" millisecond(s)" );
}
// public static void main(String[] arg){
Client s=new Client();
}
}
可以删除或者改名,但是一删除马上就会被恢复,到底是怎么回事呢,而且被恢复之后的文件是不能再删除的也不能访问,注销或者重启之后这个文件就不见了******************
Server.java
******************
import java.net.*;
import java.io.*;public class Server {
private Socket sock=null;
final static private int BUFFER=1024;
public Server() {
try{
ServerSocket serverSock=new ServerSocket(18080);
byte[] buf=new byte[BUFFER];
int num;
while(true){
sock=serverSock.accept();
OutputStream out=sock.getOutputStream();
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("fileSocket/roman.avi"),BUFFER);
while((num=bis.read(buf))!=-1){
// System.out.println("SI:" + num);
if(num<BUFFER){
byte[] wbuf = new byte[num];
for (int i = 0; i < num; i++) {
wbuf[i] = buf[i];
}
}
out.write(buf);
}
out.close();
bis.close();
}
}catch(Exception e){
e.printStackTrace();
}
} public static void main(String[] arg){
Server s=new Server();
}
}*********************
Client.java
*********************
import java.net.*;
import java.io.*;
import java.util.Date;public class Client {
final static private int BUFFER=1024;
public Client() {
try{
Date start = new Date();
Socket sock = new Socket("127.0.0.1", 18080);
InputStream in = sock.getInputStream();
FileOutputStream fos=new FileOutputStream("fileSocket/copy.avi");
int num=0;
byte[] buf=new byte[BUFFER];
while((num=in.read(buf))!=-1){
// System.out.println("SI:" + num);
if(num<BUFFER){
byte[] wbuf = new byte[num];
for (int i = 0; i < num; i++) {
wbuf[i] = buf[i];
}
}
fos.write(buf);
}
fos.flush();
fos.close();
in.close();
System.out.println("send:Success");
sock.close();
Date end = new Date();
long tmp=(end.getTime()-start.getTime());
long second=tmp / 1000;
calcHM(second,tmp%1000);
////System.out.println("millisencond "+ tmp + " and second " + second);
}catch(Exception e){
e.printStackTrace();
}
}
//显示时间的函数
public void calcHM(long timeInSeconds,long mili) {
long hours, minutes, seconds;
hours = timeInSeconds / 3600;
timeInSeconds = timeInSeconds - (hours * 3600);
minutes = timeInSeconds / 60;
System.out.println(hours + " hour(s) " + minutes + " minute(s) " +timeInSeconds +" second(s) " + mili +" millisecond(s)" );
}
// public static void main(String[] arg){
Client s=new Client();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货