Android IO流使用详解-SDcard

雷达原理习题答案【西电】   目前教材用的是陈老师新版的,但是,我发现课后题有一部分是之前某本书里的。答案如下【建议参看原题→查阅答案】 【原题点这里!!点这里!!】 目录跳转功能目前好像只支持网页版 文章目录% 第一章、第二章% 第三章% 第四章% 第五章% 第六章% 第七章% 第八章 % 第一章、第二章 % 第三章 % 第四章 % 第五章 % 第六章 % 第七章 % 第八章 ... 阅读详情
Android IO流使用详解
一.Android IO流

Java IO 流按照不同类型来分,可以从以下几个方面来进行分类:
   1.输入流/输出流
输入流和输出流 InputStream 和 OutputStream(基类 抽象类)
一个流是字节的源或目的地,其次序是有意义的。例如,一个需要键盘输入的程序可以用流来做到这一点。流可以分成两种:输入流和输出流。可以从输入流读,但不能对它写。要进行写操作就必须使用输出流
InputStream  和  OutputStream 是Java流类中的两个最基本的类,Java中所有其他的流类 都是继承自这两个类 。
   2.字节流/字符流
字节流:
可以处理所有类型的数据,如MP3,图片,文字,视频等。在读取时,读到一个字节就返回一个字节。(在JAVA中对应的类以Stream结尾)
字符流:
仅能够处理纯文本数据,如txt文本。在读取时,读到一个或多个字节,先查找指定的编码表,然后将查到的字符返回。(在JAVA中对应的类都以Reader或Writer结尾)
   3.节点流/处理流
节点流和处理流,Java的IO使用装饰者模式将IO流分成了底层节点流和上层处理流。节点流直接和底层的物理存储节点关联,虽然不同的物理节点获取的节点流可能存在差异,但程序可以把不同的物理节点包装成统一的处理流,从而允许程序使用统一的IO代码来操作不同的物理节点。这就是封装的典型应用:不用考虑底层不同的节点流,只需将节点流封装成处理流来调用。

二.字节、字符、编码
一个字节等于8为二进制,即一个8位的二进制数,是一个很具体的存储空间。
字符是人们使用的记号,抽象意义上的一个符号。
字符集又称编码
如汉字GB2312中哪些汉字,字母,符号会被收入标准中,所包含的“字符”的集合叫做“字符集”
规定每个“字符”分别用一个字节还是多个字节存储。用哪些字节存储,这个规定叫做编码

三.IO流常用方法
1.字节流常用方法
InputStream类的主要方法:
int read()          从流中读出一个字节的数据 
int read(byte[] b)            从流中读取数据并存放到数组b中
int read(byte[] b, int off,int len) 从输入流中读取最多len长度的字节,保存到字节数组b中,保存的位置从off开始 
void close()                     关闭当前流对象 
int available()                  返回当前流中可用的字节数                             
void mark (int readlimit) 在流中作标记 
boolean markSupported ()  判断流是否支持标记和复位操作                            
void reset()    返回流中标记过的位置 
long skip(long n)    跳过流中的指定字数
OutputStream类的主要方法:
void write(int b) 向流中写入一个字节数据
void write (byte[] b) 写入数组buf的所有字节
void write (byte[] b,int off,int len) 将字节数组中off位置开始,长度为len的字节数据输出到输出流中
void close () 关闭当前流对象 
void flush () 强制缓冲区中的所有数据写入到流中 

2.字符流常用方法
Reader常用方法:
int read()从输入流中读取单个字符,返回读取的字符
int read(byte[] c) 从输入流中读取c.length长度的字符,保存到字符数组c中,返回实际读取的字符数
read(char[] c,int off,int len) 从输入流中读取最多len的长度字符,保存到字符数组c中,保存的位置从off位置开始,返回实际读取的字符长度
void close() 关闭流
Writer常用方法:
write(String str)将str字符串里的字符输出到指定输出流中
write(String str,int off,int len) 将str字符串里从off位置开始长度为len的字符输出到输出流中
void close() 关闭输出流
void flush() 刷新输出流


