`
kevinlynx
  • 浏览: 82822 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

Android: 写文件到SD卡

阅读更多
考虑到SD卡可能没有被mount,或者其他各种情况,操作SD卡上的文件总需要各种状态的判断。主要是使用Environment类里的一些接口进行判断:
    private void writeFileToSD() {
    	String sdStatus = Environment.getExternalStorageState();
    	if(!sdStatus.equals(Environment.MEDIA_MOUNTED)) {
    		Log.d("TestFile", "SD card is not avaiable/writeable right now.");
    		return;
    	}
    	try {
    		String pathName="/sdcard/test/";
    		String fileName="file.txt";
    		File path = new File(pathName);
    		File file = new File(pathName + fileName);
    		if( !path.exists()) {
    			Log.d("TestFile", "Create the path:" + pathName);
    			path.mkdir();
    		}
    		if( !file.exists()) {
    			Log.d("TestFile", "Create the file:" + fileName);
    			file.createNewFile();
    		}
    		FileOutputStream stream = new FileOutputStream(file);
    		String s = "this is a test string writing to file.";
    		byte[] buf = s.getBytes();
    		stream.write(buf);    		
    		stream.close();
    		
    	} catch(Exception e) {
    		Log.e("TestFile", "Error on writeFilToSD.");
    		e.printStackTrace();
    	}
    }

需要加入权限:
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>


看文档说,可以使用Context.getExternalFilesDir来取得一个特殊的文件夹,该文件夹对USER不可见,最重要的是:当系统卸载该程序时,会自动删除该目录下的文件。

如果不需要往SD卡上写文件,可以直接用以下简单代码:
    private void writeFile() {
    	try {
    		FileOutputStream stream = openFileOutput("testfile.txt", Context.MODE_WORLD_WRITEABLE);
    		String s = "this is a test string writing to file.";
    		byte[] buf = s.getBytes();
    		stream.write(buf);
    		stream.close();
    	}
    	catch (FileNotFoundException e) {
    		Log.d("TestFile", "File not found.");
    	}
    	catch (IOException e) {
    		Log.d("TestFile", "File write error.");
    	}
    }

该文件会被放置于data/data/your_app_package_name/files下。


值得注意的是,我们可以在程序运行期间动态检查SD卡是否可用。大致就是通过注册BroadcastReceiver实现,这个官方文档里有提到:

    void startWatchingExternalStorage() {    
    	mExternalStorageReceiver = new BroadcastReceiver() 
    	{        
    		@Override        
    		public void onReceive(Context context, Intent intent) {            
    			Log.i("test", "Storage: " + intent.getData());            
    			updateExternalStorageState();        
    		}    
    	};    
    	IntentFilter filter = new IntentFilter();    
    	filter.addAction(Intent.ACTION_MEDIA_MOUNTED);    
    	filter.addAction(Intent.ACTION_MEDIA_REMOVED);    
    	registerReceiver(mExternalStorageReceiver, filter);    
    	updateExternalStorageState();
    }
    void stopWatchingExternalStorage() {    
    	unregisterReceiver(mExternalStorageReceiver);
    }

分享到:
评论
2 楼 kevinlynx 2010-12-27  
Lee_Dewyze 写道
楼主   你这样直接将要写的文件路径定下来不太好吧  应该先获得sd卡的目录结构。。。   建议一下  互相学习哈

恩。呵呵。
1 楼 Lee_Dewyze 2010-12-27  
楼主   你这样直接将要写的文件路径定下来不太好吧  应该先获得sd卡的目录结构。。。   建议一下  互相学习哈

相关推荐

    android:assets下的文件复制到SD卡

    在Android开发中,有时我们需要将应用内部的资源文件,如图片、文本或配置文件等,复制到外部存储(如SD卡)以便于后续的操作,比如读取大文件以减轻内存负担,或者创建用户可访问的数据目录。`android:assets`是...

    Android 写文件到sd卡

    以下是关于如何在Android中写文件到SD卡的相关知识点: 1. **权限声明**: 在AndroidManifest.xml文件中,你需要添加`WRITE_EXTERNAL_STORAGE`权限,以允许你的应用写入外部存储设备。从Android 6.0 (API级别23)...

    android 存储文件到sd卡中

    在Android平台上,将文件存储到SD卡中是应用程序常见的需求之一。这主要涉及到Android的文件系统、权限管理以及外部存储的使用。以下是一些关于如何在Android中存储文件到SD卡的关键知识点: 1. **Android文件系统*...

    Android写LOG日志到SD卡文件之microlog4android使用

    本文将深入探讨如何使用microlog4android库将日志信息写入到SD卡上的文件,以实现更灵活的日志管理。 首先,让我们了解一下什么是microlog4android。Microlog是一个轻量级的日志框架,它为Android提供了类似Java....

    Android 读写文件实例

    本文将详细讲解如何在Android系统中进行SD卡和内部存储的读写,以及如何获取文件目录。 ### 1. Android权限管理 在开始文件操作之前,必须在AndroidManifest.xml文件中声明相应的权限,特别是对于读写外部存储(SD...

    android 下载文件到SD卡

    通过以上步骤,你可以实现一个完整的Android文件下载功能,让应用具备将网络资源保存到SD卡的能力。在实际开发中,可能还需要考虑更多细节,如下载速度限制、多线程下载、网络状况判断等,以提供更好的用户体验。

    Android SD卡文件读写操作

    在Android系统中,SD卡(Secure Digital Card)是设备存储扩展和数据交换的重要媒介,它为应用程序提供了额外的存储空间,以保存用户数据、媒体文件或其他应用相关资源。本篇文章将详细探讨Android平台上SD卡的文件...

    Android 之 将RAW资源文件写入SD卡工具类

    在Android开发中,有时我们需要将应用内部的RAW资源文件复制到外部存储(如SD卡)以便于用户访问或保存数据。这个"Android之将RAW资源文件写入SD卡工具类"是一个实用的功能,可以帮助开发者轻松完成这个任务。下面将...

    android中复制资源文件中的数据库文件到sd卡或内存源码

    在Android开发中,有时我们需要将预置的数据库文件与应用一起发布,并在应用程序首次启动时将其复制到外部存储(如SD卡)或内部存储(内存)中,以便于后续的操作和使用。这样的需求通常出现在那些需要提供初始数据...

    android 内部存储读写 sd卡存储

    ### Android内部存储与SD卡存储详解 #### 一、Android内部存储概述 在Android开发过程中,数据存储是一项非常重要的功能。对于大多数应用来说,选择合适的数据存储方式是至关重要的。Android提供了多种数据存储的...

    Android 文件读写操作

    在Android系统中,文件读写操作是开发过程中常见的任务,涉及到资源文件、数据区文件以及外部存储(如SD卡)的访问。以下是对这些操作的详细说明: 一、资源文件的读取 1. 从resource的raw中读取文件数据: 资源...

    android SD卡读写东西Txt文件

    在Android开发中,读写SD卡上的TXT文件是一项常见的需求,尤其是在需要存储或读取大量非结构化数据的应用场景下。根据给定的文件信息,我们可以深入探讨如何在Android应用中实现对SD卡上TXT文件的读写操作,以及相关...

    android写文件(包括sd卡和写到手机)

    以上就是Android系统中写入文件的基本操作,包括向内部存储和外部存储(SD卡)写文件的方法和注意事项。在实际开发中,还需要根据具体需求选择合适的存储位置,并处理好权限问题。希望这些信息能帮助你更好地理解和...

    android demo,sd卡文件存储和data下文件存储。

    在使用SD卡存储时,需要注意权限问题。自Android 6.0(API级别23)以来,应用需要在运行时请求`WRITE_EXTERNAL_STORAGE`和`READ_EXTERNAL_STORAGE`权限。 **2. data下文件存储** 内部data目录下的文件存储主要用于...

    android文件读写权限

    1. `READ_EXTERNAL_STORAGE`:此权限允许应用读取外部存储(如SD卡)上的文件。在Android 6.0(API级别23)及更高版本中,即使应用在Manifest中声明了该权限,也需要在运行时请求用户授权。 2. `WRITE_EXTERNAL_...

    Android应用源码SdCard读写文件实例

    在Android平台上,对SD卡(外部存储)进行读写文件是常见的操作,尤其对于需要存储大量数据或资源的应用来说更是必不可少。本实例将探讨如何在Android应用中实现SdCard的读取和写入功能,这涉及到Android的权限管理...

    android 读取和存储sd卡

    在Android系统中,读取和存储SD卡是应用程序与外部存储交互的重要部分,尤其是在处理大量数据或者需要离线可用内容时。本示例项目“StorageManageDemo”将帮助开发者了解如何在Android应用中有效地实现这一功能。...

    android读取sd卡中MP3文件

    1. **文件系统访问**:Android设备上的外部存储(通常称为SD卡)被模拟为一个文件系统,可以使用Java的`java.io.File`类来操作。首先,你需要获取SD卡的根目录路径,通常是`Environment.getExternalStorageDirectory...

    android SD卡文件浏览器

    在Android平台上,SD卡文件浏览器是一款实用的应用程序,它允许用户查看和管理存储在设备SD卡上的文件和文件夹。这个应用通常具有直观的界面,采用列表视图展示SD卡内容,便于用户浏览、选择、复制、移动或删除文件...

    android sd卡写文件备份

    在Android 6.0(API级别23)之前,应用默认拥有写外部存储(如SD卡)的权限。但在Android 6.0之后,用户需要在运行时授予这一权限,通过调用`requestPermissions()`方法并处理`onRequestPermissionsResult()`回调。...

Global site tag (gtag.js) - Google Analytics