android 文件读写工具类
将可以序列化的对象通过base64编码后进行保存
但是感觉多数情况下,不需要采用这个功能,直接保存原始的json字符串,取出来之后再进行解析即可
package com.wotlab.home.moneyplantairs.utils; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.StreamCorruptedException;
import java.util.ArrayList;
import java.util.HashMap; import android.annotation.SuppressLint;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.util.Base64; public class FileManager {
/**
* 将由网络获取的0点开始的等级数据封装成的ArrayTypeMap对象保存到sp文件中
*
* @param arrayMap
* @param sp
* @throws IOException
*/
@SuppressLint("NewApi")
public static void saveInfo(ArrayMapType arrayMap, SharedPreferences sp,
String key) throws IOException {
// 这个需要将请求到的数据保存到sp文件当中
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(bos);
os.writeObject(arrayMap);
// 编码是将字符数组编码为字符串
String stringBase64 = new String(Base64.encodeToString(
bos.toByteArray(), Base64.DEFAULT));
Editor editor = sp.edit();
editor.putString(key, stringBase64);
editor.commit();
} @SuppressLint("NewApi")
/**
* 从sp文件中读取信息,返回ArrayList<HashMap<String,String>>类型的数据
* @param sp sp文件
* @param key sp文件中存储对象的key值
* @return
* @throws StreamCorruptedException
* @throws IOException
* @throws ClassNotFoundException
*/
public static ArrayList<HashMap<String, String>> readInfo(
SharedPreferences sp, String key) throws StreamCorruptedException,
IOException, ClassNotFoundException {
String stringBase64 = sp.getString(key, null);
// 进行对应的解码,
byte[] bytesBase64 = Base64.decode(stringBase64.getBytes(),
Base64.DEFAULT);
ByteArrayInputStream bais = new ByteArrayInputStream(bytesBase64);
ObjectInputStream ois = new ObjectInputStream(bais);
ArrayMapType arrayMap = (ArrayMapType) ois.readObject();
return arrayMap.list;
} }
android对象base64编码保存
sd卡文件读写工具类
这个类还是有可以改进之处的
package com.wotlab.home.moneyplantairs.utils; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream; import android.content.Context;
import android.os.Environment; public class SDFileUtils {
private String SDPATH; // 用于存sd card的文件的路径 public String getSDPATH() {
return SDPATH;
} public void setSDPATH(String sDPATH) {
SDPATH = sDPATH;
} /**
* 构造方法,获取SD卡路径
*/
public SDFileUtils() {
// 获得当前外部存储设备的目录
SDPATH = Environment.getExternalStorageDirectory() + "/";
} /**
* 在SD卡上创建文件
*
* @throws IOException
**/
public File createSDFile(String fileName) throws IOException {
File file = new File(SDPATH + fileName);
file.createNewFile();
return file;
} /**
* 在SD卡上创建目录
*/
public File createSDDir(String dirName) {
File dir = new File(SDPATH + dirName);
System.out.println("storage device's state :"
+ Environment.getExternalStorageState());
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
System.out.println("this directory real path is:"
+ dir.getAbsolutePath());
System.out.println("the result of making directory:" + dir.mkdir());
}
return dir;
} /**
* 判断SD卡上的文件夹是否存在
**/
public boolean isFileExist(String fileName) {
File file = new File(SDPATH + fileName);
return file.exists();
} /**
* 将一个inputSteam里面的数据写入到SD卡中
**/
public File write2SDFromInput(String path, String fileName,
InputStream inputStream) {
File file = null;
OutputStream output = null;
try { File tempf = createSDDir(path);
System.out.println("directory in the sd card:" + tempf.exists());
file = createSDFile(path + fileName);
System.out.println("file in the sd card:" + file.exists());
output = new FileOutputStream(file);
byte buffer[] = new byte[4 * 1024];
while ((inputStream.read(buffer)) != -1) {
output.write(buffer);
}
output.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
output.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return file;
}
}
sd卡文件读写
从asserts目录下读取文件的工具类
private String readAsserts(String fileName) { StringBuilder stringBuilder = new StringBuilder();
try {
BufferedReader bf = new BufferedReader(new InputStreamReader(
getAssets().open(fileName)));
String line;
while ((line = bf.readLine()) != null) {
stringBuilder.append(line);
}
} catch (IOException e) {
e.printStackTrace();
}
return stringBuilder.toString();
}
asserts目录文件读写
android 文件读写工具类的更多相关文章
- properties文件读写工具类
java代码: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; ...
- Spring-Boot ☞ ShapeFile文件读写工具类+接口调用
一.项目目录结构树 二.项目启动 三.往指定的shp文件里写内容 (1) json数据[Post] { "name":"test", "path&qu ...
- list集合、txt文件对比的工具类和文件读写工具类
工作上经常会遇到处理大数据的问题,下面两个工具类,是在处理大数据时编写的:推荐的是使用map的方式处理两个list数据,如果遇到list相当大数据这个方法就起到了作用,当时处理了两个十万级的list, ...
- java文件读写工具类
依赖jar:commons-io.jar 1.写文件 // by FileUtilsList<String> lines = FileUtils.readLines(file, " ...
- java简单的文件读写工具类
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...
- properties文件读写工具类PropertiesUtil.java
import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import ...
- [转]Android - 文件读写操作 总结
转自:http://blog.csdn.net/ztp800201/article/details/7322110 Android - 文件读写操作 总结 分类: Android2012-03-05 ...
- 文件类型工具类:FileTypeUtil
个人学习,仅供参考! package com.example.administrator.filemanager.utils;import java.io.File;/** * 文件类型工具类 * * ...
- java文件处理工具类
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...
随机推荐
- Ansible-playbook服务器初始化
一.什么是Playbook playbook可以理解为ansible的shell脚本,它是一个编排工具,作用是使用编排出能够重复利用的ansible脚本,并并发处理多台服务器. 二.playbook使 ...
- 第八周zuoye
这个作业属于那个课程 C语言程序设计II 这个作业要求在哪 https://edu.cnblogs.com/campus/zswxy/computer-scienceclass3-2018/homew ...
- dotnet sdk 的镜像tag 相关
https://hub.docker.com/_/microsoft-dotnet-core-sdk/ 微软的dotnet sdk 的 tag 微软貌似改默认镜像 dockerhub 里面的tag与 ...
- ARM编程模式和7钟工作模式
一. ARM的基本设定 1.1. ARM 采用的是32位架构 1.2. ARM约定: a. Byte : 8 bits b. Halfword :16 bits (2 byte) c. Word : ...
- Luogu P5330 [SNOI2019]数论
题目 如果\(P>Q\)的话我们先交换一下\(P,Q\). 我们先枚举所有满足第一个条件的数,对于\(x\equiv a_i(mod\ P)\),设\(x=a_i+kP(k\in[0,\lflo ...
- LINQ 推迟查询的执行
LINQ 在运行期间定义查询表达式时.查询就不会运行.查询会在迭代数据项是运行,例如: static void Main(string[] args) { List<string> lis ...
- Jmeter学习总结
学习内容: 1.用户定义的变量 作用:多个地方使用同一个值,且该值在不同的环境下不同,方便脚本在不同环境下运行时修改. 2.基本的HTTP请求,请求方式:get 3.传入参数为json 4.HTTP信 ...
- html常用标签、包含关系、常用术语,以及网页设计中的字体分类
编程比较舒适的等宽字体:DejaVu Sans Mono 字体的分类: serif (衬线字体){在笔画上面有些特殊的修饰效果} sans-serif (非衬线字体){横平竖直.横就是横,点就是点} ...
- netserver启动时报错 "Unable to start netserver with 'IN(6)ADDR_ANY' port '12865' and family AF_UNSPEC'"
netperf启动netserver时报错 "Unable to start netserver with 'IN(6)ADDR_ANY' port '12865' and family A ...
- django + celery的队列,路由与弹性
#celery_app.py #!/usr/bin/env python # -*- coding: utf-8 -*- from __future__ import absolute_import ...