Android手机自带内部存储路径的获取 原文地址:http://my.oschina.net/liucundong/blog/288183

直接贴代码:

 public static String getExternalSdCardPath() {

        if (SDCardUtils.isSDCardEnable()) {
File sdCardFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
return sdCardFile.getAbsolutePath();
} String path = null; File sdCardFile = null; ArrayList<String> devMountList = getDevMountList(); for (String devMount : devMountList) {
File file = new File(devMount); if (file.isDirectory() && file.canWrite()) {
path = file.getAbsolutePath(); String timeStamp = new SimpleDateFormat("ddMMyyyy_HHmmss").format(new Date());
File testWritable = new File(path, "test_" + timeStamp); if (testWritable.mkdirs()) {
testWritable.delete();
} else {
path = null;
}
}
} if (path != null) {
sdCardFile = new File(path);
return sdCardFile.getAbsolutePath();
} return null;
}
//读文件
public static String readFile(String fileName) { try {
File file = new File(fileName); FileInputStream fis = new FileInputStream(file); int length = fis.available(); byte [] buffer = new byte[length];
fis.read(buffer); String res = EncodingUtils.getString(buffer, "UTF-8"); fis.close();
return res;
}
catch (Exception ex)
{
ex.printStackTrace();
return null;
} } private static ArrayList<String> getDevMountList() {
String[] toSearch = readFile("/etc/vold.fstab").split(" ");
ArrayList<String> out = new ArrayList<String>();
for (int i = 0; i < toSearch.length; i++) {
if (toSearch[i].contains("dev_mount")) {
if (new File(toSearch[i + 2]).exists()) {
out.add(toSearch[i + 2]);
}
}
}
return out;
}

