用IO流向存储器或SD卡中存入/读取字符的工具类
FileManager
package com.kale.utils; import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream; import android.content.Context;
import android.os.Environment; /**
* @author:Jack Tony
* @tips :
* <!-- 读写SD卡的权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
* @date :2014-6-30
*/
public class FileManager {
private String SD_PATH;
private String fileName;
private String dirName; public String getSD_PATH() {
return SD_PATH;
} /**
* @param permission 是否添加了权限
*/
public FileManager(boolean permission) {
//得到当前外部存储设备的目录
SD_PATH = Environment.getExternalStorageDirectory() + "/";
} /**
* 在SD卡上创建文件
*
* @throws IOException
*/
public File creatSDFile(String dirName ,String fileName) throws IOException {
this.fileName = fileName;
this.dirName = dirName;
File file = new File(creatSDDir(dirName), fileName);
return file;
} public String getFileWholePath() throws IOException{
if (dirName == null || fileName == null) {
return SD_PATH + dirName + "/" + fileName;
}
else {
throw new IOException("can't find dirName or fileName");
} } /**
* 在SD卡上创建目录
*
* @param dirName
*/
public File creatSDDir(String dirName) {
File dir = new File(SD_PATH + dirName);
dir.mkdir();
return dir;
} /**
* 判断SD卡上的文件夹是否存在
* kale,file.txt->kale/file.txt
*/
public boolean isFileExist(String dirName ,String fileName){
File file = new File(SD_PATH +dirName+"/"+ fileName);
return file.exists();
} /**
* 将一个InputStream里面的数据写入到SD卡中
* example:kale,file.txt,inputStream->kale/file.txt
* InputStream is = new ByteArrayInputStream( "kale data".getBytes() );
manager.saveToSdCard("dir02", "kale.txt", is );
*/
public File saveToSDcard(String dirName,String fileName,InputStream input){
File file = null;
OutputStream output = null;
try{
//创建目录
creatSDDir(dirName);
//建立文件
file = creatSDFile(dirName ,fileName);
output = new FileOutputStream(file);
byte buffer [] = new byte[5 * 1024];
//int count = 0;
while((input.read(buffer)) != -1){
//String str = new String(buffer,0,count);
//str = new String(str.getBytes("iso-8859-1"),"utf-8");
/*System.out.println("---------File Manager----start--------");
System.out.println(str);
System.out.println("---------File Manager-----end-------");*/
output.write(buffer);
}
output.flush();
}
catch(Exception e){
e.printStackTrace();
}
finally{
try{
output.close();
}
catch(Exception e){
e.printStackTrace();
}
}
return file;
} /**
* @param dirName
* @param fileName
* @return 从sd卡中读取文件的字符,返回String
* @throws Exception
*/
public String readFromSDcard(String dirName,String fileName) throws FileNotFoundException {
try {
File file = new File(SD_PATH +dirName+"/"+ fileName);
FileInputStream fis = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
StringBuilder sb = new StringBuilder("");
String line = null;
//循环读取文件内容
while((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
return sb.toString().trim();
}
catch(FileNotFoundException e) {
e.printStackTrace();
throw new FileNotFoundException("no such file");
}
catch (Exception e) {
e.printStackTrace();
}
return null;
} /////////////////////// 直接读取包名文件夹下的文件,而不是SD卡中的 /////////////////////
/**
* @param str
* 将string写入到data/data/包名/files中
* example:write(file.txt ,data)
*/
public static void write(Context mContext,String fileName,String str) {
try {
/**
* MODE_PRIVATE:该文件只能被当前程序读写 MODE_APPEND:用追加方式打开文件,新写入的内容追加到末尾
* MODE_WORLD_READABLE:该文件内容可以被其他程序读
* MODE_WORLD_WRITEABLE:该文件内容可以被其他程序读写
*/
FileOutputStream fos = mContext.openFileOutput(fileName, Context.MODE_PRIVATE | Context.MODE_APPEND);
PrintStream ps = new PrintStream(fos);
// 输出文件的内容
ps.println(str);
ps.close(); } catch (Exception e) {
e.printStackTrace();
}
} /**
* 通过文件名来读取data/data/包名/files下的文件
* example:read("file.txt")
* @return
* 返回null,表示找不到文件,或出现异常
*/
public static String read(Context mContext,String fileName) {
try {
// 打开文件输入流
FileInputStream fis = mContext.openFileInput(fileName);
byte[] buff = new byte[1024];
int hasRead = 0;
StringBuilder sb = new StringBuilder("");
// 读取文件内容
while ((hasRead = fis.read(buff)) > 0) {
sb.append(new String(buff, 0, hasRead));
}
// 关闭文件输入流
fis.close();
return sb.toString();
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch (Exception e) {
e.printStackTrace();
}
return null;
} }
用IO流向存储器或SD卡中存入/读取字符的工具类的更多相关文章
- 【记录】尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能
[背景] 折腾: [记录]给Android中添加log日志输出到文件 期间,已经试了: [记录]尝试用android中microlog4android实现log输出到文件的功能 但是不好用. 然后就是 ...
- Android中使用SQLiteOpenHelper管理SD卡中的数据库
使用Android中自带的SQLiteOpenHelper可以完成数据库的创建与管理,但有两点局限: (1)数据库创建在内存卡中,大小受限,创建位置位于/data/data/应用程序名/databas ...
- 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件
[源码下载] 与众不同 windows phone (37) - 8.0 文件系统: StorageFolder, StorageFile, 通过 Uri 引用文件, 获取 SD 卡中的文件 作者:w ...
- 【Android 界面效果30】Android中ImageSwitcher结合Gallery展示SD卡中的资源图片
本文主要是写关于ImageSwitcher结合Gallery组件如何展示SDCard中的资源图片,相信大家都看过API Demo 中也有关于这个例子的,但API Demo 中的例子是展示工程中Draw ...
- Android获取SD卡中选中图片的路径(URL)
最近在做一个图片上传的功能,需要提供上传图片在SD卡中的路径,在网上看了些例子,改改调试成功,代码很简单.其布局文件如下: [html] view plain copy <?xml ver ...
- BitmapUtil【缩放bitmap以及将bitmap保存成图片到SD卡中】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 用于缩放bitmap以及将bitmap保存成图片到SD卡中 效果图 代码分析 bitmapZoomByHeight(Bitmap s ...
- Android_(控件)使用Gallery浏览手机上SD卡中图片
运行截图: (发现后面两张照片是自己自拍,大写的尴尬对图片进行涂鸦了!!!) 程序结构: <?xml version="1.0" encoding="utf-8&q ...
- Android--手持PDA读取SD卡中文件
近两年市场上很多Wince设备都开始转向Android操作系统,最近被迫使用Android开发PDA手持设备.主要功能是扫描登录,拣货,包装,发货几个功能.其中涉及到商品档的时候大概有700左右商品要 ...
- android 读取sd卡中的图片
一.获取读取SD卡的权限 <!--在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.perm ...
随机推荐
- Elasticsearch常用最全最常用工具清单
https://blog.csdn.net/ZYC88888/article/details/82872558
- 用ProFTPD构建FTP服务器
配置 ProFTPD 然后,通过修改相应配置文件配置ProFTPD. [root@sample ~]# vi /etc/proftpd.conf ← 修改ProFTPD的配置文件 ServerType ...
- 【Java】 大话数据结构(13) 查找算法(4) (散列表(哈希表))
本文根据<大话数据结构>一书,实现了Java版的一个简单的散列表(哈希表). 基本概念 对关键字key,将其值存放在f(key)的存储位置上.由此,在查找时不需比较,只需计算出f(key) ...
- 如何快速切换Python运行版本,如何选择Python版本
想必在学习Python时会面临选择Python2.X或者是Python3.X的问题. 我在电脑上不同位置下载安装了不同版本 的Python,当我在学习时,不管是需要哪一个版本才能运行都无所谓,相应的快 ...
- rabbitmq学习(八) —— 可靠机制上的“可靠”
接着上一篇,既然已经有了手动ack.confirm机制.return机制,还不够吗? 以下博文转自https://www.jianshu.com/p/6579e48d18ae和https://my.o ...
- 详解django三种文件下载方式
推荐使用FileResponse,从源码中可以看出FileResponse是StreamingHttpResponse的子类,内部使用迭代器进行数据流传输. 在实际的项目中很多时候需要用到下载功能,如 ...
- 【BZOJ 1061】 1061: [Noi2008]志愿者招募 (线性规划与网络流)**
1061: [Noi2008]志愿者招募 Description 申奥成功后,布布经过不懈努力,终于成为奥组委下属公司人力资源部门的主管.布布刚上任就遇到了一个难 题:为即将启动的奥运新项目招募一批短 ...
- 配置lambda
=========== 添加 apply plugin: 'me.tatarka.retrolambda' 添加 compileOptions { sourceCompatibilit ...
- 懒人的福利?教你用set维护斜率优化凸包
斜率优化题目大家肯定都做得不少了,有一些题目查询插入点的x坐标和查询斜率都不单调,这样就需要维护动态凸包并二分斜率.(例如bzoj1492) 常规的做法是cdq分治或手写平衡树维护凸包,然而如果我不愿 ...
- hashMap归纳
Hashmap的与hashtable的区别: Hashmap:允许key为空:查询速度快(他是非同步的:避免了同步中不必要的判断):不安全的(容易引 发多线程安全问题) Hashtable:不允许k ...