继续说sdcard读写文件的情况,这篇博客说的是在sdcard根目录中读写文件,着重的而是多种方式的读写文件。直接给出代码:

FileService.java

package com.llp.classdifine;import java.io.BufferedWriter;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;import android.content.Context;
import android.os.Environment;public class FileService {private Context context;private String mPath = Environment.getExternalStorageDirectory().getPath()+ "/datas";public FileService(Context context) {this.context = context;}/*** 保存内容到sd卡中(以私有文件形式保存)* * @param filename*            文件名称* @param content*            文件内容* @throws Exception*/public void save2sdCard(String fileName, String content) throws Exception {File file = new File(Environment.getExternalStorageDirectory(),fileName);FileOutputStream outputStream = new FileOutputStream(file);outputStream.write(content.getBytes());outputStream.close();}/*** 保存内容(以私有文件形式保存)* * @param filename*            文件名称* @param content*            文件内容* @throws Exception*/public void save(String fileName, String content) throws Exception {FileOutputStream outputStream = context.openFileOutput(fileName,Context.MODE_PRIVATE);outputStream.write(content.getBytes());outputStream.close();}/*** 保存内容(以私有文件形式保存+追加)* * @param filename*            文件名称* @param content*            文件内容* @throws Exception*/public void saveAppend(String fileName, String content) throws Exception {FileOutputStream outputStream = context.openFileOutput(fileName,Context.MODE_APPEND);outputStream.write(content.getBytes());outputStream.close();}/*** 保存内容(允许其他应用读取)* * @param filename*            文件名称* @param content*            文件内容* @throws Exception*/public void saveReadAble(String fileName, String content) throws Exception {FileOutputStream outputStream = context.openFileOutput(fileName,Context.MODE_WORLD_READABLE);outputStream.write(content.getBytes());outputStream.close();}/*** 保存文件到sdcard中某个路径下* @param fileName* @param content*/public void write2Path(String fileName, String content) {File f = new File(mPath + "/" + fileName + ".txt");try {FileOutputStream fileOS = new FileOutputStream(f);try {fileOS.write(content.getBytes());fileOS.close();BufferedWriter buf = new BufferedWriter(new OutputStreamWriter(fileOS));buf.write(content, 0, content.length());buf.flush();buf.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/*** 从sdcard中的某个路径下读取文件* @param fileName* @return*/public String readFromPath(String fileName) {byte[] data = new byte[1024];try {FileInputStream fileIS = new FileInputStream(mPath + "/" + fileName+ ".txt");// BufferedReader buf = new BufferedReader(new// InputStreamReader(in))byte[] buffer = new byte[1024];ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();int len = -1;while ((len = fileIS.read(buffer)) != -1) {// 读取文件到缓冲区byteArrayOutputStream.write(buffer, 0, len);// 写入到内存}data = byteArrayOutputStream.toByteArray();// 将内存中的二进制数据转为数组byteArrayOutputStream.close();fileIS.close();} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}return new String(data);}/*** 文件读取* * @param fileName* @return* @throws Exception*/public String read(String fileName) throws Exception {FileInputStream inputStream = context.openFileInput(fileName);byte[] buffer = new byte[1024];ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();int len = -1;while ((len = inputStream.read(buffer)) != -1) {// 读取文件到缓冲区byteArrayOutputStream.write(buffer, 0, len);// 写入到内存}byte[] data = byteArrayOutputStream.toByteArray();// 将内存中的二进制数据转为数组byteArrayOutputStream.close();inputStream.close();return new String(data);}
}

MainActivity.java文件:

package com.example.sdcard;import java.io.File;
import com.example.sdcard.FileService;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;public class MainActivity extends Activity {/** Called when the activity is first created. */private static final String TAG = "MainActivity";private FileService fileService;String fileName;String content;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);File sd = Environment.getExternalStorageDirectory();String mPath = sd.getPath() + "/datas";File file = new File(mPath);if (!file.exists()) {file.mkdir();}Log.v("test", "file.getPath()" + file.getPath());Button button = (Button) findViewById(R.id.btnsave);Button read = (Button) findViewById(R.id.btnread);fileService = new FileService(this);// File file = this.getFilesDir();// 快速得到文件夹// this.getCacheDir();// 获得缓存文件夹final EditText fileNameText = (EditText) findViewById(R.id.fileName);final EditText contenText = (EditText) findViewById(R.id.content);final EditText readtext = (EditText) findViewById(R.id.contentread);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {fileName = fileNameText.getText().toString();content = contenText.getText().toString();try {// 判断sd卡是否存在手机上并且可以进行读写if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {fileService.write2Path(fileName, content);} else {}} catch (Exception e) {Log.e(TAG, e.toString());}}});read.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubtry {// 判断sd卡是否存在手机上并且可以进行读写if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {fileName = fileNameText.getText().toString();Log.v("test", "fileName" + fileName);readtext.setText(fileService.readFromPath(fileName));} else {}} catch (Exception e) {Log.e(TAG, e.toString());}}});}
}

Android sdcard读写文件(二)相关推荐

  1. Android SDCard操作(文件读写,容量计算)

    Android SDCard操作(文件读写,容量计算) android.os.Environment 提供访问环境变量 java.lang.Object android.os.Environment ...

  2. Android sdcard读写权限问题之中的一个

    博主在刚刚在学习过程中发现了一个关于android往sdcard读写的问题, 配置了该配置的提示无读写权限. 在AndroidManifest.xml文件里配置清单例如以下 <manifest ...

  3. Android中读写文件的N种方法

    在android或者java中读写文件时,我们常常面临不知道该用哪种方法来实现,今天我们一起来总结一下N种读写文件的方法. 一.文件输入输出流读写文件 public void writeFileStr ...

  4. Android的读写文件权限

    /**测试没通过* 写文件* @param str*/public void write(String str){File file = new File(Environment.getExterna ...

  5. Android单元测试读写文件,xml-如何为android单元测试提供数据文件

    我正在开发使用Android的java.xml.parsers.DocumentBuilder和DocumentBuilderFactory实现从XML文件加载信息的软件. 我正在编写对象的单元测试, ...

  6. Android单元测试读写文件,Android Studio单元测试:读取数据(输入)文件

    根据android-gradle-plugin版本: 1.版本1.5和更高版本: 只需把json文件到src / test / resources / test.json并引用它 classLoade ...

  7. android otg读写文件,Android USB Host在USB设备OTG中读/写文件

    我正在编写Android设备是主机的应用程序.用户将USB驱动器连接到Android设备,我的应用程序将在USB驱动器中写入一些文本文件.文本文件的路径就像USB_DRIVE/Data/APP_NAM ...

  8. Android单元测试读写文件,Android-单元测试

    Android的单元测试有两种方式:本地单元测试和设备单元测试,本地单元测试可以直接运行在本地机器上面的Java Virtual Machine(JVM).它的特点是运行时间短,执行效率高,但是没有A ...

  9. Android单元测试读写文件,如何在Android单元测试中读取仅测试文件

    对于我的Android应用程序,我正在编写需要读取一些文件的单元测试. 由于这些是仅测试文件,因此我不希望它们出现在res文件夹中,因为我不希望它们最终出现在最终的.apk文件中. 我想做与此问题类似 ...

最新文章

  1. Android TextView 设置文字上下距离以及文字水平间距
  2. python做定时任务的方式及优缺点_python BlockingScheduler定时任务及其他方式的实现...
  3. python脚本如何监听终止进程行为,如何通过脚本名获取pid
  4. 《数据中心设计与运营实战》——2.6 监控基础设施
  5. ocbase 数据库 蚂蚁_iOS - OC SQLite 数据库存储
  6. JavaOne 2012:JavaOne技术主题演讲
  7. golang time包梳理
  8. 京东2020算法工程师0824笔试题整理
  9. OpenShift 4 概念 - OpenShift是如何通过ImageStream访问Image的
  10. char强制类型转换为int_彻底理解Java中的基本数据类型转换(自动、强制、提升)...
  11. 思科模拟器(SDN控制器使用教程一)
  12. 财务分析就是财务报表分析吗?
  13. OSChina 周六乱弹 —— 舔狗是没有好下场的
  14. 面试必刷算法TOP101之买卖股票问题 TOP16
  15. C2C、O2O、B2B、B2C 是什么?区别在哪里?
  16. mysql按天执行分区表sql_Mysql按天自动表分区教程
  17. 【AcWing19】【LeetCode】DFS - 46/47/39/77/78/216/17/131/93/90/491
  18. FA 镜头 工作距离 焦距及视野计算和结果
  19. Debian10更换apt源
  20. 7个程序员常用的接单平台推荐

热门文章

  1. 中创|又临双11淘宝崩了,中心化存储难以支撑
  2. python画三角形
  3. 2018CSTC web2 writeup
  4. 数仓分层模型架构分享(3)
  5. K - Kinds of Fuwas----(2015 summer training #4 (Qualifying))
  6. matlab中m_map工具箱绘制大圆航线
  7. 用计算机画对称图形,人教小学美术五下《第17课电脑美术 对称图形》word教案...
  8. 微信小程序实现关注与取消关注功能
  9. 用JS怎么判断上传文件控件是否未选择文件
  10. java开发抢红包算法,抢红包算法的实现-java