取得了外部sd卡的路径,就可以把日志文件写到外部sd卡了。日志类非常简单,就一个方法,自己debug的时候用,把结果输出出来。

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.os.Environment; /**
* 日志打印类,提供了一个开关来决定是否打印日志
*/
public class Logger
{
private final static SimpleDateFormat DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static final SimpleDateFormat PATHFORMATE =new SimpleDateFormat("yyyyMMdd");
private static final SimpleDateFormat PATHFORMATE1 = new SimpleDateFormat("HH");
private static boolean IsRecord=true;//是否记录日志 //存储卡目录和手机内部目录
private static final String ExternalStorePath = FileUtil.getExternalSdCardPath()+"nanbeiyoulog"
+File.separator+PATHFORMATE.format(new Date())+File.separator;
private static final String FileName = PATHFORMATE1.format(new Date())+".txt"; public static void d(String tag,String msg)
{
if(IsRecord)
{
try {
SaveToSD(tag,msg);
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
} private static void SaveToSD(String tag,String msg)
{
try{
File path = new File(ExternalStorePath);
if(!path.exists())
{
path.mkdirs();
}
File mLogFile = new File(ExternalStorePath+FileName);
if(!mLogFile.exists())
{
mLogFile.createNewFile();
} StringBuffer sb = new StringBuffer();
sb.append(DATEFORMAT.format(new Date()));
sb.append(": ");
sb.append("DEBUG");
sb.append(": ");
sb.append(tag);
sb.append(": ");
sb.append(msg);
sb.append("\n");
RandomAccessFile raf = null;
try
{
raf = new RandomAccessFile(mLogFile, "rw");
raf.seek(mLogFile.length());
raf.write(sb.toString().getBytes("UTF-8"));
}
catch (UnsupportedEncodingException e)
{
e.printStackTrace(); }
catch (IOException e)
{
e.printStackTrace(); }
finally
{
if(raf != null)
{
try
{
raf.close();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
} }

android Loger日志类(获取内置sd卡)的更多相关文章

  1. Android开发获取多个存储空间的路径(内置SD卡以及外置SD卡)

    Android开发中经常会遇到多存储空间的问题,包括内置存储路径以及外置SD卡,而且有的时候会有多张外置SD卡,此时就需要获取不同的SD卡路径,然后根据需要来写入或者读出文件. 此处给出常用的SD卡工 ...

  2. 关于手机的内置SD卡与外置SD卡

    对于安卓2.3的系统来说,Environment.getExternalStorageDirectory()获取的目录是内置SD卡还是外置SD卡是无法保证的, 和手机厂商的修改有关,只能通过Envir ...

  3. 把外置sd卡映射为内置sd卡地一个目录

    教程:1.已root机器运行re浏览器2.在/sdcard卡上创建目录sd-ext3.找到/etc/rc.local,长按选编辑4.拉到文件最后,在最后一行exit 0前行添加:     (sleep ...

  4. android获取内置和外置SD卡路径 - z

    本文将介绍Android真机环境下如何获取内置和外置SD卡路径. 测试环境:三星Note3,其他手机待测试... 所需权限(AndroidManifest.xml文件里) <uses-permi ...

  5. android4.0 中关于内外置sd卡的获取及读写权限问题

    from://http://blog.chinaunix.net/uid-26727976-id-3146895.html 在2.x的版本中,在manifest中配置的权限android.permis ...

  6. Android开发调试日志工具类[支持保存到SD卡]

    直接上代码: package com.example.callstatus; import java.io.File; import java.io.FileWriter; import java.i ...

  7. Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...

  8. Android设备网络、屏幕尺寸、SD卡、本地IP、存储空间等信息获取工具类

    Android设备网络.屏幕尺寸.SD卡.本地IP.存储空间.服务.进程.应用包名等信息获取的整合工具类. package com.qiyu.ddb.util; import android.anno ...

  9. day28 面向对象:反射,内置函数,类的内置方法

    面向对象进阶博客地址链接: http://www.cnblogs.com/Eva-J/articles/7351812.html 复习昨日内容: # 包 # 开发规范 # # hashlib # 登录 ...

随机推荐

  1. asp.net如何设置数据库连接池的数量

    http://www.cnblogs.com/wbcms/archive/2008/10/11/1308725.html 可以使用一组名称-值对以链接字符串的形式配置链接池.例如,可以配置池是否有效( ...

  2. Java学习笔记之:Java流程控制

    一.介绍 Java流程控制包括顺序控制.条件控制和循环控制. 顺序控制,就是从头到尾依次执行每条语句操作.条件控制,基于条件选择执行语句,比方说,如果条件成立,则执行操作A,或者如果条件成立,则执行操 ...

  3. nslookup工具的使用方法

    配置好DNS服务器,添加了相应的记录之后,只要IP地址保持不变,一般情况下我们就不再需要去维护DNS的数据文件了.不过在确认域名解释正常之前我们最好是测试一下所有的配置是否正常.许多人会简单地使用pi ...

  4. IDEA使用的点点滴滴

    查找一个类可以使用快捷键Ctrl + N 那么怎么看这个类中有哪些属性,哪些方法,就像Eclipse中的outline功能呢? 如查看NIO中的Buffer类,Ctrl + N-->

  5. 转TransactionProxyFactoryBean代理事务

    <?xml version="1.0" encoding="GBK"?> <!-- 指定Spring配置文件的DTD信息 --> < ...

  6. iOSTab bar

    http://www.apkbus.com/android-130504-1-1.html #import #import "FirstViewController.h"#impo ...

  7. JAVA中获取项目文件路径

    在java中获得文件的路径在我们做上传文件操作时是不可避免的. web 上运行 1:this.getClass().getClassLoader().getResource("/" ...

  8. PHPnow 升级后 PHP不支持GD、MySQL

    来自http://tunps.com/php-unsupport-gd-and-mysql-after-upgrade-phpnow 最近磁盘格式化误操作后,最近两天都在忙于数据恢复,现在才恢复正常. ...

  9. POJ 2446 Chessboard (二分图匹配)

    题意 在一个N*M的矩形里,用1*2的骨牌去覆盖该矩形,每个骨牌只能覆盖相邻的两个格子,问是否能把每个格子都盖住.PS:有K个孔不用覆盖. 思路 容易发现,棋盘上坐标和为奇数的点只会和坐标和为偶数的点 ...

  10. 纯CSS3带动画效果导航菜单

    随着互联网的发展,网页能表现的东西越来越多.由最开始单纯的文字和链接构成的网页,到后来的表格布局,再到div+css模式,现在发展到了html+css3.网页能表达的东西越来越多,css3兴起已经很多 ...