用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 ...
随机推荐
- jQuery项目赋予Router
给你的jQuery项目赋予Router技能吧 现在你不会React/Vue都不好意思说自己是前端,不过我相信很多前端项目还是基于jquery类库的传统模式的,假如你有追求的态度使用过require ...
- PHP 数字序数&字母序数 相互转化
序数从1开始 即 A=1 而非 A=0 /** * 数字序列转字母序列 * @param $int * @param int $start * @return string|bool */ fun ...
- Python 之 Module Not Found Error: No module named 'openpyxl'
我在学习Python的过程中,计划将取到的数据保存到Excel文件中,使用 df.to_csv('D:/PythonWorkSpace/TestData/test.xlsx') 总是报错 Module ...
- 007.SMB其他应用
一 目录权限 系统权限需要对共享目录生效 samba服务器权限也会对共享目录生效 当用户过多权限交叉的时候,建议使用系统权限控制共享目录权限,而不建议采用samba权限来控制 例如: [work] p ...
- SpringBoot详细研究-01基础
Springboot可以说是当前最火的java框架了,非常适合于"微服务"思路的开发,大幅缩短软件开发周期. 概念 过去Spring充满了配置bean的xml文件,随着spring ...
- JAVAEE——宜立方商城14:项目部署规划、Tomcat热部署、反向代理的配置
1. 学习计划 1.系统部署 2. 项目部署 2.1. 项目架构讲解 2.2. 网络拓扑图 2.3. 系统部署 2.3.1. 部署分析 e3-manager e3-manager-web e3-por ...
- CLR寄宿和AppDomain
一.CLR寄宿 .net framework在windows平台的顶部允许.者意味着.net framework必须用windows能理解的技术来构建.所有托管模块和程序集文件必须使用windows ...
- [USACO3.2]Sweet Butter
题目大意: 给定一张$k$个结点,$m$条边的无向图,其中有$n$个点被标记,在这$k$个点中找出一个点使得这个点到那$n$个点的最短距离之和最小,求出这个距离和. 思路: 对于每个标记结点跑最短路, ...
- 如何使用PhoneGap打包Web App
最近做了一款小游戏,定位是移动端访问,思来想去最后选择了jQuery mobile最为框架,制作差不多以后,是否可以打包成App,恰好以前对PhoneGap有耳闻,便想用这个来做打包,可以其中艰辛曲折 ...
- KL46 custom board SWD reset is never asserted - SWS Waveform
KL46 custom board SWD reset is never asserted Hi everybody, I'm trying to program a custom board bas ...