为什么80%的码农都做不了架构师?>>>   

这个是资源的目录参考(看的时候一目了然):

首先是布局文件:

效果图:

代码部分:

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" ><TextView android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/fileName"/><EditText android:id="@+id/fileNameEdit"android:layout_width="fill_parent"android:layout_height="wrap_content"/><TextView android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/fileContent"/><EditText android:id="@+id/fileContentEdit"android:layout_width="fill_parent"android:layout_height="wrap_content"android:minLines="3"/><Button android:id="@+id/saveBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/save"/>
</LinearLayout>

类MainActivity.java代码:

package org.dyb.file;import org.dyb.service.FileService;import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity extends Activity {private EditText fileName;//文件名编辑器private EditText fileContent;//文件内容编辑器private Button save;//保存按钮@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//从R中获取文件名资源fileName=(EditText) findViewById(R.id.fileNameEdit);//从R中获取文件内容资源fileContent=(EditText) findViewById(R.id.fileContentEdit);//保存按钮资源获取save=(Button) findViewById(R.id.saveBtn);//设置单击事件进行文件保存,使用内部类接口实现save.setOnClickListener(new SaveOnclick());}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}//设置单击事件进行文件保存,使用内部类接口实现private class SaveOnclick implements View.OnClickListener{@Overridepublic void onClick(View v) {String fileNameString=fileName.getText().toString();String fileContentString=fileContent.getText().toString();//自定义FileService类并添加save方法,需要传入contentFileService fs=new FileService(MainActivity.this);try{//将文件保存在程序目录中fs.save(fileNameString, fileContentString);//将文件保存在SD卡中,去掉注释便可用if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){fs.saveToSDCard(fileNameString, fileContentString);}else{Toast.makeText(getApplicationContext(), "SD卡不存在或者写保护", Toast.LENGTH_SHORT).show();}Toast.makeText(getApplicationContext(), R.string.success, Toast.LENGTH_SHORT).show();}catch(Exception e){Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();}}}
}

自定义的FileService类:

代码如下:文件默认写入程序的files中(文件一般在目录的data/data/程序包名/files/文件名,如果使用真机做测试,如果手机没有root并且该文件权限没有进行可读写设置,在eclipse中的DDMS中是打不开data目录的)

package org.dyb.service;import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;import android.content.Context;
import android.os.Environment;public class FileService {private Context context;public FileService(){}public FileService(Context context){this.context=context;}//保存到SD卡public void saveToSDCard(String fileNameString,String fileContentString) throws Exception{//Environment.getExternalStorageDirectory()获取系统SD卡目录File file=new File(Environment.getExternalStorageDirectory(),fileNameString);FileOutputStream outStream=new FileOutputStream(file);outStream.write(fileContentString.getBytes());outStream.close();}public void save(String fileNameString,String fileContentString) throws Exception{//文件输出流//其中两个参数一个是文件名一个是文件的权限,Context.MODE_PRIVATE代表只允许本程序读写FileOutputStream outStream=context.openFileOutput(fileNameString,Context.MODE_PRIVATE);//以字节流传入outStream.write(fileContentString.getBytes());outStream.close();}public String read(String fileNameString)throws Exception{FileInputStream inStream=context.openFileInput(fileNameString);//内存字节数组输出流,主要先将每次读取的字节流存入到内存中然后在进行输出ByteArrayOutputStream outStream=new ByteArrayOutputStream();//每次读取1024byte[] buffer=new byte[1024];int len=0;while((len=inStream.read(buffer))!=-1){outStream.write(buffer, 0, len);}//把内存中的数据转换为字节流byte[] data = outStream.toByteArray();//转换成字符串返回return new String(data);}
}

测试类:FTest.java,主要测试文件的读取,

代码如下:

