日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java文件斷點續(xù)傳實現(xiàn)原理解析

瀏覽:31日期:2022-09-01 14:06:05

一、作用:

隨機流(RandomAccessFile)不屬于IO流,支持對文件的讀取和寫入隨機訪問。

二、隨機訪問文件原理:

首先把隨機訪問的文件對象看作存儲在文件系統(tǒng)中的一個大型 byte 數(shù)組,然后通過指向該 byte 數(shù)組的光標或索引(即:文件指針 FilePointer)在該數(shù)組任意位置讀取或?qū)懭肴我鈹?shù)據(jù)。

三、相關(guān)方法說明:

1、對象聲明:RandomAccessFile raf = newRandomAccessFile(File file, String mode);

其中參數(shù) mode 的值可選 'r':可讀,'w' :可寫,'rw':可讀性;

2、獲取當前文件指針位置:int RandowAccessFile.getFilePointer();

3、改變文件指針位置(相對位置、絕對位置):

1> 絕對位置:RandowAccessFile.seek(int index);

2> 相對位置:RandowAccessFile.skipByte(int step); 相對當前位置

4、給寫入文件預(yù)留空間:RandowAccessFile.setLength(long len);

斷點續(xù)傳實現(xiàn)原理:

1)下載斷開的時候,記錄文件斷點的位置position;

2)繼續(xù)下載的時候,通過RandomAccessFile找到之前的position位置開始下載

實際操作:

我們在D盤的根目錄下創(chuàng)建一個名為”test.txt”的文件,文件內(nèi)容很簡單,如圖所示:

Java文件斷點續(xù)傳實現(xiàn)原理解析

沒錯,我們輸入的內(nèi)容就是簡單的6個英語字母。然后我們右鍵→屬性:

Java文件斷點續(xù)傳實現(xiàn)原理解析

我們要實現(xiàn)的效果很簡單:將在D盤的”test.txt”文件寫入到E盤當中,但中途我們會模擬一次”中斷”行為,然后在重新繼續(xù)上傳,最終完成整個過程。

也就是說,我們這里將會把“D盤”視作一臺電腦,并且直接將”E盤”視作一臺服務(wù)器。那么這樣我們甚至都不再與http協(xié)議扯上半毛錢關(guān)系了,(當然實際開發(fā)我們肯定是還是得與它扯上關(guān)系的 ^<^),從而只關(guān)心最基本的文件讀寫的”斷”和”續(xù)”的原理是怎么樣的。

