判断外存储设备是否可用:
public static boolean sdAvailable() {
return Environment.MEDIA_MOUNTED_READ_ONLY.equals(Environment.getExternalStorageState()) || Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
}
/** 从assets 文件夹中读取文本数据 */
public static String getTextFromAssets(final Context context, String fileName) {
String result = "";
try {
InputStream in = context.getResources().getAssets().open(fileName);
// 获取文件的字节数
int lenght = in.available();
// 创建byte数组
byte[] buffer = new byte[lenght];
// 将文件中的数据读到byte数组中
in.read(buffer);
result = EncodingUtils.getString(buffer, "UTF-8");
in.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/** 从assets 文件夹中读取图片 */
public static Drawable loadImageFromAsserts(final Context ctx, String fileName) {
try {
InputStream is = ctx.getResources().getAssets().open(fileName);
return Drawable.createFromStream(is, null);
} catch (IOException e) {
if (e != null) {
e.printStackTrace();
}
} catch (OutOfMemoryError e) {
if (e != null) {
e.printStackTrace();
}
} catch (Exception e) {
if (e != null) {
e.printStackTrace();
}
}
return null;
}
从Assert目录复制文件到本地:
public static boolean copyFileFromAsset(Context mcontext,String destDir,String assetFile){
boolean copyok=false;
File fdest=new File(destDir);
if(!fdest.exists())
fdest.mkdirs();
InputStream is=null;
FileOutputStream fos=null;
byte[] buf=new byte[1024];
int readSize = 0;
try {
is = mcontext.getResources().getAssets().open(assetFile);
fos=new FileOutputStream(fdest);
while((readSize = is.read(buf)) > 0){
fos.write(buf, 0, readSize);
}
fos.flush();
copyok=true;
} catch (IOException e) {
copyok=false;
e.printStackTrace();
} finally{
if(is!=null)
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
if(fos!=null)
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return copyok;
}
//文件排序:
public static void sortFilesBySize(File[] files) {
Arrays.sort(files, new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
if (f1.isDirectory() && f2.isDirectory() || f1.isFile() && f2.isFile())
return Long.valueOf(f2.length()).compareTo(f1.length());
else if (f1.isDirectory() && f2.isFile())
return -1;
else
return 1;
}
});
}
public static void sortFilesByName(File[] files) {
Arrays.sort(files, new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
if (f1.isDirectory() && f2.isDirectory() || f1.isFile() && f2.isFile())
return f1.getName().trim().compareToIgnoreCase(f2.getName().trim());
else if (f1.isDirectory() && f2.isFile())
return -1;
else
return 1;
}
});
}
删除指定文件目录,指定文件类型的文件
public static void deleteDir(File f) {
if (f.exists() && f.isDirectory()) {
for (File file : f.listFiles()) {
if (file.isDirectory())
deleteDir(file);
file.delete();
}
f.delete();
}
}
public static void deleteDirAllMedias(File f) {
if (f != null && f.exists() && f.isDirectory()) {
File[] files = f.listFiles();
if (files != null) {
for (File file : files) {
if (file.exists() && !file.isDirectory() && file.canRead() && Media.isVideoOrAudio(file))
file.delete();
}
}
files = f.listFiles();
if (files == null || files.length == 0)
f.delete();
}
}
获取文件名称:
public static String getFileNameNoEx(String filename) {
if ((filename != null) && (filename.length() > 0)) {
int dot = filename.lastIndexOf('.');
if ((dot > -1) && (dot < (filename.length()))) {
return filename.substring(0, dot);
}
}
return filename;
}
public static String getUrlFileNameNoEx(String url) {
int slashIndex = url.lastIndexOf('/');
int dotIndex = url.lastIndexOf('.');
String filenameWithoutExtension;
if (dotIndex == -1) {
filenameWithoutExtension = url.substring(slashIndex + 1);
} else {
filenameWithoutExtension = url.substring(slashIndex + 1, dotIndex);
}
return filenameWithoutExtension;
}
读取指定文件形成字节流:
public static final byte[] load(File paramFile) {
try {
byte[] arrayOfByte = load(new FileInputStream(paramFile));
return arrayOfByte;
} catch (Exception localException) {
Debug.warning(localException);
}
return new byte[0];
}
public static final byte[] load(FileInputStream paramFileInputStream) {
byte[] arrayOfByte = new byte[524288];
try {
ByteArrayOutputStream localByteArrayOutputStream = new ByteArrayOutputStream();
int j;
for (int i = paramFileInputStream.read(arrayOfByte);; i = j) {
if (i <= 0) {
paramFileInputStream.close();
return localByteArrayOutputStream.toByteArray();
}
localByteArrayOutputStream.write(arrayOfByte, 0, i);
j = paramFileInputStream.read(arrayOfByte);
}
} catch (Exception localException) {
Debug.warning(localException);
}
return new byte[0];
}
读取指定文档中内容:
public static String readFileContent(File paramFile) throws IOException {
if (paramFile == null)
return null;
int i = (int) paramFile.length();
byte[] arrayOfByte = new byte[i];
FileInputStream localFileInputStream = new FileInputStream(paramFile);
int j = localFileInputStream.read(arrayOfByte);
String str = null;
if (j == i)
str = new String(arrayOfByte);
localFileInputStream.close();
return str;
}
public static String readFileContent(File f){
if(f==null || !f.exists() || !f.isFile())
return null;
StringBuilder buf=new StringBuilder();
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader(f));
String tmp = null;
while ((tmp = reader.readLine()) != null) {
buf.append(tmp);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
closeSilently(reader);
}
return buf.toString();
}
public static void closeSilently(Closeable closeable) {
if (closeable != null) {
try {
closeable.close();
} catch (Exception ignored) {
}
}
}
其它形式文件读取
/**
* 从assets目录读取文件
* @param fileName
* @return
*/
public String getFromAsset(String fileName,Context mcontext){
String result=null;
final String ENCODING="UTF-8";
try{
InputStream in = mcontext.getResources().getAssets().open(fileName); //从Assets中的文件获取输入流
int length = in.available(); //获取文件的字节数
byte [] buffer = new byte[length]; //创建byte数组
in.read(buffer); //将文件中的数据读取到byte数组中
result = EncodingUtils.getString(buffer, ENCODING); //将byte数组转换成指定格式的字符串
}
catch(IOException e){
e.printStackTrace(); //捕获异常并打印
}
catch(Exception e){
e.printStackTrace();
}
return result;
}
/**
* 从resource中的raw文件夹中获取文件并读取数据
* @param fileName
* @return
*/
public String getFromRaw(String fileName,Context mcontext){
String result=null;
final String ENCODING="UTF-8";
try{
InputStream in = mcontext.getResources().openRawResource(R.raw.test1); //从Resources中raw中的文件获取输入流
int length = in.available(); //获取文件的字节数
byte [] buffer = new byte[length]; //创建byte数组
in.read(buffer); //将文件中的数据读取到byte数组中
result = EncodingUtils.getString(buffer, ENCODING); //将byte数组转换成指定格式的字符串
in.close(); //关闭输入流
}
catch(IOException e){
e.printStackTrace(); //捕获异常并打印
}
catch(Exception e){
e.printStackTrace();
}
return result;
}
/**
* 读取项目内部文件
* @param fileName
* @param mcontext
* @return
*/
public String readFileData(String fileName,Context mcontext){
String result=null;
final String ENCODING="UTF-8";
try{
FileInputStream fin = mcontext.openFileInput(fileName);//获得FileInputStream对象
int length = fin.available();//获取文件长度
byte [] buffer = new byte[length];//创建byte数组用于读入数据
fin.read(buffer);//将文件内容读入到byte数组中
result = EncodingUtils.getString(buffer, ENCODING);//将byte数组转换成指定格式的字符串
fin.close(); //关闭文件输入流
}
catch(Exception e){
e.printStackTrace();//捕获异常并打印
}
return result;//返回读到的数据字符串
}
/**
* 向内部文件写入数据
* @param filename
* @param msg
* @param mcontext
*/
public void writeData(String filename,String msg,Context mcontext){
try {
FileOutputStream fos=mcontext.openFileOutput(filename, Context.MODE_PRIVATE);
byte[] buf=msg.getBytes();
fos.write(buf);
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
清空指定文档中的内容:
public static void delFileContent(File paramFile) throws IOException {
if (paramFile == null)
return;
FileWriter localFileWriter = new FileWriter(paramFile, false);
localFileWriter.write("");
localFileWriter.close();
}
/**
* 计算文件或者文件夹的大小 ,单位 MB
* @param file 要计算的文件或者文件夹 , 类型:java.io.File
* @return 大小,单位:MB
*/
public long getSize(File file) {
long dirSize=0l,fileSize=0l;
//判断文件是否存在
if (file.exists()) {
//如果是目录则递归计算其内容的总大小,如果是文件则直接返回其大小
if (!file.isFile()) {
//获取文件大小
File[] fl = file.listFiles();
for (File f : fl)
dirSize += getSize(f);
return dirSize;
} else {
fileSize = file.length() / 1024 ;
// System.out.println(file.getName() + " : " + fileSize + "MB");
return fileSize;
}
} else {
// System.out.println("文件或者文件夹不存在,请检查路径是否正确!");
return 0l;
}
/**
* 文件及文件夹的复制
*
* @param src
* @param des
* @return
*/
public static boolean copyFile(String src, String des) {
File in = new File(src);
File out = new File(des);
if (!in.exists()) {
System.out.println(in.getAbsolutePath() + "源文件路径错误!!!");
return false;
} else {
System.out.println("源文件路径" + in.getAbsolutePath());
System.out.println("目标路径" + out.getAbsolutePath());
}
if (!out.exists())
out.mkdirs();
File[] file = in.listFiles();
FileInputStream fin = null;
FileOutputStream fout = null;
for (int i = 0; i < file.length; i++) {
if (file[i].isFile()) {
try {
fin = new FileInputStream(file[i]);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println("in.name=" + file[i].getName());
try {
fout = new FileOutputStream(new File(des + File.separator
+ file[i].getName()));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.out.println(des);
int c;
byte[] b = new byte[1024];
try {
while ((c = fin.read(b)) != -1) {
fout.write(b, 0, c);
System.out.println("复制文件中!");
}
fin.close();
fout.flush();
fout.close();
System.out.println("复制完毕!");
} catch (IOException e) {
e.printStackTrace();
}
} else
copyFile(src + File.separator + file[i].getName(), des
+ File.separator + file[i].getName());
}
return false;
}
/**
* 文件夹的移动
* @param src
* @param dest
* @return
*/
private static boolean moveFolder(String src, String dest) {
File srcFolder = new File(src);
File destFolder = new File(dest);
if(!srcFolder.exists()){
return false;
}else{
if(!destFolder.exists())
destFolder.mkdirs();
if(srcFolder.isFile()){
srcFolder.renameTo(new File( dest+srcFolder.getName()));
}
else if(srcFolder.isDirectory()){
File[] files=srcFolder.listFiles();
for(int i=0;i<files.length;i++){
if(files[i].isFile())
files[i].renameTo(new File(dest+File.separator+files[i].getName()));
else
moveFolder(src+File.separator+files[i].getName(),
dest+File.separator+files[i].getName());
}
}
}
return true;
}
高效读取写入操作
boolean saveFile(Response rsp,File fdest){
InputStream in = rsp.body().byteStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
BufferedWriter writer = null;
boolean success = false;
final int writeLimitSize = 20;
try {
writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fdest)));
} catch (FileNotFoundException e1) {
e1.printStackTrace();
return success;
}
String line ;
try {
while((line = reader.readLine()) != null) {
// Pattern p = Pattern.compile("\s*| |
|
");
// Matcher m = p.matcher(line);
// String dest = m.replaceAll("");
if(0==line.length() || (line.startsWith(" ") && line.length() < writeLimitSize) || line.startsWith("
")|| line.startsWith("
"))
continue;
if(line.length() > writeLimitSize){
writer.write(line);
writer.newLine();
}
}
writer.flush();
success = true;
} catch (IOException e) {
e.printStackTrace();
}finally{
if(null!=writer){
try {
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return success;
}
/**
* 获取文件属性
* @param path
* @param filename
*/
public static void getFile(String path,String filename){
File f=new File(path, filename);
if(f.exists()){
System.out.println("file abspath "+f.getAbsolutePath()+'
'+"file reable "+f.getParentFile()+'
'
+"file standar "+f.isFile()+'
'+"file length "+f.length()+'
'+"file modify time "+new Date(f.lastModified())+'
'
+"file can read "+f.canRead()+'
'+"file can write "
+f.canWrite()+'
'+"file whether hidden "+f.isHidden());
}else{
System.out.println("file not exist!");
}
}
/**
* 以二叉树形式展示文件名字,(windows文件管理形式)
* @param file
* @param level
*/
private void treeName(File file,int level){
String space= " ";
for(int t=0;t<level;t++){
space+=" ";
}
File[] files=file.listFiles();
for(int i=0;i<files.length;i++){
System.out.println(space+files[i].getName());
if(files[i].isDirectory()){
treeName(files[i],level+1);
}
}
}
/**
* 将特定文本信息写入项目所在的根目录下
* @throws IOException
*/
public void wrteToProjectFile() throws IOException{
String str="write dir";
String filename=System.getProperty("user.dir")+"/src/com/agency/model2/temp.txt";
File f=new File(filename);
FileWriter fw=new FileWriter(f);
fw.write(str);
fw.flush();
fw.close();
}
//java中.properties文件读取方法
Java中还有一种读取方法通过import java.util.Properties;类来处理
具体方法如下:
创建date.properties文件:
内容如下:
// num1=10
// num2=20
// num1=30
// 注意!在=两边不能用空格否则回报异常,
// 为方便使用接下来创建一个封装类Myproperties
class Myproperties {
//保持一个实例化对象
private static Properties pro=new Properties();
private Myproperties(){}
//当类首次被加载时执行
static{
try {//加载配置文件信息到内存
pro.load(Myproperties.class.getClassLoader().getResourceAsStream("config/date.properties"));
} catch (IOException e) {
e.printStackTrace();
}
}
//获取文件内的数据
public static String getProperty(String key) {
return pro.getProperty(key);
}
}
public void readProperty(String filename){
//配置文件位置与操作类不在同一包(同一目录)下文件加载
BufferedReader br = new BufferedReader(new InputStreamReader(
ReadTxt.class.getClassLoader().getResourceAsStream(filename)));
//配置文件位置与操作类在同一包(同一个目录)下面文件加载方式
/*BufferedReader br = new BufferedReader(new InputStreamReader(
ReadTxt.class.getResourceAsStream(filename))); */
String line=null;
int row=0;
int col=0;
try {
line = br.readLine();
row = Integer.parseInt(line.trim());
line = br.readLine();
col = Integer.parseInt(line.trim());
} catch (IOException e) {
e.printStackTrace();
}
System.out.println(" row= "+row+" col= "+col);
}
//读取测试
public static void main(String[] args){
System.out.println(Myproperties.getProperty("num1"));
System.out.println(Myproperties.getProperty("num2"));
System.out.println(Myproperties.getProperty("num3"));
}