package org.dyb.test;import org.dyb.service.FileService;import android.test.AndroidTestCase;
import android.util.Log;public class FTest extends AndroidTestCase {public void testread()throws Exception{FileService fs=new FileService(this.getContext());Log.i("junit", fs.read(<span style="color:#3366ff;">"d.txt"</span>));//文件名,自己可以修改我保存文件的时候用的是d.txt}
}

然后在AndroidManifest.xml进行配置单元测试:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="org.dyb.file"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="18" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="org.dyb.file.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><uses-library android:name="android.test.runner"/></application><!-- 在SD卡中写入权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 在SD卡中创建与删除权限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /><instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="org.dyb.file" android:label="test for my app"/></manifest>

在日志输出过滤后就可以看到刚刚输入保存文件的内容

转载于:https://my.oschina.net/zjcx/blog/679574

Android文件的保存(本地和SD卡)与读取相关推荐

  1. Android笔记:保存Bitmap到SD卡中

    之前一般是把ImageView转成Bitmap比较多,最近用到把Bitmap保存到本地,去网上看了看正好的记录下来吧, 直接贴代码: //String path,String picNamepubli ...

  2. android 访问存储卡,Android:无法访问存储在SD卡中的文件

    我正在研究一个读取存储在SD卡(内部/数据/本地)中的.txt文件的应用程序.我遇到的问题是,它似乎可以访问文件路径,但它不能访问文件本身(尽管它具有读取和写入权限),但会引发FileNotFound ...

  3. Android—将Bitmap图片保存到SD卡目录下或者指定目录

    直接上代码就不废话啦 一:保存到SD卡下 [java] view plain copy File file = new File(Environment.getExternalStorageDirec ...

  4. android 使用SAF框架操作外置sd卡

    android 使用SAF框架操作外置sd卡 在 Android 4.4中,Google 对 SD卡 的访问已经做了严格的限制,在 Android 5.0中,开发者可以使用 新API 要求用户对某个指 ...

  5. java 读取rom文件_Android -- 读写文件到内部ROM,SD卡,SharedPreferences,文件读写权限...

    (内容整理自张泽华教程) 1. 概述 使用文件进行数据存储 首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过 ...

  6. [原创][连载].基于SOPC的简易数码相框 - Nios II SBTE部分(软件部分) - 从SD卡内读取图片文件,然后显示在TFT-LCD上...

    实在很抱歉,时间紧张,我只讲怎样从SD卡内读取bin文件(二进制文件),然后现在TFT-LCD上. 准备工具 1. Image2Lcd.zip 操作步骤 步骤1 寻找或制作240x320的图片 简单起 ...

  7. U3d—通过CRL下载文件并保存本地___#三分有点码#专栏

    U3d-通过CRL下载文件并保存本地三分有点码. void Start(){string path = Application.persistentDataPath + "/" + ...

  8. android 2.3 取内外置SD卡

    在android2.3中 判断内置SD卡是否挂载: if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) ...

  9. ZYNQ-使用HDMI显示器进行SD卡图片读取显示

    学习内容 本文使用带有HDMI接口的显示器,构建图像视频显示的测试工程,利用VDMA进行传输图像视频数据,通过文件系统将SD卡中的照片读取出来然后在显示器显示. 开发环境 vivado 18.3&am ...

  10. SD卡数据读取Altium Designer下载

    目录 一.SD卡数据读取 1.SD卡简介 2.代码实现 1.所用软件及硬件 2.SD卡实物连线 3.运行 二.Altium Designer下载及原理图绘制 1.Altium Designer软件安装 ...

最新文章

  1. windows系统中查看linux分区的三种方式
  2. 用go语言制作读取excel模板批量生成word工具
  3. Python Web框架学习【Flask】
  4. Eclipse新建项目里没有Web Project应该如何处理
  5. Web前端——JavaScript(dom文档对象模型)
  6. 不插网线 开机速度加快
  7. 基础 - 常见字符的ASCII码
  8. Android优美代码赏析:Snake游戏分析
  9. 快速排序_two-powinters思想
  10. 缓存与缓冲的区别 cache与buffer的区别
  11. SAP ERP常用事务代码和表
  12. 一般描绘性形容词_英语中描绘性形容词是指哪种形容词?
  13. 模拟爬虫下载QQ空间相册高清图片
  14. 为什么孩子上学越来越难了?
  15. 【CodingNoBorder - 07】无际软工队 - 求职岛:ALPHA 阶段测试报告
  16. linux环境安装部署RF+Jenkins+Git(非完整版)
  17. MATLAB下批量修改图片名称
  18. k叉树的性质_二叉树的性质总结.doc
  19. Linux系统关闭防火墙~
  20. Spring事务不生效的原因

热门文章

  1. 例3.1 括号匹配问题 - 九度教程第26题(栈的应用)
  2. 五脏六腑在脸上的反射区图片_“阳光运动场,亲子共成长”——赣县区白鹭乡中心幼儿园迎新年亲子趣味运动会...
  3. aact portable怎么用_“充电宝”用英语怎么说?可别说成“phone charger”!
  4. stm32产生100k时钟信号_stm32定时器时钟源时钟选择
  5. python编程从入门到实战抛出异常_文件和异常——python从编程入门到实践
  6. 计算机网络定义来源,计算机网络基础知识之计算机网络定义及其功能
  7. linux支持ext2格式吗,linux正统标准文件系统ext2详解
  8. TP5的类似TP3使用‘DEFAULT_THEME’的配置修改主题风格的方法,以及常见模板错误...
  9. 深圳试行“智能行人过街系统”,行人违规将被“拉出来示众”
  10. iphone:点击背景隐藏键盘