四.IO流的使用
需要在AndroidMainfset.xml文件中进行权限的配置:
1.SDCard中创建与删除文件权限:
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
2.SDCard写入数据权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
代码如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.cxy.io">
    <uses-permission android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"></uses-permission>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
</manifest>

字节文件的输入输出流ileInputStream 和 FileOutputStream(InputStream 和 OutputStream的子类,具体实现类)

FileInputStream 和 FileOutputStream分别是InputStream 和 OutputStream的子类,往往使用FileInputStream 和 FileOutputStream这两个子类去就可以从一个指定文件中读取或者向某一个文件中写入数据。

如果创建FileInputStream 和 FileOutputStream对象,那我们必须指定 文件的路径和文件名,对象被创建之后,流就打开了,程序结尾处必须结束流的操作。关闭流,释放资源。

package com.example.cxy.io;

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

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

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private Button btn,btn1;
    private String content="今天天气不错";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        inintView();
    }

    private void inintView() {
        btn= (Button) findViewById(R.id.button);
        btn1= (Button) findViewById(R.id.button2);
        btn.setOnClickListener(this);
        btn1.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        File file =new File("/mnt/sdcard/cxy.txt");
        switch (v.getId()) {
            case R.id.button:
                try {
                    file.createNewFile();
                    //实例化一个输出流
                    FileOutputStream out=new FileOutputStream(file);
                    //FileOutputStream out=new FileOutputStream("/mnt/sdcard/cxy.txt");
                    //把文字转化为字节数组
                    byte[] bytes = content.getBytes();
                    //写入字节数组到文件
                    out.write(bytes);
                    //关闭输入流
                    out.close();
                    Toast.makeText(MainActivity.this, "写入成功", Toast.LENGTH_SHORT).show();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
            case R.id.button2:
                try {
                    String text=null;
                    //实例化一个输入流
                    FileInputStream input=new FileInputStream(file);
                    //把文件中的所有内容转换为byte字节数组
                    byte[] bytes = new byte[input.available()];
                    //读取内容
                    input.read(bytes);
                    //关闭输入流
                    input.close();
                    //把bytes字节数组转化为文字
                    text=new String(bytes);
                    Toast.makeText(MainActivity.this,text, Toast.LENGTH_SHORT).show();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
                break;
        }
    }
}
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.cxy.io.MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="写入"
        android:id="@+id/button"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="55dp"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="输出"
        android:id="@+id/button2"
        android:layout_below="@+id/button"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="157dp"/>
</RelativeLayout>


Xiaojie雷达之路---毫米波雷达基础知识---角度估计 本篇文章主要介绍毫米波雷达的基础知识中的角度估计,对于本篇文章主要回答5个问题 1.在雷达的前方,如何估计前方一个物体的角度 2.角度测量的准确性 3.如何测量多个物体的角度 4.雷达可测的角度的视场最大值为多少 5.角度分辨率取决于什么因素 文章目录估计雷达前面一个物体的角度角度测量的准确性雷达的最大角视场测量雷达前方多个距离和速度相同的物体角度分辨率角度估计的流程 估计雷达前面一个物体的角度 估计一个物体的角度,最少需要两根接收天线 发射天线发送一个chirp,经过物体发射后信号,信号分别被第一根天 阅读详情

相关推荐

Keil5编译报错:ARM Compiler Version 5缺失的完整解决方案

本文提供了Keil5编译报错“ARM Compiler Version 5缺失”的完整解决方案。详细介绍了手动安装ARM Compiler Version 5的步骤,包括下载安装包、配置编译器路径及常见问题排查,帮助开发者快速恢复老项目的编译环境。

bb456的博客 945

【Android】之 Flow 的使用和浅析

Google 推荐在 MVVM 架构中使用 Kotlin Flow,可见其发展前景是相当好的。Kotlin Flow 可以用于替换 Rxjava,也可以用于替换 LiveData,功能十分强大,它是 Kotlin 协程库提供的一部分功能,因此,如果我们项目中已经引用了 Kotlin 协程,则不需要额外引入 Flow 相关的依赖。在协程中,挂起函数最多仅能返回一个值,而数据流 Flow 可按顺序发出多个值,例如,我们可以通过数据流从数据库中实时接收更新。数据流使用挂起函数通过异步方式生成和使用值,也就是说,数

yang553566463的博客 1万+

汽车以太网- IEEE 802.3标准

关于汽车以太网,大家看到最多的标准大概就是IEEE802.3bw,也就是我们车内使用的百兆以太网,专业称呼是100BASE-T1,该标准是车内百兆以太网的物理层协议,是我们学习汽车以太网必须要了解的协议。在正式了解协议之前,我们先介绍下什么是IEEE802.3标准。............

weixin_39974126的博客 7108

个人写的SD卡代码(SDIO模式)

个人写的SD卡代码,有移植ST提供的代码,勿喷,毕竟同样是SD卡,再怎么自己写也有一样的,所以有的地方干脆直接移植,了。由于中途事情太多,断断续续,整的我不想搞了,所以临时整理下就发了,不规范的请不要告诉我,说了我也不会改的。所有的代码包括.c.h加起来66K。代码基于F429,使用DMA模式,不考虑不带SDIO的,不考虑51。需要的可以点击下面的链接下载,或者加群索取142215493。下面附上...

qq_32815525的博客 5110

搭建适用于lammps中opls-aa力场的文件流程

现在我已经解决了以上问题,并且通过我的方法可以实现从空白文档到搭建完成以上全部内容,后期只要细心检查即可。需要的data文件最关键是获得相应阴阳离子的mmol文件,因此问题转化为构建一份mmol文件。主要用到的软件及程序:gaussian09,makemol程序(tranal),opls-aa的参数文件。二面角个数:成角原子序号及对应的参数(这里PF6的结构没有二面角,所以为0)参考文献个数:文献名(空够行数即可,这些是给自己的备忘))和自身体系对应的参考文献,修改或填入对应的参数即可。