import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.RandomAccessFile;public class Test { private static int position = -1; public static void main(String[] args) { // 源文件與目標文件 File sourceFile = new File('D:/', 'test.txt'); File targetFile = new File('E:/', 'test.txt'); // 輸入輸出流 FileInputStream fis = null; FileOutputStream fos = null; // 數(shù)據(jù)緩沖區(qū) byte[] buf = new byte[1]; try { fis = new FileInputStream(sourceFile); fos = new FileOutputStream(targetFile); // 數(shù)據(jù)讀寫 while (fis.read(buf) != -1) {fos.write(buf);// 當已經(jīng)上傳了3字節(jié)的文件內(nèi)容時,模擬網(wǎng)絡(luò)中斷了,拋出異常if (targetFile.length() == 3) { position = 3; throw new FileAccessException();} } } catch (FileAccessException e) { keepGoing(sourceFile, targetFile, position); } catch (FileNotFoundException e) { System.out.println('指定文件不存在'); } catch (IOException e) { } finally { try {// 關(guān)閉輸入輸出流if (fis != null) fis.close();if (fos != null) fos.close(); } catch (IOException e) {e.printStackTrace(); } } } private static void keepGoing(File source, File target, int position) { try { Thread.sleep(10000); } catch (Exception e) { e.printStackTrace(); } try { RandomAccessFile readFile = new RandomAccessFile(source, 'rw'); RandomAccessFile writeFile = new RandomAccessFile(target, 'rw'); readFile.seek(position); writeFile.seek(position); // 數(shù)據(jù)緩沖區(qū) byte[] buf = new byte[1]; // 數(shù)據(jù)讀寫 while (readFile.read(buf) != -1) {writeFile.write(buf); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }}class FileAccessException extends Exception {}

總結(jié)一下,我們在這次改動當中都做了什么工作:

首先,我們定義了一個變量position,記錄在發(fā)生中斷的時候,已完成讀寫的位置。(這是為了方便,實際來說肯定應(yīng)該講這個值存到文件或者數(shù)據(jù)庫等進行持久化) 然后在文件讀寫的while循環(huán)中,我們?nèi)ツM一個中斷行為的發(fā)生。這里是當targetFile的文件長度為3個字節(jié)則模擬拋出一個我們自定義的異常。(我們可以想象為實際下載中,已經(jīng)上傳(下載)了”x”個字節(jié)的內(nèi)容,這個時候網(wǎng)絡(luò)中斷了,那么我們就在網(wǎng)絡(luò)中斷拋出的異常中將”x”記錄下來)。 剩下的就如果我們之前說的一樣,在“續(xù)傳”行為開始后,通過RandomAccessFile類來包裝我們的文件,然后通過seek將指針指定到之前發(fā)生中斷的位置進行讀寫就搞定了。(實際的文件下載上傳,我們當然需要將保存的中斷值上傳給服務(wù)器,這個方式通常為httpConnection.setRequestProperty(“RANGE”,”bytes=x”);)

在我們這段代碼,開啟”續(xù)傳“行為,即keepGoing方法中:我們起頭讓線程休眠10秒鐘,這正是為了讓我們運行程序看到效果。 現(xiàn)在我們運行程序,那么文件就會開啟“由D盤上傳到E盤的過程”,我們首先點開E盤,會發(fā)現(xiàn)的確多了一個test.txt文件,打開它發(fā)現(xiàn)內(nèi)容如下:

Java文件斷點續(xù)傳實現(xiàn)原理解析

沒錯,這個時候我們發(fā)現(xiàn)內(nèi)容只有“abc”。這是在我們預(yù)料以內(nèi)的,因為我們的程序模擬在文件上傳了3個字節(jié)的時候發(fā)生了中斷。

Ok,我們靜靜的等待10秒鐘過去,然后再點開該文件,看看是否能夠成功:

Java文件斷點續(xù)傳實現(xiàn)原理解析

通過截圖我們發(fā)現(xiàn)內(nèi)容的確已經(jīng)變成了“abc”,由此也就完成了續(xù)傳。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产日韩欧美在线播放不卡| a日韩av网址| 欧美成人综合| 午夜欧美巨大性欧美巨大| 久久精品一区二区国产| 久久精品凹凸全集| 日本电影久久久| 中文亚洲欧美| 亚洲欧美日韩一区在线观看| 国产精品色网| 免费视频最近日韩| 亚洲综合日韩| 色狠狠一区二区三区| 日韩不卡一区二区| 国产欧美日韩精品一区二区免费| 国产欧美一区| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 婷婷综合在线| 亚洲精品电影| 久久午夜精品| 视频一区日韩精品| 久久精品xxxxx| 国产亚洲一卡2卡3卡4卡新区| 国产调教精品| 国产成人a视频高清在线观看| 高清不卡亚洲| 欧美精品日日操| 不卡av一区二区| 午夜一区在线| 国产免费av一区二区三区| 精品视频在线你懂得| 欧美二三四区| 久久国产精品久久w女人spa| 三级久久三级久久久| 欧美日韩一视频区二区| 国产精品久久亚洲不卡| 成人影视亚洲图片在线| 精品中文字幕一区二区三区av| 亚洲在线一区| 国产日韩在线观看视频| 成人午夜毛片| 婷婷激情久久| 日韩精品视频一区二区三区| 精品久久电影| 国产精品毛片| 国产精品毛片久久久| 91精品一区二区三区综合| 在线观看亚洲精品福利片| 精品亚洲成人| 久久xxxx精品视频| 欧美激情亚洲| 激情91久久| 国产精品日本一区二区不卡视频| 青青青免费在线视频| 99在线精品免费视频九九视| 国产日韩一区| 日韩视频网站在线观看| 亚洲精品无吗| av资源中文在线| 亚洲日本久久| 欧美13videosex性极品| 婷婷精品久久久久久久久久不卡| 精品久久国产一区| 亚洲综合欧美| 国产一区二区三区黄网站| 午夜一级在线看亚洲| 麻豆91精品91久久久的内涵| 蜜桃tv一区二区三区| 国产探花在线精品| 黄色不卡一区| 欧美黄页在线免费观看| 狠狠操综合网| 久久精品网址| 亚洲tv在线| 亚洲午夜视频| 麻豆精品久久| 亚洲一级淫片| 久久久久久久久丰满| 欧美天堂一区二区| 欧美日韩国产综合网| 精品香蕉视频| 日韩精品一区二区三区中文 | 久久狠狠亚洲综合| 日韩毛片视频| 国产欧美二区| 久久一二三区| 三级小说欧洲区亚洲区| 日本免费一区二区视频| 久久精品亚洲人成影院| 国产日韩一区二区三区在线播放 | 久久久久久久久99精品大| 国产精品香蕉| 亚洲精一区二区三区| 欧美美女一区| 开心激情综合| 久久国产精品免费精品3p| 日韩一区欧美二区| 国产视频亚洲| 五月天激情综合网| 成人片免费看| 国产suv精品一区| 国产精品对白久久久久粗| 日韩激情啪啪| 日本亚洲不卡| 亚洲一区av| 蜜桃久久久久久| 国产模特精品视频久久久久| 欧美日韩国产在线观看网站| 美女网站视频一区| 国产一区二区三区四区大秀| 日本成人在线网站| 日韩精品一级二级| 91精品99| 国产欧美日韩影院| 日韩精品免费视频一区二区三区| 99视频一区| 日韩av福利| 精品美女视频 | 国精品产品一区| 日本中文字幕一区二区| 中文字幕人成乱码在线观看| 欧美亚洲色图校园春色| 亚洲制服少妇| 日本高清不卡一区二区三区视频| 日本欧美一区二区| 亚洲日本国产| 99在线精品免费视频九九视 | 欧美成人基地| 成人在线超碰| 欧产日产国产精品视频| 久久中文字幕av一区二区不卡| 日韩av自拍| 99精品国产一区二区三区| 久久国产欧美| 在线视频免费在线观看一区二区| 夜夜嗨一区二区三区| 亚洲精选91| 在线亚洲免费| 亚洲成人va| 一区免费在线| 亚洲国产不卡| 亚洲天堂久久| 激情久久中文字幕| 欧洲一级精品| 精品中文字幕一区二区三区四区| 久久wwww| 日韩精品一区二区三区中文字幕| 天使萌一区二区三区免费观看| 欧美日韩国产一区二区三区不卡 | 亚洲精品乱码| 视频一区二区三区在线| 欧美日韩视频一区二区三区| 欧洲激情综合| 日韩精选在线| 国产精品亚洲综合久久| 国产欧美成人| 国产精品观看| 精品久久福利| 激情六月综合| 夜夜嗨一区二区| 国产一区日韩欧美| 99国产精品99久久久久久粉嫩| 99日韩精品| 国产日韩免费| av资源中文在线| | 午夜国产欧美理论在线播放| 欧美一区三区| 亚洲精华国产欧美| 综合一区二区三区| 免费亚洲婷婷| а√天堂中文在线资源8| 久久久久久婷| 日韩av自拍| 婷婷成人在线| 久久久久国产精品一区三寸| 一区二区电影| 国产亚洲精品精品国产亚洲综合| 国产午夜一区| 精品中文字幕一区二区三区 | 国产欧美日韩精品一区二区三区| 欧美经典一区| 在线人成日本视频| 男女激情视频一区| 亚洲ww精品| 久久只有精品| 日韩欧美一区二区三区在线视频| 亚州av乱码久久精品蜜桃| 中文一区一区三区免费在线观 | 日韩国产91| 精品美女久久| 国产一区清纯| 亚洲aⅴ网站| 日韩精品水蜜桃| 亚洲精选久久| 亲子伦视频一区二区三区| 欧美一区=区三区| 在线看片不卡| 欧美国产极品| 在线亚洲人成|