對打檔案進行分割,分割成固定大小的檔案,並存放與指定的目錄,可以指定分割的大小。**如下:
/**
* @description
* @param filepath 檔名稱,包括路徑
* @param filterfolder 分割檔案存放目錄
* @param filesize 分割檔案大小
* @throws ioexception
*/public static void cutfile(string filepath, string filterfolder, int filesize) throws ioexception
outfile.close();
} if(readedlen
/*** @description unit files
* @param outfilename 合併檔名稱
* @param filefolder 被合併檔案所在目錄
* @param filtername 被合併檔名過濾條件
* @throws ioexception
*/public static void unitfile(string outfilename, string filefolder, final string filtername) throws ioexception
});randomaccessfile out = new randomaccessfile(outfile, "rw");
for (file file : infiles)
out.close();
}
兩個方法都是採用的隨機讀寫流對檔案進行讀寫的。
這樣存在兩個問題:
分割檔案中,採用單個位元組讀取方式的優點是,可以將檔案分割的大小精確到位元組。但對中文進行分割就會出現大小有上下浮動,同時存在將乙個中文分割成兩個位元組存放到兩個檔案中。
合併檔案中,根據上面的方法,不能對被合併的檔案進行排序,既合併時,檔案順序是按照檔名稱排序的,這種情況下,如果檔名中有數字,就會出現混亂的情況。
測試**很簡單就不貼上了。
上面的兩個問題解決方案:
對於有中文的檔案分割,推薦使用字元流取代位元組流進行讀取;
檔案合併中,取得檔案列表後,使用集合對檔案按照檔名稱進行排序即可。
如果你感興趣,測試**和解決上面兩個問題的**不妨去實現一下吧。
實現檔案的分割和合併
讀取需要被分割的檔案,將該檔案以n份讀取到不同的臨時檔案中。int index 1 每個讀取100kb int len 1 byte buf newbyte 1024 100 while len fis.read buf 1 fis.close 封裝被分割檔案的目錄,過濾掉不需要的檔案得到所有被分割...
在sql中實現字串分割(函式)
set ansi nulls on set quoted identifier on goalter function dbo f split sourcesql varchar 8000 strseprate varchar 10 returns temp table a varchar 100 ...
C 分割檔案路徑中的檔名與路徑
int lastindex filepath.lastindexof 的意思是,乙個是轉義,乙個是代表斜槓 string pfilepath filepath.substring 0,lastindex 檔案路徑 string pfilename filepath.substring lastind...