download:Web前端架構師
*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package
datei.steuern;
import
java.io.BufferedReader;
import
java.io.File;
import
java.io.FileInputStream;
import
java.io.FileNotFoundException;
import
java.io.FileOutputStream;
import
java.io.FileWriter;
import
java.io.IOException;
import
java.io.InputStream;
import
java.io.InputStreamReader;
import
java.io.RandomAccessFile;
import
java.nio.ByteBuffer;
import
java.nio.channels.FileChannel;
import
java.util.ArrayList;
import
java.util.Arrays;
import
java.util.Collections;
import
java.util.List;
import
java.util.logging.Level;
import
java.util.logging.Logger;
/**
*
* @author s.watson
*/
public
class
FileTools {
public
FileTools() {
}
/**
* formatPath 轉義檔案目錄
*
* @param path
* @return
*/
public
static
String formatPath(String path) {
return
path.replaceAll(``"\\\\"``,
"/"``);
}
/**
* combainPath檔案路徑合併
*
* @param eins
* @param zwei
* @return
*/
private
static
String combainPath(String eins, String zwei) {
String dori =
""``;
eins =
null
== eins ?
""
: formatPath(eins);
zwei =
null
== zwei ?
""
: formatPath(zwei);
if
(!eins.endsWith(``"/"``) && zwei.indexOf(``"/"``) !=
0``) {
dori = eins +
"/"
+ zwei;
}
else
{
dori = (eins + zwei).replaceAll(``"//"``,
"/"``);
}
return
dori;
}
/**
* list2Array 列表轉換陣列
*
* @param list
* @return
*/
private
static
String[] list2Array(List list) {
String array[] = (String[]) list.toArray(``new
String[list.size()]);
return
array;
}
/**
* cp 複製檔案
*
* @param source
* @param destination
* @param loop
* @return
*/
public
static
List<File> cp(String source, String destination,
boolean
loop) {
List<File> list =
new
ArrayList();
try
{
File srcFile =
new
File(source);
File desFile =
new
File(destination);
list.addAll(cp(srcFile, desFile, loop));
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
list;
}
/**
* cp 複製檔案
*
* @param source
* @param destination
* @param loop
* @return
*/
public
static
List<File> cp(File source, File destination,
boolean
loop) {
List<File> list =
new
ArrayList();
try
{
if
(!source.exists() || source.isDirectory()) {
throw
new
FileNotFoundException();
}
list.add(cp(source, destination));
if
(loop) {
String[] subFile = source.list();
for
(String subPath : subFile) {
String src = combainPath(source.getPath(), subPath);``//子檔案原檔案路徑
String des = combainPath(destination.getPath(), subPath);``//子檔案目標路徑
File subfile =
new
File(src);
if
(subfile.isFile()) {
list.add(cp(src, des));
}
else
if
(subfile.isDirectory() && loop) {
list.addAll(cp(src, des, loop));
}
}
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
list;
}
/**
* cp 單檔案複製檔案
*
* @param source
* @param destination
* @return
*/
public
static
File cp(String source, String destination) {
File desFile =
null``;
try
{
File srcFile =
new
File(source);
desFile =
new
File(destination);
desFile = cp(srcFile, desFile);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
desFile;
}
/**
* cp 單檔案複製檔案
*
* @param source
* @param destination
* @return
*/
public
static
File cp(File source, File destination) {
FileInputStream in =
null``;
FileOutputStream out =
null``;
FileChannel inc =
null``;
FileChannel outc =
null``;
try
{
if
(!source.exists() || source.isDirectory()) {
throw
new
FileNotFoundException();
}
if
(source.getPath().equals(destination.getPath())) {
return
source;
}
long
allbytes = du(source,
false``);
if
(!destination.exists()) {
destination.createNewFile();
}
in =
new
FileInputStream(source.getPath());
out =
new
FileOutputStream(destination);
inc = in.getChannel();
outc = out.getChannel();
ByteBuffer byteBuffer =
null``;
long
length =
2097152``;``//基本大小,預設2M
long
_2M =
2097152``;
while
(inc.position() < inc.size()) {
if
(allbytes > (``64
* length)) {``//如果檔案大小大於128M 快取改為64M
length =
32
* _2M;
}
else
if
(allbytes > (``32
* length)) {``//如果檔案大小大於64M 快取改為32M
length =
16
* _2M;
}
else
if
(allbytes > (``16
* length)) {``//如果檔案大小大於32M 快取改為16M
length =
8
* _2M;
}
else
if
(allbytes > (``8
* length)) {``//如果檔案大小大於16M 快取改為8M
length =
4
* _2M;
}
else
if
(allbytes > (``4
* length)) {``//如果檔案大小大於8M 快取改為4M
length =
2
* _2M;
}
else
if
(allbytes > (``2
* length)) {``//如果檔案大小大於4M 快取改為2M
length = _2M;
}
else
if
(allbytes > (length)) {``//如果檔案大小大於2M 快取改為1M
length = _2M /
2``;
}
else
if
(allbytes < length) {``//如果檔案小於基本大小,直接輸出
length = allbytes;
}
allbytes = inc.size() - inc.position();
byteBuffer = ByteBuffer.allocateDirect((``int``) length);
inc.read(byteBuffer);
byteBuffer.flip();
outc.write(byteBuffer);
outc.force(``false``);
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
finally
{
try
{
if
(``null
!= inc) {
inc.close();
}
if
(``null
!= outc) {
outc.close();
}
if
(``null
!= in) {
in.close();
}
if
(``null
!= out) {
out.close();
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
return
destination;
}
/**
* rename 檔案重新命名
*
* @param filePath
* @param from
* @param to
* @return
*/
public
static
File rename(String filePath, String from, String to) {
File newFile =
null``;
try
{
File oldFile =
new
File(combainPath(filePath, from));
newFile =
new
File(combainPath(filePath, to));
rename(newFile, oldFile);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
newFile;
}
/**
* rename 檔案重新命名
*
* @param to
* @param from
* @return
*/
public
static
File rename(File from, File to) {
try
{
String newPath = to.getPath();
String oldPath = from.getPath();
if
(!oldPath.equals(newPath)) {
if
(!to.exists()) {
from.renameTo(to);
}
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
to;
}
/**
* mv 移動檔案
*
* @param fileName
* @param source
* @param destination
* @param cover
*/
public
static
void
mv(String fileName, String source, String destination,
boolean
cover) {
try
{
if
(!source.equals(destination)) {
File oldFile =
new
File(combainPath(source, fileName));
File newFile =
new
File(combainPath(destination, fileName));
mv(oldFile, newFile, cover);
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* mv 移動檔案
*
* @param source
* @param destination
* @param cover
*/
public
static
void
mv(String source, String destination,
boolean
cover) {
try
{
if
(!source.equals(destination)) {
File oldFile =
new
File(source);
File newFile =
new
File(destination);
mv(oldFile, newFile, cover);
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* mv 移動檔案
*
* @param source
* @param destination
* @param cover
*/
public
static
void
mv(File source, File destination,
boolean
cover) {
try
{
if
(!source.exists()) {
throw
new
FileNotFoundException();
}
StringBuilder fileName =
new
StringBuilder(source.getName());
if
(!cover && source.getPath().equals(destination.getPath())) {
if
(fileName.indexOf(``"."``) >
0``) {
fileName.insert(fileName.lastIndexOf(``"."``),
"_副本"``);
}
else
{
fileName.append(``"_副本"``);
}
cp(source,
new
File(combainPath(source.getParent(), fileName.toString())));
}
else
{
source.renameTo(destination);
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* extensions 獲取副檔名資訊
*
* @param filePath
* @param fileName
* @return
*/
private
static
String[] extensions(String filePath, String fileName) {
String[] extension = {};
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
extensions(file);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
extension;
}
/**
* extensions 獲取副檔名資訊
*
* @param fullPath
* @return
*/
private
static
String[] extensions(String fullPath) {
String[] extension = {};
try
{
File file =
new
File(fullPath);
extensions(file);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
extension;
}
/**
* extensions 獲取副檔名資訊
*
* @param file
* @return
*/
private
static
String[] extensions(File file) {
String[] extension = {};
try
{
if
(file.isFile()) {
String fileName = file.getName();
if
(fileName.lastIndexOf(``"."``) >=
0``) {
int
lastIndex = fileName.lastIndexOf(``"."``);
extension[``0``] = String.valueOf(lastIndex);``//副檔名的“.”的索引
extension[``1``] = fileName.substring(lastIndex +
1``);``//副檔名
extension[``2``] = fileName.substring(``0``, lastIndex);``//檔名
}
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
extension;
}
/**
* ls 遍歷檔案
*
* @param filePath
* @param loop
* @return
*/
public
static
List<File> ls(String filePath,
boolean
loop) {
List<File> list =
new
ArrayList();
try
{
File file =
new
File(filePath);
list.addAll(ls(file, loop));
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
list;
}
/**
* ls 遍歷檔案
*
* @param file
* @param loop
* @return
*/
public
static
List<File> ls(File file,
boolean
loop) {
List<File> list =
new
ArrayList();
try
{
list.add(file);
if
(!file.isDirectory()) {
list.add(file);
}
else
if
(file.isDirectory()) {
File[] subList = file.listFiles();
subList = filesSort(subList,
true``);
for
(File subFile : subList) {
if
(subFile.isDirectory() && loop) {
list.addAll(ls(subFile.getPath(), loop));
}
else
{
list.add(subFile);
}
}
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
list;
}
/**
* filesSort 檔案排序(預設升序)
*
* @param parentPath
* @param subList
* @return
*/
private
static
File[] filesSort(File[] inFiles,
boolean
asc) {
List<String> files =
new
ArrayList();
List<String> dirs =
new
ArrayList();
for
(File subFile : inFiles) {
if
(subFile.isDirectory()) {
dirs.add(subFile.getPath());
}
else
if
(subFile.isFile()) {
files.add(subFile.getPath());
}
}
String[] fileArray = {};
if
(files.size() >
0``) {
fileArray = list2Array(files);
Arrays.sort(fileArray);
if
(!asc) {
Arrays.sort(fileArray, Collections.reverseOrder());
}
}
String[] dirArray = {};
if
(dirs.size() >
0``) {
dirArray = list2Array(dirs);
Arrays.sort(dirArray);
if
(!asc) {
Arrays.sort(dirArray, Collections.reverseOrder());
}
}
return
concat2FileArray(fileArray, dirArray);
}
/**
* concat2FileArray 合併檔案陣列
*
* @param old1
* @param old2
* @return
*/
private
static
File[] concat2FileArray(String[] old1, String[] old2) {
File[] newArray =
new
File[old1.length + old2.length];
for
(``int
i =
0``, n = old1.length; i < n; i++) {
newArray[i] =
new
File(old1[i]);
}
for
(``int
i =
0``, j = old1.length, n = (old1.length + old2.length); j < n; i++, j++) {
newArray[j] =
new
File(old2[i]);
}
return
newArray;
}
/**
* read 讀取文字檔案
*
* @param filePath
* @param fileName
* @param charset
* @return
*/
public
static
StringBuilder read(String filePath, String fileName, String charset) {
StringBuilder sb =
new
StringBuilder();
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
sb.append(FileTools.tail(file,
false``,
0``, charset));
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
sb;
}
/**
* read 讀取文字檔案
*
* @param fullPath
* @param charset
* @return
*/
public
static
StringBuilder read(String fullPath, String charset) {
StringBuilder sb =
new
StringBuilder();
try
{
File file =
new
File(fullPath);
sb.append(FileTools.tail(file,
false``,
0``, charset));
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
sb;
}
/**
* read 讀取文字檔案
*
* @param file
* @param charset
* @return
*/
public
static
StringBuilder read(File file, String charset) {
StringBuilder sb =
new
StringBuilder();
try
{
sb.append(FileTools.tail(file,
false``,
0``, charset));
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
sb;
}
/**
* find 讀取文字檔案指定行
*
* @param filePath
* @param fileName
* @param line
* @param charset
* @return
*/
public
static
StringBuilder find(String filePath, String fileName,
int
line, String charset) {
StringBuilder sb =
new
StringBuilder();
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
sb.append(FileTools.tail(file,
true``, line, charset));
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
sb;
}
/**
* find 讀取文字檔案指定行
*
* @param fullPath
* @param line
* @param charset
* @return
*/
public
static
StringBuilder find(String fullPath,
int
line, String charset) {
StringBuilder sb =
new
StringBuilder();
try
{
File file =
new
File(fullPath);
sb.append(FileTools.tail(file,
true``, line, charset));
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
sb;
}
/**
* find 讀取文字檔案指定行
*
* @param file
* @param line
* @param charset
* @return
*/
public
static
StringBuilder find(File file,
int
line, String charset) {
StringBuilder sb =
new
StringBuilder();
try
{
sb.append(FileTools.tail(file,
true``, line, charset));
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
sb;
}
/**
* tail 讀取文字檔案
*
* @param filePath
* @param fileName
* @param charset
* @param find
* @param line
* @return
*/
public
static
StringBuilder tail(String filePath, String fileName,
boolean
find,
int
line, String charset) {
StringBuilder sb =
new
StringBuilder();
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
sb.append(FileTools.tail(file, find, line, charset));
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
sb;
}
/**
* tail 讀取文字檔案
*
* @param fullPath
* @param charset
* @param find
* @param line
* @return
*/
public
static
StringBuilder tail(String fullPath,
boolean
find,
int
line, String charset) {
StringBuilder sb =
new
StringBuilder();
try
{
File file =
new
File(fullPath);
sb.append(FileTools.tail(file, find, line, charset));
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
sb;
}
/**
* tail 讀取文字檔案
*
* @param file
* @param charset
* @param find
* @param line
* @return
*/
public
static
StringBuilder tail(File file,
boolean
find,
int
line, String charset) {
StringBuilder sb =
new
StringBuilder();
BufferedReader bufferReader =
null``;
if
(``null
== charset ||
""``.equals(charset)) {
charset =
"UTF-8"``;
}
try
{
if
(!file.exists() || file.isDirectory()) {
throw
new
FileNotFoundException();
}
String fullPath = file.getPath();
bufferReader =
new
BufferedReader(``new
InputStreamReader(``new
FileInputStream(fullPath), charset));
String temp;
for
(``int
i =
0``; (temp = bufferReader.readLine()) !=
null``; i++) {
if
(!find || line == i) {
sb.append(temp);
}
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
finally
{
if
(``null
!= bufferReader) {
try
{
bufferReader.close();
}
catch
(IOException ex) {
j2log(``null``,
null``, ex);
}
}
}
return
sb;
}
/**
* sed 讀取文字檔案
*
* @param filePath
* @param fileName
* @param charset
* @return
*/
public
static
List<String> sed(String filePath, String fileName, String charset) {
List<String> list =
new
ArrayList();
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
list.addAll(FileTools.sed(file, charset));
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
list;
}
/**
* sed 讀取文字檔案
*
* @param fullPath
* @param charset
* @return
*/
public
static
List<String> sed(String fullPath, String charset) {
List<String> list =
new
ArrayList();
try
{
File file =
new
File(fullPath);
list.addAll(FileTools.sed(file, charset));
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
list;
}
/**
* sed 讀取文字檔案
*
* @param file
* @param charset
* @return
*/
public
static
List<String> sed(File file, String charset) {
List<String> list =
new
ArrayList();
BufferedReader bufferReader =
null``;
if
(``null
== charset ||
""``.equals(charset)) {
charset =
"UTF-8"``;
}
try
{
if
(!file.exists() || file.isDirectory()) {
throw
new
FileNotFoundException();
}
String fullPath = file.getPath();
bufferReader =
new
BufferedReader(``new
InputStreamReader(``new
FileInputStream(fullPath), charset));
String temp;
for
(``int
i =
0``; (temp = bufferReader.readLine()) !=
null``; i++) {
list.add(temp);
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
finally
{
if
(``null
!= bufferReader) {
try
{
bufferReader.close();
}
catch
(IOException ex) {
j2log(``null``,
null``, ex);
}
}
}
return
list;
}
/**
* cat 讀取文字檔案
*
* @param filePath
* @param fileName
* @return
*/
public
static
byte``[] cat(String filePath, String fileName) {
byte``[] output = {};
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
output = FileTools.cat(file);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
output;
}
/**
* cat 讀取文字檔案
*
* @param fullPath
* @return
*/
public
static
byte``[] cat(String fullPath) {
byte``[] output = {};
try
{
File file =
new
File(fullPath);
output = FileTools.cat(file);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
output;
}
/**
* cat 讀取文字檔案
*
* @param file
* @return
*/
public
static
byte``[] cat(File file) {
InputStream in =
null``;
byte``[] output = {};
try
{
if
(!file.exists() || file.isDirectory()) {
throw
new
FileNotFoundException();
}
String fullPath = file.getPath();
long
length = du(file,
false``);
long
_2M =
2097152``;
byte``[] bytes =
new
byte``[(``int``) length];
in =
new
FileInputStream(fullPath);
for
(``int
count =
0``; count != -``1``;) {
if
(length >
16
* _2M) {
length =
4
* _2M;
}
else
if
(length >
8
* _2M) {
length =
2
* _2M;
}
else
if
(length >
4
* _2M) {
length = _2M;
}
else
if
(length >
2
* _2M) {
length = _2M /
2``;
}
else
if
(length > _2M) {
length = _2M /
4``;
}
else
{
length =
4096``;
}
bytes =
new
byte``[(``int``) length];
count = in.read(bytes);
output = concatArray(bytes, output);
length = in.available();
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
finally
{
if
(``null
!= in) {
try
{
in.close();
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
}
return
output;
}
/**
* 合併陣列
*
* @param old1
* @param old2
* @return
*/
private
static
byte``[] concatArray(``byte``[] old1,
byte``[] old2) {
byte``[] newArray =
new
byte``[old1.length + old2.length];
System.arraycopy(old1,
0``, newArray,
0``, old1.length);
System.arraycopy(old2,
0``, newArray, old1.length, old2.length);
return
newArray;
}
/**
* dd 寫入檔案fullPath內容content
*
* @param filePath
* @param fileName
* @param content
* @param isAppend
*/
public
static
void
dd(String filePath, String fileName,
byte``[] content,
boolean
isAppend) {
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
FileTools.dd(file, content, isAppend);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* dd 寫入檔案fullPath內容content
*
* @param fullPath
* @param content
* @param isAppend
*/
public
static
void
dd(String fullPath,
byte``[] content,
boolean
isAppend) {
try
{
File file =
new
File(fullPath);
FileTools.dd(file, content, isAppend);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* dd 寫入檔案fullPath內容content
*
* @param file
* @param content
* @param isAppend
*/
public
static
void
dd(File file,
byte``[] content,
boolean
isAppend) {
FileOutputStream fileOutputStream =
null``;
try
{
if
(!file.exists()) {
file.createNewFile();
}
fileOutputStream =
new
FileOutputStream(file, isAppend);
fileOutputStream.write(content);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
finally
{
try
{
if
(``null
!= fileOutputStream) {
fileOutputStream.close();
}
}
catch
(IOException ex) {
j2log(``null``,
null``, ex);
}
}
}
/**
* write 寫檔案內容content到檔案fullPath
*
* @param filePath
* @param fileName
* @param content
*/
public
static
void
write(String filePath, String fileName, String content) {
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
FileTools.write(file, content,
true``);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* write 寫檔案內容content到檔案fullPath
*
* @param fullPath
* @param content
*/
public
static
void
write(String fullPath, String content) {
try
{
File file =
new
File(fullPath);
FileTools.write(file, content,
true``);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* write 寫檔案內容content到檔案fullPath
*
* @param file
* @param content
*/
public
static
void
write(File file, String content) {
try
{
FileTools.write(file, content,
true``);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* write 寫(追加)檔案內容content到檔案fullPath
*
* @param filePath
* @param fileName
* @param content
* @param isAppend
*/
public
static
void
write(String filePath, String fileName, String content,
boolean
isAppend) {
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
FileTools.write(file, content, isAppend);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* write 寫(追加)檔案內容content到檔案fullPath
*
* @param fullPath
* @param content
* @param isAppend
*/
public
static
void
write(String fullPath, String content,
boolean
isAppend) {
try
{
File file =
new
File(fullPath);
FileTools.write(file, content, isAppend);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* write 寫(追加)檔案內容content到檔案fullPath
*
* @param file
* @param content
* @param isAppend
*/
public
static
void
write(File file, String content,
boolean
isAppend) {
FileWriter fileWriter =
null``;
try
{
if
(!file.exists()) {
file.createNewFile();
}
fileWriter =
new
FileWriter(file.getPath(), isAppend);
fileWriter.write(content);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
finally
{
if
(``null
!= fileWriter) {
try
{
fileWriter.close();
}
catch
(IOException ex) {
j2log(``null``,
null``, ex);
}
}
}
}
/**
* tail 新增檔案內容content到檔案的index位置
*
* @param filePath
* @param fileName
* @param content
* @param index
*/
public
static
void
tail(String filePath, String fileName, String content,
long
index) {
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
FileTools.tail(file, content, index);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* tail 新增檔案內容content到檔案的index位置
*
* @param fullPath
* @param content
* @param index
*/
public
static
void
tail(String fullPath, String content,
long
index) {
try
{
File file =
new
File(fullPath);
FileTools.tail(file, content, index);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* tail 新增檔案內容content到檔案的index位置
*
* @param file
* @param content
* @param index
*/
public
static
void
tail(File file, String content,
long
index) {
RandomAccessFile randomAccessFile =
null``;
try
{
if
(!file.exists()) {
file.createNewFile();
}
randomAccessFile =
new
RandomAccessFile(file.getPath(),
"rw"``);
randomAccessFile.seek(index);
randomAccessFile.writeBytes(content);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
finally
{
if
(``null
!= randomAccessFile) {
try
{
randomAccessFile.close();
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
}
}
/**
* mkdir 建立目錄
*
* @param filePath
* @param fileName
* @return
*/
public
static
File mkdir(String filePath, String fileName) {
File file =
null``;
try
{
String fullPath = combainPath(filePath, fileName);
file =
new
File(fullPath);
file = mkdir(file);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
file;
}
/**
* mkdir 建立目錄
*
* @param fullPath
* @return
*/
public
static
File mkdir(String fullPath) {
File file =
null``;
try
{
file =
new
File(fullPath);
file = mkdir(file);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
file;
}
/**
* mkdir 建立目錄
*
* @param file
* @return
*/
public
static
File mkdir(File file) {
try
{
if
(!file.exists()) {
file.mkdir();``//如果資料夾不存在則建立
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
file;
}
/**
* touch 建立檔案
*
* @param filePath
* @param fileName
*/
public
static
void
touch(String filePath, String fileName) {
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
touch(file);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* touch 建立檔案
*
* @param fullPath
*/
public
static
void
touch(String fullPath) {
try
{
File file =
new
File(fullPath);
touch(file);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* touch 建立檔案
*
* @param file
*/
public
static
void
touch(File file) {
try
{
if
(!file.exists()) {
file.createNewFile();``//如果檔案不存在則建立
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* rm 刪除檔案
*
* @param filePath
* @param fileName
*/
public
static
void
rm(String filePath, String fileName) {
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
rm(file);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* rm 刪除檔案
*
* @param fullPath
*/
public
static
void
rm(String fullPath) {
try
{
File file =
new
File(fullPath);
rm(file);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* rm 刪除檔案
*
* @param file
*/
public
static
void
rm(File file) {
try
{
if
(!file.exists()) {
throw
new
FileNotFoundException();
}
if
(file.isFile()) {
file.delete();
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* rmdir 刪除目錄
*
* @param filePath
* @param fileName
* @param loop
*/
public
static
void
rmdir(String filePath, String fileName,
boolean
loop) {
try
{
String fullPath = combainPath(filePath, fileName);
File dir =
new
File(fullPath);
rmdir(dir, loop);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* rmdir 刪除目錄
*
* @param fullPath
* @param loop
*/
public
static
void
rmdir(String fullPath,
boolean
loop) {
try
{
File dir =
new
File(fullPath);
rmdir(dir, loop);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* rmdir 刪除目錄
*
* @param dir
* @param loop
*/
public
static
void
rmdir(File dir,
boolean
loop) {
try
{
if
(!dir.exists()) {
throw
new
FileNotFoundException();
}
if
(dir.isDirectory()) {
File[] files = dir.listFiles();
int
length = files.length;
for
(``int
i =
0``; i < length && loop; i++) {
if
(files[i].isDirectory()) {
rmdir(files[i], loop);
}
else
{
rm(files[i]);
}
}
if
(loop || length ==
0``) {
dir.delete();
}
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
/**
* du 獲取檔案實際大小
*
* @param filePath
* @param fileName
* @param loop
* @return
*/
public
static
long
du(String filePath, String fileName,
boolean
loop) {
long
size =
0``;
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
size = du(file, loop);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
size;
}
/**
* du 獲取檔案實際大小
*
* @param filePath
* @param fileName
* @return
*/
public
static
long
du(String filePath, String fileName) {
long
size =
0``;
try
{
String fullPath = combainPath(filePath, fileName);
File file =
new
File(fullPath);
size = du(file,
false``);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
size;
}
/**
* du 獲取檔案實際大小
*
* @param fullPath
* @return
*/
public
static
long
du(String fullPath) {
long
size =
0``;
try
{
File file =
new
File(fullPath);
size = du(file,
false``);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
size;
}
/**
* du 獲取檔案實際大小
*
* @param file
* @return
*/
public
static
long
du(File file) {
long
size =
0``;
try
{
size = du(file,
false``);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
size;
}
/**
* du 獲取檔案實際大小
*
* @param fullPath
* @param loop
* @return
*/
public
static
long
du(String fullPath,
boolean
loop) {
long
size =
0``;
try
{
File file =
new
File(fullPath);
size = du(file, loop);
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
return
size;
}
/**
* du 獲取檔案實際大小
*
* @param file
* @param loop
* @return
*/
public
static
long
du(File file,
boolean
loop) {
FileChannel fileChannel =
null``;
long
size =
0``;
try
{
if
(!file.exists()) {
throw
new
FileNotFoundException();
}
if
(file.isFile()) {
FileInputStream fis =
new
FileInputStream(file);
fileChannel = fis.getChannel();
size = fileChannel.size();
}
else
if
(file.isDirectory()) {
File[] files = file.listFiles();
int
length = files.length;
for
(``int
i =
0``; i < length && loop; i++) {
if
(files[i].isDirectory()) {
du(files[i], loop);
}
else
{
size += du(files[i],
false``);
}
}
}
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
finally
{
if
(``null
!= fileChannel) {
try
{
fileChannel.close();
}
catch
(Exception ex) {
j2log(``null``,
null``, ex);
}
}
}
return
size;
}
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結