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. *[codility]Fish

    https://codility.com/demo/take-sample-test/fish 一开始习惯性使用单调栈,后来发现一个普通栈就可以了. #include <stack> us ...

  2. *[hackerrank]ACM ICPC Team

    https://www.hackerrank.com/contests/w6/challenges/acm-icpc-team 这道题在contest的时候数据量改小过,原来的数据量需要进行优化才能过 ...

  3. MVC 中与链接相关的辅助方法(Html.ActionLink,Html.RouteLink , Url.Action , Url.Content ,Url.RouteUrl)

    Html.ActionLink 与 Url.Action  1.两者者是根据给定的Controller,Action 生成链接, 但是Html.ActionLink 返回的是MvcHtmlString ...

  4. Intellij IDEA新建一个EJB工程(二)

    从博文:http://www.cnblogs.com/yangyquin/p/5328344.html 中可以知道如何利用Intellij IDEA建立一个EJB Module,还有新建一个测试Mod ...

  5. Topcoder 练习小记,Java 与 Python 分别实现。

    Topcoder上的一道题目,题目描述如下: Problem Statement      Byteland is a city with many skyscrapers, so it's a pe ...

  6. tcpdump抓SQL

    前言:假设如果有个服务器几十个链接突然达到上千个链接,show processlist,general_log,还有慢查询日志这些都不能用,你怎么把这些链接过来的SQL情况了解清楚,如果你觉得那些好用 ...

  7. UVa 11526 H(n)

    题意: long long H(int n){ long long res = 0; for( int i = 1; i <= n; i=i+1 ){ res = (res + n/i); } ...

  8. Drupal 7.31版本爆严重SQL注入漏洞

    今早有国外安全研究人员在Twitter上曝出了Drupal 7.31版本的最新SQL注入漏洞,并给出了利用测试的EXP代码. 在本地搭建Drupal7.31的环境,经过测试,发现该利用代码可成功执行并 ...

  9. 【转】零基础写Java知乎爬虫之进阶篇

    转自:脚本之家 说到爬虫,使用Java本身自带的URLConnection可以实现一些基本的抓取页面的功能,但是对于一些比较高级的功能,比如重定向的处理,HTML标记的去除,仅仅使用URLConnec ...

  10. js学习总结

    转自 http://blog.sina.com.cn/s/blog_75cf5f3201011csu.html 一: 关于基本数据类型在栈内存和堆内存中的关系 基本数据对于栈内存和堆内存是可以复制的, ...