1 package com.folioreader.util;
3 import android.content.Context;
4 import android.content.res.AssetManager;
5 import android.content.res.Resources;
6 import android.os.Environment;
7 import android.util.Log;
9 import com.folioreader.Constants;
10 import com.folioreader.ui.folio.activity.FolioActivity;
13 import java.io.FileOutputStream;
14 import java.io.IOException;
15 import java.io.InputStream;
16 import java.io.OutputStream;
19 * Created by Mahavir on 12/15/16.
22 public class FileUtil {
23 private static final String TAG = FileUtil.class.getSimpleName();
24 private static final String FOLIO_READER_ROOT = "/folioreader/";
26 public static String saveEpubFileAndLoadLazyBook(final Context context, FolioActivity.EpubSourceType epubSourceType, String epubFilePath, int epubRawId, String epubFileName) {
28 InputStream epubInputStream;
29 boolean isFolderAvailable;
31 isFolderAvailable = isFolderAvailable(epubFileName);
32 filePath = getFolioEpubFilePath(epubSourceType, epubFilePath, epubFileName);
34 if (!isFolderAvailable) {
35 if (epubSourceType.equals(FolioActivity.EpubSourceType.RAW)) {
36 epubInputStream = context.getResources().openRawResource(epubRawId);
37 saveTempEpubFile(filePath, epubFileName, epubInputStream);
38 } else if (epubSourceType.equals(FolioActivity.EpubSourceType.ASSETS)) {
39 AssetManager assetManager = context.getAssets();
40 epubFilePath = epubFilePath.replaceAll(Constants.ASSET, "");
41 epubInputStream = assetManager.open(epubFilePath);
42 saveTempEpubFile(filePath, epubFileName, epubInputStream);
44 filePath = epubFilePath;
48 } catch (IOException e) {
49 Log.d(TAG, e.getMessage());
55 public static String getFolioEpubFolderPath(String epubFileName) {
56 return Environment.getExternalStorageDirectory().getAbsolutePath()
57 + "/" + FOLIO_READER_ROOT + "/" + epubFileName;
60 public static String getFolioEpubFilePath(FolioActivity.EpubSourceType sourceType, String epubFilePath, String epubFileName) {
61 if (FolioActivity.EpubSourceType.SD_CARD.equals(sourceType)) {
64 return getFolioEpubFolderPath(epubFileName) + "/" + epubFileName + ".epub";
68 private static boolean isFolderAvailable(String epubFileName) {
69 File file = new File(getFolioEpubFolderPath(epubFileName));
70 return file.isDirectory();
73 public static String getEpubFilename(Context context, FolioActivity.EpubSourceType epubSourceType,
74 String epubFilePath, int epubRawId) {
76 if (epubSourceType.equals(FolioActivity.EpubSourceType.RAW)) {
77 Resources res = context.getResources();
78 epubFileName = res.getResourceEntryName(epubRawId);
80 String[] temp = epubFilePath.split("/");
81 epubFileName = temp[temp.length - 1];
82 int fileMaxIndex = epubFileName.length();
83 epubFileName = epubFileName.substring(0, fileMaxIndex - 5);
89 public static Boolean saveTempEpubFile(String filePath, String fileName, InputStream inputStream) {
90 OutputStream outputStream = null;
91 File file = new File(filePath);
94 File folder = new File(getFolioEpubFolderPath(fileName));
97 outputStream = new FileOutputStream(file);
99 byte[] bytes = new byte[inputStream.available()];
101 while ((read = inputStream.read(bytes)) != -1) {
102 outputStream.write(bytes, 0, read);
108 outputStream.close();
109 } catch (IOException e) {
110 Log.d(TAG, e.getMessage());