一:找个比较大的文件通过流传输,但是传到一半的时候突然断了,制造断点,判断源文件和传过来的文件长度是否一样;
如果源文件大于当地文件大小,则需要续传,
如果源文件等于当地文件,则全部传过来了,return本程序;
如果源文件等于零,则文件不存在;需要从头开始;
1 /** 2 * 断点文件制造机;专业制造断点 3 */ 4 File src = new File("D:\\软件\\FeiQ.exe"); 5 File local = new File("G:\\A\\"+src.getName()); 6 7 try { 8 InputStream in = new FileInputStream(src); 9 OutputStream out = new FileOutputStream(local); 10 11 byte[] bs = new byte[1024]; 12 long over =0; 13 for (int len = 0; (len =in.read(bs)) !=-1;) { 14 out.write(bs, 0, len); 15 //文件传到了一半出现类断点 16 over =over+len; 17 if(over>src.length()/2){ 18 System.out.println("出现断点"); 19 break; 20 } 21 } 22 out.close(); 23 in.close(); 24 } catch (FileNotFoundException e) { 25 e.printStackTrace(); 26 } catch (IOException e) { 27 // TODO Auto-generated catch block 28 e.printStackTrace(); 29 }
1 */ 2 File src = new File("D:\\软件\\FeiQ.exe"); 3 File local = new File("G:/A/"+src.getName()); 4 5 System.out.println("源文件大小:"+src.length()); 6 7 long start = 0;//文件指针开始位置 8 9 if(src.length()==local.length()){ 10 System.out.println("文件已经存在,不需要复制,程序结束"); 11 return; 12 }else if(local.length()==0){ 13 System.out.println("文件不存在,需要从头开始"); 14 }else if(src.length()>local.length()){ 15 System.out.println("断点文件,需要续传..."); 16 start = local.length(); 17 } 18 19 try { 20 //建立连接管道 21 InputStream in = new FileInputStream(src); 22 23 //输出流追加 24 OutputStream out = new FileOutputStream(local, true); 25 26 byte[] bs = new byte[2048]; 27 28 //设置输入流起始位置 29 in.skip(start); 30 System.out.println("输入流起始位置:"+start); 31 32 //循环复制 33 for(int len=0;(len=in.read(bs))!=-1; ){ 34 out.write(bs, 0, len); 35 } 36 37 System.out.println("传输结束"); 38 39 //释放资源,人走关灯 40 out.close(); 41 in.close(); 42 43 } catch (FileNotFoundException e) { 44 e.printStackTrace(); 45 } catch (IOException e) { 46 e.printStackTrace();
时间: 2024-11-08 10:05:53