// 创建网络接受流接受服务器文件数据 InputStream netIn = server.getInputStream(); InputStream in = new DataInputStream(new BufferedInputStream(netIn)); //创建缓冲区缓冲网络数据 byte[] buf = new byte[20480];
int num = in.read(buf); while (num != (-1)) {//是否读完所有数据 raf.write(buf, 0, num);//将数据写往文件 raf.skipBytes(num);//顺序写文件字节 num = in.read(buf);//继续从网络中读取文件 } in.close(); raf.close();
} catch(IOException q){ System.out.println("异常");
}
下传端:
try{ //创建网络服务器接受客户请求 ServerSocket ss = new ServerSocket(8880); System.out.println("打开下传");
File file = new File(sharefilemessage); //sharefilemessage 本地要下传的文件 FileInputStream fos = new FileInputStream(file);
//创建网络输出流并提供数据包装器 OutputStream netOut = client.getOutputStream(); OutputStream doc = new DataOutputStream( new BufferedOutputStream(netOut)); //创建文件读取缓冲区 byte[] buf = new byte[20480]; int num = fos.read(buf);//读文件 while (num != (-1)) {//是否读完文件 doc.write(buf, 0, num);//把文件数据写出网络缓冲区 doc.flush();//刷新缓冲区把数据写往客户端 num = fos.read(buf);//继续从文件中读取数据 } fos.close(); doc.close(); } catch(IOException e1){ System.out.print("异常"); } 多谢各位高手帮忙了
IO流中,有个设置起始标志的,你去看一下API
下面这段是我触发“下载”按钮时执行的代码 File file = new File(filesavePath); if(!file.exists()){ System.out.println("文件不存在,创建"); file.createNewFile();} Socket server = new Socket(serverIP, 8880); RandomAccessFile raf = new RandomAccessFile(file, "rw"); // 通过Socket连接文件服务器 PrintWriter outtosocket = new PrintWriter(server .getOutputStream()); ; outtosocket.println(downfilemessage); outtosocket.flush(); InputStream netIn = server.getInputStream(); InputStream in = new DataInputStream( new BufferedInputStream(netIn)); //创建缓冲区缓冲网络数据
byte[] buf = new byte[20480];
in.skip(downedsize); //跳过已下载的部分从断点出开始下载 int num = in.read(buf); while (num != (-1)&&isStop!=true) //isStop初始化为false,当我触发“暂停”按钮时执行isStop=true; 我想通过判断isStop的值来中断下载流。
下载端:
try{
File file = new File(filesavePath); //filesavePath 本地保存路径
file.createNewFile();
RandomAccessFile raf = new RandomAccessFile(file, "rw");
// 通过Socket连接文件服务器
Socket server = new Socket(serverIP, 8880); //ServerIP 对方IP
PrintWriter outtosocket=new PrintWriter(server.getOutputStream());;
outtosocket.println(downfilemessage);
outtosocket.flush();
// 创建网络接受流接受服务器文件数据
InputStream netIn = server.getInputStream();
InputStream in = new DataInputStream(new BufferedInputStream(netIn));
//创建缓冲区缓冲网络数据
byte[] buf = new byte[20480];
int num = in.read(buf);
while (num != (-1)) {//是否读完所有数据
raf.write(buf, 0, num);//将数据写往文件
raf.skipBytes(num);//顺序写文件字节
num = in.read(buf);//继续从网络中读取文件
}
in.close();
raf.close();
} catch(IOException q){
System.out.println("异常");
}
try{
//创建网络服务器接受客户请求
ServerSocket ss = new ServerSocket(8880);
System.out.println("打开下传");
Socket client = ss.accept();
BufferedReader inputfromsocket=new BufferedReader(new InputStreamReader(client.getInputStream()));
File file = new File(sharefilemessage); //sharefilemessage 本地要下传的文件
FileInputStream fos = new FileInputStream(file);
//创建网络输出流并提供数据包装器
OutputStream netOut = client.getOutputStream();
OutputStream doc = new DataOutputStream(
new BufferedOutputStream(netOut));
//创建文件读取缓冲区
byte[] buf = new byte[20480];
int num = fos.read(buf);//读文件
while (num != (-1)) {//是否读完文件
doc.write(buf, 0, num);//把文件数据写出网络缓冲区
doc.flush();//刷新缓冲区把数据写往客户端
num = fos.read(buf);//继续从文件中读取数据
}
fos.close();
doc.close();
}
catch(IOException e1){
System.out.print("异常");
}
多谢各位高手帮忙了
下面这段是我触发“下载”按钮时执行的代码
File file = new File(filesavePath);
if(!file.exists()){
System.out.println("文件不存在,创建");
file.createNewFile();} Socket server = new Socket(serverIP, 8880);
RandomAccessFile raf = new RandomAccessFile(file, "rw");
// 通过Socket连接文件服务器 PrintWriter outtosocket = new PrintWriter(server
.getOutputStream());
; outtosocket.println(downfilemessage);
outtosocket.flush();
InputStream netIn = server.getInputStream();
InputStream in = new DataInputStream(
new BufferedInputStream(netIn));
//创建缓冲区缓冲网络数据
byte[] buf = new byte[20480];
in.skip(downedsize); //跳过已下载的部分从断点出开始下载
int num = in.read(buf);
while (num != (-1)&&isStop!=true) //isStop初始化为false,当我触发“暂停”按钮时执行isStop=true; 我想通过判断isStop的值来中断下载流。
{
raf.write(buf, 0, num);
raf.skipBytes(num);
num = in.read(buf);//继续从网络中读取文件
}
if(isStop==true){
//当暂停后,将isStop重置为false。并获得已下载文件的大小downedsize,作为断点
isStop=false;
System.out.println("已暂停");
downedsize=in.available();
System.out.println("已传送了:"+downedsize);
}
in.close();
raf.close();
server.close(); }
//问题是运行的时候发现 我触发“暂停”按钮根本不起作用,文件一直到下载结束。麻烦大哥帮帮忙看看问题出在哪了
所以,要看你的暂停按钮事件是怎么处理的?