baguette的博客 2887

使用plot函数可视化F分布累积分布函数数据(R语言)

在上面的代码中,我们使用了seq()函数来生成从0到5之间,以0.1为步长的一组F值。然后,我们指定了分子自由度为3,分母自由度为8,并使用pf()函数计算了对应的F分布CDF值。在本文中,我们将介绍如何使用R语言的plot函数来可视化F分布的累积分布函数(CDF)数据。通过使用plot函数,我们可以直观地了解F分布的累积分布函数,并对F值和对应的累积概率之间的关系有更深入的认识。运行上述代码后,我们将获得一个由F值和对应的累积概率构成的图形,其中x轴表示F值,y轴表示累积概率。

LogicGuruX的博客 502

MEMORY系列之“SDIO”

本文主要介绍SDIO接口及SDIO存储卡的相关特性。 1、SDIO接口 SDIO接口不只用于存储数据的SD存储卡,还有SD I/O卡,MMC卡。 其中SD I/O卡与SD存储卡是有区别的,SD I/O卡实际上就是利用SDIO接口的一些模块,插入SD的插槽中,扩展设备的功能,如:SDI/O Wi-Fi,SDI/O CMOS相机等。 SD规范包括如下几部分: 物理层规范 文件系统规范 SD卡安全规范 SD卡音频应用规范+其他相关应用规范 SD MC扩展规范、移动设备 SDIO卡规范

sinat_15677011的博客 4951

halcon第二讲:焊点提取

本文要完成的任务是将下图中焊点提取出来,对应于halcon例程Blob分析中的ball.hdev。 dev_open_window (0, 0, 512, 512, 'black', WindowHandle) read_image (Image, 'die_03.png') disp_continue_message (WindowHandle, 'black', 'true') sto...

qq_24946843的博客 7175

cube sdio fatfs 初始化sd卡_STM32Cube19 | 使用SDMMC接口读写SD卡数据

