package com.dotcool.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.dotcool.model.Book;
import android.util.Log;
/**
* 文件操作的一些工具,如计算文件的大小...
* @author 002666(lee)
* date 2012/4/25
*/
public class BookUtil
{
/**
* 获得文件名称(不包含路径和后缀名)
* @param path 文件所在目录
* @param fileName 文件名(包含文件路径)
* @return 返回结果
*/
public static String getBookName(String path,String fileName)
{
String tempStr = fileName.replaceAll(path+"/", "");
String replaceStr = "";
Pattern p = Pattern.compile("\\.{1}[A-Za-z]+$");
Matcher m = p.matcher(tempStr);
if(m.find())
replaceStr = m.group();
return tempStr.replaceAll(replaceStr, "");
}
/**
* 获得文件的格式(不包含路径和后缀名)
* @param path 文件所在目录
* @param fileName 文件名(包含文件路径)
* @return 返回结果
*/
public static String getBookFormat(String fileName)
{
String tempStr = "";
Pattern p = Pattern.compile("\\.{1}[A-Za-z]+$");
Matcher m = p.matcher(fileName);
if(m.find())
tempStr = m.group();
return tempStr.replace(".", "");
}
/**
* 计算指定路径的文件的大小
* @param fileName 文件名(包含文件路径)
* @return 返回计算的结果
*/
public static String getBookSize(String fileName)
{
File file = new File(fileName);
long fileSize = file.length()/1024;
if(fileSize<1024)
{
return fileSize+" KB";
}
else
{
double tempSize = (double)fileSize/1024;
BigDecimal bd = new BigDecimal(tempSize);
return bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue()+" M";
}
}
/**
* 得到书籍作者
* @param fileName 文件名(包含文件路径)
* @return 返回书籍作者名
*/
public static String getBookAuthor(String fileName)
{
// 作者:{1}.+\n$
String bookAuthor = "未知";
try
{
RandomAccessFile raf = new RandomAccessFile(fileName, "rw");
String temp = raf.readLine().toString();
Log.i("内容",temp+"aaa");
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return bookAuthor;
}
/**
* 判断书架中是否已经存在此书
* @param bookList 书架中的全部书籍
* @param fileName 文件名(包含文件路径)
* @return 返回一个boolean型值 true为存在(不可以加入书架) false为不存在(可以加入书架)
*/
public static boolean isExist(ArrayList<Book> bookList,String fileName)
{
boolean isExist = false;
for(int i=0;i<bookList.size();i++)
{
if(fileName.equals(bookList.get(i).getBookPath()))
{
isExist = true;
break;
}
}
System.out.println(isExist+"2");
return isExist;
}
public List<Book> getLatelyBookList()
{
return null;
}
/**
* 得到书籍的内容
* @param path 书籍路径
* @return
*/
public static StringBuilder getBookContent(String path)
{
StringBuilder bookContent = new StringBuilder();
File file = new File(path);
try
{
FileInputStream is = new FileInputStream(file);
InputStreamReader streamReader = new InputStreamReader(is,"gb2312");
BufferedReader br = new BufferedReader(streamReader);
String temp = "";
while(((temp=br.readLine())!=null))
{
bookContent.append(temp);
}
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
} catch (FileNotFoundException e)
{
e.printStackTrace();
} catch (IOException e)
{
e.printStackTrace();
}
return null;
}
/**
* 获得电子书的编码方式
* @param fileName 文件名,包含路径
* @return 返回结果
*/
public static String getCharsetName(String fileName)
{
InputStream inputStream;
String code="";
code="gb2312";
try
{
inputStream = new FileInputStream(fileName);
byte []head=new byte[3];
inputStream.read(head);
if (head[0] == -1 && head[1] == -2 )
code = "UTF-16";
if (head[0] == -2 && head[1] == -1 )
code = "Unicode";
if(head[0]==-17 && head[1]==-69 && head[2] ==-65)
code = "UTF-8";
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return code;
}
}