存储文件:

public class FileOperate extends Activity {
private static final String FILENAME = "mydata.txt" ;// 设置文件名称
private static final String DIR = "ljpdata" ; @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 调用布局文件
if(Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)){ // 如果sdcard存在
File file = new File(Environment
.getExternalStorageDirectory().toString()
+ File.separator
+ DIR + File.separator + FILENAME) ; // 定义File类对象
if (! file.getParentFile().exists()) { // 父文件夹不存在
file.getParentFile().mkdirs() ; // 创建文件夹
}
PrintStream out = null ; // 打印流对象用于输出
try {
out = new PrintStream(new FileOutputStream(file, true)); // 追加文件
out.println("山东大学软件学院(SDU,www.sdu.edu.cn),讲师:学生");
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
out.close() ; // 关闭打印流
}
}
} else { // SDCard不存在,使用Toast提示用户
Toast.makeText(this, "保存失败,SD卡不存在!",Toast.LENGTH_LONG).show();
}
}
}

读取文件:

public class FileOperate extends Activity {
private static final String FILENAME = "mydata.txt" ; // 设置文件名称
private static final String DIR = "ljpdata" ; // 设置保存文件夹
private TextView msg = null ; // 文本显示
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.setContentView(R.layout.main); // 调用布局文件
this.msg = (TextView) super.findViewById(R.id.msg) ;
if(Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)){ // 如果sdcard存在
File file = new File(Environment
.getExternalStorageDirectory().toString()
+ File.separator
+ DIR + File.separator + FILENAME) ; // 定义File类对象
if (! file.getParentFile().exists()) { // 父文件夹不存在
file.getParentFile().mkdirs() ; // 创建文件夹
}
Scanner scan = null ; // 扫描输入
try {
scan = new Scanner(new FileInputStream(file)) ; // 实例化Scanner
while(scan.hasNext()){ // 循环读取
this.msg.append(scan.next() + "
") ; // 设置文本
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (scan != null) {
scan.close() ; // 关闭打印流
}
}
} else { // SDCard不存在,使用Toast提示用户
Toast.makeText(this, "读取失败,SD卡不存在!",Toast.LENGTH_LONG).show();
}
}
}

Android将图像转换成流存储与将流转换成图像

//take the image to byte[]
byte[] byteIcon = userIcon; //将字节数组即头像从二进制流转换成drawable
if(byteIcon != null){
  ByteArrayInputStream bais = new ByteArrayInputStream(byteIcon);
userIconDrawable = Drawable.createFromStream(bais, "image");
}
BitMap userIcon;

//将bitmap转换成drawable
ByteArrayOutputStream os = new ByteArrayOutputStream();
//参数1转换类型,参数2压缩质量,参数3字节流资源
userIcon.compress(CompressFormat.PNG, , os);
//将Drawable 转成bitmap
BitmapDrawable tempDrawable = (BitmapDrawable) DrawableImage;
tempDrawable.getBitmap();

android IO流操作文件(存储和读取)的更多相关文章

  1. IO流----操作文件的9种方法代码实现

    IO流----操作文件的9种方法代码实现: 1:使用字节流读写数据: 四种方式: method1:          每次读写一个字节,边读边写: /* * 复制文本文件. * * 数据源:从哪里来 ...

  2. 安卓 io流 写入文件,再读取的基本使用

    1.布局 布局里面只有一个EditView,通过输入内容之后,当触发 onDestroy 方法时,将输入的数据存储在当前应用的data/data/files文件夹下. <?xml version ...

  3. java io流 对文件夹的操作

    java io流 对文件夹的操作 检查文件夹是否存在 显示文件夹下面的文件 ....更多方法参考 http://www.cnblogs.com/phpyangbo/p/5965781.html ,与文 ...

  4. Java基础 IO流的文件和目录的五类主要操作

    笔记: /** IO流的 文件和目录的操作 * 1.路径需要 需要两个反斜杠 或者一个单斜杠! * 绝对路径:包括盘符在内的完整的路径名! * 相对路径:在当前目录文件下的路径! * 2.File 是 ...

  5. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  6. Java IO流操作汇总: inputStream 和 outputStream【转】

    我们在进行Android java 开发的时候,经常会遇到各种IO流操作.IO流操作一般分为两类:字符流和字节流.以“Reader”结尾都是字符流,操作的都是字符型的数据:以“Stream”结尾的都是 ...

  7. Java基础教程:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  8. IO流的文件复制

    1.IO流的分类 1.根据处理数据类型的不同分为: 字符流:1)Reader 读取字符流的抽象类 常用方法: read() 读取单个字符 read(char[] cbuf) 将字符读入数组. read ...

  9. Hadoop基础-通过IO流操作HDFS

    Hadoop基础-通过IO流操作HDFS 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上传文件 /* @author :yinzhengjie Blog:http://www ...

随机推荐

  1. 【PaddlePaddle系列】Executor逐步训练模型

    前言 PaddlePaddle使用Trainer训练模型虽然直接了当,方便快捷,但是对于一些需要逐步训练的模型则比较麻烦.类似Tensorflow采用session.run的形式逐步训练模型,使得训练 ...

  2. 第一遍练习:手抄一份 CRUD 并上传截图

  3. 学习微信小程序及知识占及v-if与v-show差别

    注意点: 一.接口调用方式: getOpenid: function () { var that = this; return new Promise(function (resolve, rejec ...

  4. Java 并发编程——volatile与synchronized

    一.Java并发基础 多线程的优点 资源利用率更好 程序设计在某些情况下更简单 程序响应更快 这一点可能对于做客户端开发的更加清楚,一般的UI操作都需要开启一个子线程去完成某个任务,否者会容易导致客户 ...

  5. Git版本控制原理和常用指令说明

    平时在Android Studio开发Android项目,习惯了点击右键或图标直接拉新fetch,pull,commit和push.但是必要的时候还得在终端输入命令行.比如正在开发新版本v3.0,老板 ...

  6. Docker挂载主机目录Docker访问出现Permission denied的解决办法

    Docker挂载主机目录,访问相应的文件出现Premission denied的权限访问问题,   [root@localhost soft]# docker images REPOSITORY    ...

  7. #!/usr/bin/python和#!/usr/bin/env 的区别

    #!/usr/bin/python 通常在一个.py文件开头都会有这个语句 它只在Linux系统下生效,意思是当作为可执行文件运行时调用的解释器的位置上面代码的意思是调用/usr/bin/下的Pyth ...

  8. eclipse中explorer显示方式

    不知道是不是上面的描述.做个记录 project explorer 项目资源管理器 这个要打开代码目录需要再点开java resources 还会出现deployment Descriptor项目工程 ...

  9. 在Pycharm中使用AutoPEP8来检验代码的规范性

    在学习python的过程中,我们经常会遇到代码不规范而导致的程序报错,代码的规范和严谨就显得尤为重要了,所以编写代码的过程中,我们需要遵循PE8规范,在Pycharm 中我们可以安装插件 AutoPE ...

  10. mysql RC下不存在则插入

    mysql版本:5.7 目的:在RC下,name列上仅有key索引,并发插入name时不出现重复数据 RC不加gap lock,并且复合select语句是不加锁的快照读,导致两个事务同时进行都可插入, ...