понедельник, 14 ноября 2011 г.

Java Class для работы с файлами

Надоело мне постоянно дублировать методы чтения записи файлов из проекта в проект, да и выглядит такой код монтрообразно. Решил себе для будущих проектов облегчить задачку и написать класс, в котором буду собирать самые часто используемые  методы работы с файлами и не только. Код выглядит на много читабельней после переписывания одного  маленького проекта с моим классом. Может кому то еще пригодится....

/*
 * MyLib by silentlexx v.0.1
 *
 * Коллекция методов работы с файлами и т.п.
 * Этот "велосипед" надо что б спрятать с глаз далой
 * все эти try{ ... } catch {}, (new File())... и т.д.
 * для повышение читабельности кода.
 *
 * Нехотите? Неиспользуйте!
 */

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;

public class MyLib {

public final static String BR = "\n";

public static String ListToString(List list) {
StringBuilder sb = new StringBuilder();
int size = list.size();
for (int i = 0; i < size; i++) {
sb.append(list.get(i));
if (i < size - 1)
sb.append(BR);
}
return sb.toString();
}

public static String readString(String path) {
return ListToString(readList(path));
}

public static String readLineAt(String path, int n) {
List list = readList(path);
if (n > list.size() || n < 1) {
return null;
} else {
return list.get(n - 1);
}
}

public static List readList(String path) {
List list = new ArrayList();
BufferedReader input = null;
try {
input = new BufferedReader(new InputStreamReader(
new FileInputStream(new File(path)), "UTF-8"));
} catch (UnsupportedEncodingException e) {
} catch (FileNotFoundException e) {
}

try {
String line = null;
while ((line = input.readLine()) != null) {

try {
list.add(line);
} catch (NullPointerException e) {
}
}

} catch (IOException e) {
} catch (NullPointerException e) {
}

try {
input.close();
} catch (IOException e) {
}
return list;
}

public static void writeList(String path, List list) {
writeString(path, ListToString(list));
}

public static void writeString(String path, String str) {
OutputStream out = null;
try {
out = new FileOutputStream(path);
out.write(str.getBytes());
out.close();
} catch (FileNotFoundException e) {
} catch (SecurityException e) {
} catch (java.io.IOException e) {
}
;
}

public static String getSdDir() {
return android.os.Environment.getExternalStorageDirectory().toString();
}

public static String geAppDir(Context p) {
return p.getFilesDir().toString();
}

public static boolean isFile(String path) {
return (new File(path)).isFile();
}

public static boolean isDir(String path) {
return (new File(path)).isDirectory();
}

public static boolean mkDir(String path) {
return (new File(path)).mkdir();
}

public static boolean isExists(String path) {
return (new File(path)).exists();
}

public static boolean rmFile(String path) {
return (new File(path)).delete();
}

public static boolean mkFile(String path) {
try {
return (new File(path)).createNewFile();
} catch (IOException e) {
return false;
}
}

public static String getAppVer(Context c) {
PackageInfo pi;
try {
pi = c.getPackageManager().getPackageInfo(c.getPackageName(), 0);
} catch (NameNotFoundException e) {
return "unknown";
}
return pi.versionName;
}

public static void rmDir(String path) {
rmDir(new File(path));
}

public static void rmDir(File file) {
if (file.isDirectory()) {
if (file.list().length == 0) {
file.delete();
} else {
String files[] = file.list();
for (String temp : files) {
File fileDelete = new File(file, temp);
rmDir(fileDelete);
}
if (file.list().length == 0) {
try {
file.delete();
} catch (NullPointerException e) {
}
}
}
} else {
try {
file.delete();
} catch (NullPointerException e) {
}
}
}

}

Комментариев нет: