• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Java字节流在Android中的使用,java字节流android

Java字节流在Android中的使用,java字节流android

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了java字节流和字符流,java字节流,java字节流读取文件,java字节流写入文件,java字节流转字符流等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Java字节流在Android中的使用,java字节流android


转载请注明出处:http://www.cnblogs.com/cnwutianhao/p/6611252.html 

 

引言:项目开发有时会使用上传文件到服务器,再从服务器取数据显示到本地这一过程;或者输入一段文字,再把文字显示出来。这个过程都用到了IO流。

IO流分为字符流(Reader\Writer)和字节流(InputStream\OutputStream)

在字节流当中,我们经常使用的就是FileInputStream(读取本地文件中的字节数据)和FileOutputStream(将字节数据写出到文件)

本案例我将操作如何使用FileOutputStream(File file)和FileInputStream(String name)

 

先做一下简单解释:
FileOutputStream(File file) 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
FileInputStream(String name) 通过打开一个到实际文件的连接来创建一个FileInputStream,该文件通过文件系统中的路径名 name 指定。

 

FileOutputStream(File file)

①文件转换成流

系统给出的框架如下:

public FileOutputStream(File file) throws FileNotFoundException {
    this(file, false);
}

实现步骤:创建文件路径、在路径下创建文件、将文件转换成流

File cacheDir = getApplicationContext().getFilesDir();
File file = new File(cacheDir, "test.txt");
FileOutputStream fos = null;
fos = new FileOutputStream(file);

②字符串转换成byte数组写入到流中

系统给出的框架如下:

public void write(byte b[]) throws IOException {
    write(b, 0, b.length);
}

实现步骤:获取到编辑的文字(用Buffer Knife代替findViewById)、将文字转换成字符串、将 b.length 个字节从指定 byte 数组写入此文件输出流中

@BindView(R.id.editText)
EditText editText;
String strWrite = editText.getText().toString();
fos.write(strWrite.getBytes());

③关闭流

关闭此文件输出流并释放与此流有关的所有系统资源

fos.close();

我们在EditText控件上输入1,log日志会给我们返回结果

03-24 14:02:17.591 28576-28576/? E/MainActivity: File为/data/user/0/com.tnnowu.android.iobutterknife/files/test.txt
03-24 14:02:17.591 28576-28576/? E/MainActivity: Fos为java.io.FileOutputStream@6eaf805

 

FileInputStream(String name)

①读取本地文件中的字节数据

系统给出的框架如下:

public FileInputStream(String name) throws FileNotFoundException {
    this(name != null ? new File(name) : null);
}

实现步骤:获取到文件路径、读取文件中的字节数据

String filePath = getApplicationContext().getFilesDir().toString() + File.separator + "test.txt";
FileInputStream fis = null;
fis = new FileInputStream(filePath);

②将字节流写入到byte数组中

系统给出的框架如下:

public int read(byte b[]) throws IOException {
    return read(b, 0, b.length);
}

实现步骤:从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。

byte[] buffer = new byte[1024];
StringBuilder sb = new StringBuilder();
while (fis.read(buffer) != -1) {
    sb.append(new String(buffer));
}

③关闭流
关闭此文件输入流并释放与此流有关的所有系统资源。

fis.close();

我们点击按钮,log日志会给我们返回结果

03-24 14:04:50.048 28576-28576/? E/MainActivity: Buffer为[B@27b505a
03-24 14:04:50.048 28576-28576/? E/MainActivity: strRead为1

 

完整代码(Butter Knife介入):

点击查看我的另一篇文章Butter knife使用详解

点击免费下载DEMO

MainActivity:

package com.tnnowu.android.iobutterknife;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private static final String TAG = "MainActivity";

    @BindView(R.id.editText)
    EditText editText;
    @BindView(R.id.btn_write)
    Button btnWrite;
    @BindView(R.id.bth_read)
    Button bthRead;
    @BindView(R.id.btn_clear)
    Button btnClear;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
    }

    @OnClick({R.id.btn_write, R.id.bth_read, R.id.btn_clear})
    public void onClick(View view) {
        switch (view.getId()) {
       // FileOutputStream使用
case R.id.btn_write: String strWrite = editText.getText().toString(); File cacheDir = getApplicationContext().getFilesDir(); File file = new File(cacheDir, "test.txt"); Log.e(TAG, "File为" + file); try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } FileOutputStream fos = null; try { fos = new FileOutputStream(file); Log.e(TAG, "Fos为" + fos); } catch (FileNotFoundException e) { e.printStackTrace(); } try { fos.write(strWrite.getBytes()); } catch (IOException e) { e.printStackTrace(); } try { fos.close(); } catch (IOException e) { e.printStackTrace(); } break;
       // FileInputStream使用
case R.id.bth_read: String strRead = ""; StringBuilder sb = new StringBuilder(); String filePath = getApplicationContext().getFilesDir().toString() + File.separator + "test.txt"; FileInputStream fis = null<
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Java字节流在Android中的使用,java字节流android

相关文章

  • 2017-05-26Android中使用开源框架PagerSlidingTabStrip实现导航标题,android开源框架
  • 2017-05-26Android Doze模式启用和恢复,androiddoze
  • 2017-05-26浅谈Android编码规范及命名规范,浅谈android编码规范
  • 2017-05-26React-Native系列Android——Native与Javascript通信原理(二)
  • 2017-05-26手机安全卫士——缓存清理,安全卫士缓存清理
  • 2017-05-26Android上传图片之调用系统拍照和从相册选择图片
  • 2017-05-26AndroidStudio修改常用快捷键,androidstudio
  • 2017-05-26Android Studio NDK开发
  • 2017-05-26安卓第十五天笔记-图形图像一些简单处理,安卓第图形图像
  • 2017-05-26include的用法例子,以及include+merge的用法例子,includemerge

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android音频开发(5):音频数据的编解码
    • pull解析器: 反序列化与序列化,pull序列化
    • 7.4 Android 调用 WebService
    • android:ListView缓存机制及BaseAdapter的三重境界(逗比式,普通式,文艺式)
    • 阿里巴巴开源Weex 开发教程,开源weex
    • 玩转Android---事件监听篇---第2篇,android---第2篇
    • Android第四天,神秘封印礼盒第四天
    • 移动端web头部header通用写法
    • 集成websocket即时通讯 java聊天源码 代码下载 java后台框架源码 websocket源码 IM,websocket即时通讯
    • 明明已经执行Log.i,偏偏打不出日志,执行log.i日志

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有