本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SDMMC外设读取SD卡数据。1. 准备工作硬件准备开发板首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi):Micro SD卡小熊派开发板板载 Micro SD 卡槽,最大支持 32 GB,需要提前自行准备一张 Micro SD卡,如图:软件准备需要安装好Keil - MDK及芯...

weixin_39668571的博客 543

ABAP 平台下配置 OAuth 2.0 Authorization Code 授权类型的完整指引

本文是面向ABAP管理员和SAP开发者的OAuth 2.0授权码配置实战指南。文章详细介绍了在ABAP平台启用Authorization Code的完整流程,包括前置条件检查(如TLS配置和系统用户准备)、SOAUTH2事务码中各字段配置要点(授权类型启用、Redirect URI设置、授权码有效期等)、Scope分配规则以及验证方法。通过一个销售订单OData接口的实际案例,说明了如何将抽象规范转化为具体配置。最后提供了多种验证方式(事务码测试、端点测试和Postman测试)以及关键配置参数(如授权码有效

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 296

Python赋能,洞见先机:构建基于异步爬虫与流处理的实时舆情监控系统

我们将从核心概念入手,逐步搭建一个集。.option("es.resource", "public-opinion-%s" % time.strftime("%Y-%m-%d")) \ # 按日期分索引。| 数据采集层 |----->| 消息队列层 |----->| 流处理与分析层 |----->| 存储与可视化层 |:使用Spark Streaming的状态操作或Flink的CEP库,检测更复杂的模式,如“某关键词的负面舆情在1小时内激增500%”。

2201_76125261的博客 434

SDIO接口(4)——SDIO通信

SD总线上的通信基于命令和数据位流,这些命令和数据位流由起始位启动,并由停止位终止。SDIO总线上的设置和控制都是通过命令来实现,SDIO总线上都是HOST端发起请求,然后DEVICE端回应请求,其中请求和应答中会包含数据信息。...

dkmknjk的博客 8257

NVIDIA GR00T SONIC - 人形机器人强化学习全身控制入门教程(一)

SONIC 是一个类人行为基础模型,它为机器人提供了一套从大规模人类动作数据中学习而来的核心运动技能。与为每个动作单独构建控制器不同,SONIC 将动作追踪作为可扩展的训练任务,因此单一套统一策略即可产生自然的全身运动,并支持多种多样的行为。         🎯 主要特点: 🚶 自然的全身运动(行走、爬行、动态动作) 🎮 支持实时 VR 遥操作 🤖 高级规划与交互的基础 📦 即用型 C++ 推理栈

2506_90492529的博客 840

PHP打印安卓log,在Android界面上显示和获取Logcat日志输出的方法

一、首先我们要获取Logcat中的日志如何获取呢?首先我们要先定义一个String[]数组,里面的代码是//第一个是Logcat ,也就是我们想要获取的log日志//第二个是 -s 也就是表示过滤的意思//第三个就是 我们要过滤的类型 W表示warm ,我们也可以换成 D :debug, I:info,E:error等等String[] running = new String[]{"logcat...

weixin_42552315的博客 544

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Android学习笔记之文件下载

网络文件是怎么下载到本地的?简单的说就跟你在本地复制粘贴是一样的道理,就是把网络上文件里面的内容copy到你本地上一个文件里面,这样就实现了文件的下载.   Andoird应用程序里要实现文件下载,需要哪些步骤呢?   一.获得上网的权限 我们要在网络上下载文件,首先你得可以上网。 可以上网还不行,你得给你的应用程序响应的访问网络的权限才行,我们只需要在AndroidManifest.xm

落日小屋 1024

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android文件的读写

   Android的文件读写与JavaSE的文件读写相同,都是使用IO流。而且Android使用的正是JavaSE的IO流,下面我们通过一个练习来学习Android的文件读写。        1.创建一个Android工程        Project name:File        BuildTarget:Android2.2        Application name:文...

不积跬步 无以至千里 不积小流 无以成江海 322

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java android下载文件_Android利用Http下载文件

packagelinys.download;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importj...

weixin_28744601的博客 197

Android 截屏保存图片

记录: /** * 1.获取和保存当前屏幕的截图 */ private void GetandSaveCurrentImage() { //1.构建Bitmap WindowManager windowManager = getWindowManager(); Display display = windowManager.getDefaultDisplay(); int width = displa

未来很长,但我会努力的走下去。 719

android 读取存储,android之文件存储和读取

一、权限问题手机中存储空间分为ROM和SDcard,ROM中放着操作系统以及我们安装的APP,而sdcard中一般放置着我们APP产生的数据。当然,Android也为每个APP在ROM中创建一个数据存储空间,具体目录是/data/data下。在真机中调试中,该目录对于其他用户是没有开启任何权限,所以在DDMS中我们是打不开该目录的。解决方案就是我们通过adb登录到我们手机上,然后直接切换到root...

weixin_39713833的博客 394

android java 写文件操作_Android编程之文件的读写实例详解

本文实例分析了Android编程之文件的读写方法。分享给大家供大家参考,具体如下:Android的文件读写与JavaSE的文件读写相同,都是使用IO流。而且Android使用的正是JavaSE的IO流,下面我们通过一个练习来学习Android的文件读写。1.创建一个Android工程Project name:FileBuildTarget:Android2.2Application name:文件...

weixin_39875754的博客 463

android java file_Android入门:File文件存储

数据的存储有多种方式,比如数据库存储、SharedPreferences存储、文件存储等;这里我们将要介绍最简单的文件存储方式;文件存储简单的来说就是一般的JAVASE中的IO流,只是把他应用于Android手机中而已;一、文件存储核心代码文件存储(1)FileOutputStream out = context.openFileOutput(String filename,int mode); ...

weixin_36384964的博客 340

Android 从网络上下载文件以及写入到SDcard里面

本节课讲述如何使用Android应用程序在网络上下载文件。    比如说一个背单词的应用,词库更新,还有音乐播放器之类的都需要这个功能。    1.如何使用HTTP协议下载文件    2.将下载的文件写入SDCARD    FTP HTTP 等很多协议都可以实现下载文件,我们当然也是可以将下载文件放入主存储文件,但是由于存储空间限制,我们一般放置带SD卡里。   文件下载步骤 1.创建

wuxinliulei的专栏 2851

Android14_SharedPreferences及SDCard

Android数据存储——SharedPreferences及SDCard 一、数据存储选项:Data Storage ——Storage Options【重点】 1、Shared PreferencesStore private primitive data in key-value pairs.保存简单的键值对数据。2、Internal StorageS

huohu1007的博客 719

保存文件

利用IO流保存文件 /** * 保存文件 * @param filename 文件名称 * @param content 文件内容 * @throws FileNotFoundException */ public void save(String filename,String content) throws Exc

qq_29327405的博客 285

android+画面数据存储方式,Android数据存储方式(一)文件

http://blog.youkuaiyun.com/wulianghuan/article/details/8607573很多时候我们开发的软件需要对处理后的数据进行存储,以供再次访问。Android为数据存储提供了如下几种方式:1、文件2、SharedPreferences(偏好参数)3、SQLite数据库4、内容提供者(Content provider)5、网络本篇介绍第一种存储方式:文件,我们采用文件...

weixin_26833939的博客 137

在Android界面上显示和获取Logcat日志输出

一、首先我们要获取Logcat中的日志 如何获取呢? 首先我们要先定义一个String[]数组,里面的代码是 //第一个是Logcat ,也就是我们想要获取的log日志 //第二个是 -s 也就是表示过滤的意思 //第三个就是 我们要过滤的类型 W表示warm ,我们也可以换成 D :debug, I:info,E:error等等 String[] running = new String[]{"...

weixin_33763244的博客 2119
上一篇: Android file类使用详解-SDcard
下一篇: Android开发:创建动态drawable
Android开发-CXY
博客等级 码龄10年 33粉丝 57原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值