- 浏览: 16942 次
- 性别:
最新评论
一、输出流Log
android.util.Log常用的方法有以下5个: 根据首字母对应为:VERBOSE、DEBUG、INFO、 WARN、ERROR
1、Log.v()
Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");
2、Log.d()
Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.
3、Log.i()
Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息
4、Log.w()
Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
5、Log.e()
Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了
log输出流常用于寻找程序的错误,有时候在程序开发时,经常会碰到一些莫名其妙的错误,很难判断到底是哪里出现了问题.
那么,这个时候就可以使用log输出流来帮助寻找错误代码块.
看下面这个例子:
class QueryListener implements OnClickListener{ @Override public void onClick(View v) { //这里使用log.d()来进行debug调试,当执行到这段代码的时候,log里面没有输出,则说明了程序问题出在这一段代码块上,从而提高效率
Log.d("myDebug", "myFirstDebugMsg"); DatabaseHelper dbHelper = new DatabaseHelper(SQLiteActivity.this,"test_mars_db"); //获得只读的对象 SQLiteDatabase db = dbHelper.getReadableDatabase(); Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null); while(cursor.moveToNext()){ //根据列名取得列的编号,再getString(列名)将值取出 String name = cursor.getString(cursor.getColumnIndex("name")); System.out.println("query--->" + name); } } }
二、文件下载
文件下载步骤:
1、创建一个HttpURLConnection对象
HttpURLConnection UrlConn = (HttpURLConnection)url.openConnection(); //调用openConnection方法获得UrlConn对象
2、获得一个inputStream对象
urlConn.getInputStream(); //对象打点使用getInputStream方法来获取一个输入流.
输入流: 向程序当中读入数据.
输出流: 向目标写出数据.
3、访问网络的权限
android.permisson.INTERNET 在AndroidManifest.xml文件当中声明.
三、将文件写入到SDCard
步骤:
1、得到当前设备SD卡的目录
public FileUtils() { //得到当前外部存储设备的目录 // /SDCARD SDPATH = Environment.getExternalStorageDirectory() + "/"; }
2、访问SD卡的权限
在AndroidManifest.xml文件中写入:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
四、实现下载和写入的代码
Download.java:
package mars.download; import mars.utils.HttpDownloader; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Download extends Activity { /** Called when the activity is first created. */ private Button downloadTxtButton; private Button downloadMp3Button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); downloadTxtButton = (Button)findViewById(R.id.downloadTxt); downloadTxtButton.setOnClickListener(new DownloadTxtListener()); downloadMp3Button = (Button)findViewById(R.id.downloadMp3); downloadMp3Button.setOnClickListener(new DownloadMp3Listener()); } class DownloadTxtListener implements OnClickListener{ @Override public void onClick(View v) { HttpDownloader httpDownloader = new HttpDownloader(); String lrc = httpDownloader.download("http://192.168.1.107:8080/voa1500/a1.lrc"); System.out.println(lrc); } } class DownloadMp3Listener implements OnClickListener{ @Override public void onClick(View v) { // TODO Auto-generated method stub HttpDownloader httpDownloader = new HttpDownloader(); int result = httpDownloader.downFile("http://wwww.ring.zg99.com:8000/201003/172ring/137.mp3", "172ring/", "137.mp3"); System.out.println(result); } } }
HttpDownload.java:
package mars.utils; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class HttpDownloader { private URL url = null; /** * 根据URL下载文件,前提是这个文件当中的内容是文本,函数的返回值就是文件当中的内容 * 1.创建一个URL对象 * 2.通过URL对象,创建一个HttpURLConnection对象 * 3.得到InputStram * 4.从InputStream当中读取数据 * @param urlStr * @return */ public String download(String urlStr) { StringBuffer sb = new StringBuffer(); String line = null; BufferedReader buffer = null; try { // 调用URL类的构造函数,创建一个URL对象,把要下载的文件的地址作为参数传进来 url = new URL(urlStr); // 创建一个Http连接 //调用url对象的openConnection方法.向下转型为HttpURLConnection对象 //这个对象就代表了url的一个连接 HttpURLConnection urlConn = (HttpURLConnection) url .openConnection(); // 使用IO流读取数据 //调用urlConn的getInputStream方法,得到一个InputStream,这个InputStream,它代表的就是urlStr地址所代表的那个文件 buffer = new BufferedReader(new InputStreamReader(urlConn .getInputStream())); //BufferedReader的readLine方法能够一次性读取一行数据,读完之后,返回值是空 while ((line = buffer.readLine()) != null) { //每读出一行都添加到sb对象里面,直到line为空 sb.append(line); } } catch (Exception e) { e.printStackTrace(); } finally { try { buffer.close(); } catch (Exception e) { e.printStackTrace(); } } //将已读完的文本文件内容返回 return sb.toString(); } /** * 该函数返回整形。 -1:代表下载文件出错 。0:代表下载文件成功。 1:代表文件已经存在 */ public int downFile(String urlStr, String path, String fileName) { InputStream inputStream = null; try { FileUtils fileUtils = new FileUtils(); //测试文件是否在当前路径已经存在,存在的话返回1 if (fileUtils.isFileExist(path + fileName)) { return 1; } else { inputStream = getInputStreamFromUrl(urlStr); File resultFile = fileUtils.write2SDFromInput(path,fileName, inputStream); if (resultFile == null) { return -1; } } } catch (Exception e) { e.printStackTrace(); return -1; } finally { try { inputStream.close(); } catch (Exception e) { e.printStackTrace(); } } return 0; } /** * 根据URL得到输入流 * * @param urlStr * @return * @throws MalformedURLException * @throws IOException */ public InputStream getInputStreamFromUrl(String urlStr) throws MalformedURLException, IOException { url = new URL(urlStr); HttpURLConnection urlConn = (HttpURLConnection) url.openConnection(); InputStream inputStream = urlConn.getInputStream(); return inputStream; } }
FileUtils.java
package mars.utils; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.os.Environment; public class FileUtils { private String SDPATH; public String getSDPATH() { return SDPATH; } public FileUtils() { //得到当前外部存储设备的目录 // /SDCARD SDPATH = Environment.getExternalStorageDirectory() + "/"; } /** * 在SD卡上创建文件 * * @throws IOException */ public File creatSDFile(String fileName) throws IOException { File file = new File(SDPATH + fileName); file.createNewFile(); return file; } /** * 在SD卡上创建目录 * * @param dirName */ public File creatSDDir(String dirName) { File dir = new File(SDPATH + dirName); dir.mkdirs(); return dir; } /** * 判断SD卡上的文件夹是否存在 */ public boolean isFileExist(String fileName){ File file = new File(SDPATH + fileName); return file.exists(); } /** * 将一个InputStream里面的数据写入到SD卡中 */ //三个参数:路径、文件名、输入流里的数据 public File write2SDFromInput(String path,String fileName,InputStream input){ File file = null; OutputStream output = null; try{ creatSDDir(path); //根据路径和文件名来创建文件 file = creatSDFile(path + fileName); //根据这个文件对象创建一个FileOutputStream对象,写入数据 output = new FileOutputStream(file); byte buffer [] = new byte[4 * 1024]; while((input.read(buffer)) != -1){ output.write(buffer); } //清空缓存 output.flush(); } catch(Exception e){ e.printStackTrace(); } finally{ try{ output.close(); } catch(Exception e){ e.printStackTrace(); } } return file; } }
发表评论
-
[转]Android.GridView实现宫式布局
2011-11-10 14:19 0应一位朋友的要求,我 ... -
广播机制
2011-09-07 11:00 765一、Android广播机制的介绍 BroadcastRec ... -
Android学习笔记(9)XML文件解析
2011-08-29 16:49 1104XML(可扩展标记语言) 通常有两种方式对XML文件今夕解析 ... -
Android学习笔记(8)ContentProvider
2011-08-29 14:02 759一、ContentProvider概念 基本概念: 1、C ... -
Android学习笔记(六)SQLite
2011-08-25 15:28 1130一、SQLite介绍 关系型数据库:SQLite-基于文本 ... -
Android学习笔记(五) handler
2011-08-25 11:30 1100一、基本概念 主要用于"异步消息"的处理 ... -
Android学习笔记(四)CheckBox、RadioGroup、ProgressBar、ListView、Spinner
2011-08-24 09:45 2453一、多选按钮-CheckBox 用法:首先也是通过控件ID来 ... -
Android学习笔记(三)UI布局
2011-08-24 09:37 1824一、线性布局-LinearLayout(至上而下布局) &l ... -
Android学习笔记(二)Activity生命周期、task、对话框风格的Activity
2011-08-23 17:40 1674Activity的七个生命周期 ... -
Android学习笔记(一)Activity
2011-08-23 17:36 819一、Activity基础知识 1、一个Activity就是一 ...
相关推荐
在Android平台上,对SDCard(外部存储)进行文件操作是应用程序与用户交互的重要部分,尤其对于需要存储大量数据或媒体文件的应用来说。本教程将详细解释如何在Android中读写SDCard文件,非常适合初学者入门。 首先...
在Android开发中,日志(Log)是调试和问题排查的重要工具。`Logcat`是Android系统提供的一个命令行工具,用于收集运行时的日志信息。这篇内容将深入讲解如何将`Log`输出到SD卡,以便于日后按日期查看和分析。 一、...
这里主要关注的是如何使用输入流对象(InputStream)和输出流对象(OutputStream)进行SDCard(外部存储卡)的读写操作。下面将详细介绍这些概念和实践中的应用。 1. **Android 文件操作**: Android 提供了丰富的...
### Android写入SDCard知识点详解 #### 一、概述 在Android开发中,根据应用程序的需求,数据存储方式有很多种选择,包括文件存储、SQLite数据库、SharedPreferences等。其中,文件存储是一种非常基础也是非常重要...
一个收集 app 输出日志的工具,输出文件:模拟器是 /sdcard/Android/data/项目包名/cache/,真机是 /Android/data/项目包名/cache/,里面的 crash 目录是崩溃日志,log 目录是 logcat 日志。 如何使用 在 module ...
根据给定的信息,我们可以从Java和Android学习笔记中提取出一系列重要的知识点,下面将逐一进行详细解释。 ### Java基础知识 #### 1. 命令行基础操作 - **`javacmd`**: 这个命令是Java命令行工具的一部分,用于...
在PicoSDCardSample这样的示例项目中,通常会包含完整的代码示例,展示如何实现上述操作,包括错误处理和权限管理,这对于学习和理解如何在Android中操作外置SDCard非常有帮助。开发者应仔细研究这些示例,以更好地...
`LogWriter`是一个自定义工具,用于将Android应用的日志信息写入本地文件,而不是仅仅依赖于系统的`Logcat`。这使得开发者能够更方便地保存、查看和分析日志数据,尤其是在设备无法连接到电脑或需要离线分析的情况下...
在Android平台上,对SDCard(外部存储)进行文件读写是常见的操作,尤其对于需要存储用户数据或资源的应用来说更是必不可少。本实例将探讨如何在Android应用中实现SdCard的读写功能。 首先,我们需要了解Android对...
Sdcard(Secure Digital Card)是Android设备常用的外部存储器,用于存放大量的非敏感数据,如媒体文件、应用缓存等。本篇文章将深入探讨Android如何在Sdcard上进行数据存储,并通过一个简单的示例来说明。 首先,...
### Android平台上SDCard的自动mount的解决方法 在Android设备中,SDCard(Secure Digital Card)作为外部存储介质被广泛使用。为了使Android系统能够自动识别并挂载SDCard,需要进行一系列配置与调试工作。本文将...
### Android中SDCard的读写操作详解 #### 一、SDCard访问概述 在Android开发过程中,对于外部存储(如SDCard)的读写是非常常见的需求。本文将详细介绍如何在Android应用中对SDCard进行读写操作,包括获取缓存目录...
www.mars-droid.com/Android开发视频教程 代码 源码 mars老师讲课 android 视频源码 文件读写至SDCard download(在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)
在Android应用开发中,存储数据是一项基础且重要的任务。这篇内容将详细讲解如何在手机内存以及SDCard(外部存储)上进行数据存储,并提供了一段经过封装的代码,方便开发者直接应用于实际项目。 首先,我们要了解...
总结来说,Android应用源码实例展示了如何在用户授权的前提下,使用Java I/O流进行SDCard的读写操作。这包括获取外部存储路径、创建文件、写入和读取数据。在实际开发中,应确保遵循最佳实践,如处理异常、释放资源...
Log4j是一个广泛应用于Java环境的日志框架,而当我们谈论`android-logging-log4j-1.0.3.jar`时,它便是Log4j的一个版本,专门针对Android平台进行优化,使得在Android系统中可以方便地将日志信息写入SD卡。...
【Android 学习笔记】初学者入门指南 在学习Android开发的过程中,首先需要搭建一个完整的开发环境。在Windows操作系统上,以下步骤可以帮助你快速构建起一个功能完备的Android开发环境。 1. 安装JDK (Java ...
### Android学习笔记知识点详解 #### 一、Activity的Task Affinity与启动模式 **知识点1:Task Affinity的理解** 在Android应用中,每个Activity都属于一个任务栈(Task)。默认情况下,同一个应用的所有Activity...