移动技术开发:文件的读取
1 实验名称
文件的读写
2 实验目的
掌握Android中读写文件的实现方法。
3 实验源代码
布局文件代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:id="@+id/main"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context=".MainActivity"><EditTextandroid:id="@+id/inputET"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="请输入你想写入的内容"android:minLines="2"/><Buttonandroid:id="@+id/inputBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="写入"/><EditTextandroid:id="@+id/outputET"android:layout_width="match_parent"android:layout_height="wrap_content"android:enabled="false"/><Buttonandroid:id="@+id/outputBtn"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="读取"/>
</LinearLayout>
Java代码:
package com.example.fileiotest;import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;import androidx.activity.EdgeToEdge;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class MainActivity extends AppCompatActivity {private EditText inputET = null;private EditText outputET = null;private Button inputBtn = null;private Button outputBtn = null;private String fileName = "content.txt";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);inputET = findViewById(R.id.inputET);outputET = findViewById(R.id.outputET);inputBtn = findViewById(R.id.inputBtn);outputBtn = findViewById(R.id.outputBtn);inputBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {try {//将用户输入的信息写入到文件中String inputContent = inputET.getText().toString().trim();//创建输出流管道FileOutputStream fos = openFileOutput(fileName, Context.MODE_APPEND);//向文件中写入数据fos.write(inputContent.getBytes());inputET.setText("");fos.close();} catch (IOException e) {throw new RuntimeException(e);}}});outputBtn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {try {//从文件中读取数据//创建一个连接文件的输入流管道FileInputStream fis = openFileInput(fileName);//创建一个存放读取过来的数据是缓存数组byte[] bufffer = new byte[256];//创建可变长度的缓存字符串StringBuffer stringBuffer = new StringBuffer("");int hasRead = 0;//记录读取量while ((hasRead=fis.read(bufffer)) != -1){stringBuffer.append(new String(bufffer,0,hasRead));}outputET.setText(stringBuffer.toString());fis.close();} catch (IOException e) {throw new RuntimeException(e);}}});}}
4 实验运行结果图


5 实验总结
第一步,写布局文件。主要是两个按钮,一个文本框,一个文本编辑框;两个按钮分别是写入和读取。
第二步,写Java代码。关于写入,将用户输入的信息写入到文件中,创建输出流管道,向文件中写入数据;关于读取,从文件中读取数据,创建一个连接文件的输入流管道和一个存放读取过来的数据是缓存数组,创建可变长度的缓存字符串,记录下读取量。
这个实验存在些许不足,个人认为主要是在于一次只能读取一个先前写入的内容,这个部分应该还可以继续优化。
相关文章:
移动技术开发:文件的读取
1 实验名称 文件的读写 2 实验目的 掌握Android中读写文件的实现方法。 3 实验源代码 布局文件代码: <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android&quo…...
Linux 中的 Makefile 伪目标详解
在 Linux 环境中,Makefile 是构建项目的重要工具,它通过定义规则,指导 make 工具如何编译和链接程序。通常我们会在 Makefile 中定义目标(target),这些目标通常对应文件名。然而,有一种特殊类型…...
Java基础(中)
变量 成员变量与局部变量的区别 语法形式:从语法形式上看,成员变量是属于类的,而局部变量是在代码块或方法中定义的变量或是方法的参数;成员变量可以被 public,private,static 等修饰符所修饰,而局部变量不能被访问控…...
Leetcode热题100-200 岛屿数量
Leetcode热题100-200 岛屿数量 1. 题目描述2. 代码实现1. dfs算法2. bfs算法 1. 题目描述 200 岛屿数量 2. 代码实现 1. dfs算法 class Solution { public:int numIslands(vector<vector<char>>& grid) {int m grid.size(), n grid[0].size();int res 0…...
大数据新视界 --大数据大厂之 GraphQL 在大数据查询中的创新应用:优化数据获取效率
💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...
swift使用代码结构解析
多模态模型的训练llamafactory也可以训练,但是总的来说,llamafactory对多模态模型的支持还是不太多,ms-swift支持的多模态模型更多,因此有时候去找框架是否够支持相应的模型时会有所困难,所以对这些框架的代码也要稍微…...
五、Python基础语法(程序的输入和输出)
一、输入 输入:输入就是获取键盘输入的数据,使用input()函数。代码会从上往下执行,当遇到input()函数,就会暂停执行,输入内容后,敲回车键,表示本次的输入结束。input函数得到的数据类型都是字符…...
【C语言】常见概念
文章目录 库函数关键字字符和ASCll编码字符串与\0转义字符语句和语句分类注释 库函数 为了不再重复实现常见的代码,让程序员提升开发效率,C语言标准规定了一组函数,这些函数再由不同的编译器厂商根据标准进行实现,提供给程序员使…...
Electron应用创建和打包
一、创建项目目录 创建NodeJs项目目录,项目有关的文件、依赖包都将在本目录创建和安装。 mkdir hello_electron & cd hello_electronCMD执行以上命令将在用户目录下创建hello_electron并进入该目录。当然也可以手动在任何地方创建目录,cmd中cd 路径…...
代码随想录算法训练营第五六天| 99. 岛屿数量 100. 岛屿的最大面积
今日任务 99. 岛屿数量 深度搜搜 99. 岛屿数量 广度搜索 100. 岛屿的最大面积 99. 岛屿数量 题目链接: 99. 岛屿数量 import java.util.Scanner;public class Main {public static int[][] dir {{0, 1},{1, 0},{-1, 0},{0, -1}};public static void dfs(boolean…...
图解 微信开发者工具 小程序源码 调试、断点标记方法 , 微信小程序调试器,真机调试断点调试方法,小程序网络API请求调试方法 总结
在我们使用微信开发者工具进行微信小程序开发的时候,在这个微信开发者工具的代码编辑框里面我们是无法像使用vscode, idea等IDE工具时那样直接对代码打断点进行调试, 原因是小程序实际上他就是一个web浏览器应用的包装, 在其内部使用的还是类似chrome的…...
注释,换行,控制台输入输出,命名空间,省略return语句
注释 1.单行注释 // 2.多行注释 /*注释内容*/ 解释代码的作用;注释多余内容;注释不会影响代码执行 换行 \nstd::endl 控制台输入输出 输出123456 可一次性输出多个 std::cout<<"123456"//示例获取控制台输入内容,存储在…...
宠物空气净化器该怎么选?希喂,小米、安德迈这三款好用吗?
不得不说,虽然现在购物网站的活动不少,可力度都好弱啊!我想买宠物空气净化器很久了,觉得有点贵,一直没舍得入手。价格一直没变化,平台小活动根本没什么优惠,只能寄希望于双十一了,准…...
【Mybatis篇】Mybatis的注解开发
🧸安清h:个人主页 🎥个人专栏:【计算机网络】,【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 文章目录 🎯 Select注解 …...
NEC协议
NEC协议是一种红外线通信协议,广泛应用于家电遥控器和其他红外线设备之间的通信。以下是对NEC协议的详细解释和介绍: 一、开发背景与应用 NEC协议由日本电子公司NEC(日本电气公司)开发,因其简单、易于实现和广泛兼容…...
Meta 发布 Quest 3S 头显及 AR 眼镜原型:开启未来交互新视界
简介 在科技的浪潮中,Meta 始终站在创新的前沿,不断为我们带来令人惊叹的虚拟现实和增强现实体验。2024 年 10 月 6 日,让我们一同聚焦 Meta 最新发布的 Quest 3S 头显及 AR 眼镜原型(Orion),探索这两款产品…...
【CSS】水平垂直居中
给父盒子设置属性 flex display: flex;写在父元素上这就是定义了一个伸缩容器justify-content:center 设置主轴对齐方式为居中,默认是横轴。子元素居中。align-items:center 设置纵轴对齐方式为居中,默认是纵轴。子元素居中。 给…...
欧盟零毁林法案 EUDR
EUDR法案,即欧盟零毁林法案(EU Deforestation Regulation),是欧盟为了减少全球森林砍伐和退化,应对气候变化和生物多样性丧失而制定的一项重要法规。以下是对该法案的详细解读: 一、法案背景与目的 EUDR法…...
26.删除有序数组中的重复项
题目::26. 删除有序数组中的重复项 - 力扣(LeetCode) 思路:只要不和前面的数一样就可以移动指针,进行赋值 代码: class Solution { public:int removeDuplicates(vector<int>& nums) {int slow 0 ;for(int fast 1; fast < …...
JAVA实现公众号扫码登录和关注功能实战
前言 使用第三方插件 <dependency><groupId>com.github.binarywang</groupId><artifactId>weixin-java-mp</artifactId><version>4.6.0</version> </dependency>准备APPID和appSecet 登录微信公众号后台,复制ap…...
PNetLab-vs-EVE-NG安全性分析
1 PNetLab vs EVE-NG社区版:从一次CVE看"免费fork"的安全代价 1.1 痛点引入 2025年11月,CVE-2025-63749被公开披露——PNetLab 5.3.11存在命令注入漏洞,攻击者通过qemu_options参数注入$(/bin/bash -c reverse_shell),…...
从CTF靶场到实战:手把手教你复现ctfshow web3的PHP伪协议利用(附BurpSuite抓包技巧)
从CTF靶场到实战:深入解析PHP伪协议利用与BurpSuite实战技巧 在网络安全领域,CTF比赛不仅是检验技能的竞技场,更是学习实战渗透技术的绝佳资源。ctfshow web3这道题目巧妙地将PHP伪协议利用与文件包含漏洞结合在一起,为我们提供了…...
别再用时间机器了!用macOS恢复模式重装系统,保姆级图文教程(含抹盘避坑指南)
别再用时间机器了!用macOS恢复模式重装系统,保姆级图文教程(含抹盘避坑指南) 当你发现Mac运行速度明显变慢,或者准备转手出售设备时,彻底重装系统往往是最有效的解决方案。许多用户对macOS恢复模式存在本能…...
独立开发者如何借助Taotoken透明计费精细控制多个副业项目成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何借助Taotoken透明计费精细控制多个副业项目成本 对于独立开发者或小型工作室而言,同时维护多个AI驱动的…...
Perplexity国际新闻搜索深度解析(全球记者都在用的AI情报工作流)
更多请点击: https://codechina.net 第一章:Perplexity国际新闻搜索深度解析(全球记者都在用的AI情报工作流) Perplexity 不仅是问答引擎,更是现代调查记者与情报分析师的“实时新闻雷达”。其核心优势在于融合权威信…...
KMS_VL_ALL_AIO:一站式智能激活工具,彻底解决Windows与Office激活难题
KMS_VL_ALL_AIO:一站式智能激活工具,彻底解决Windows与Office激活难题 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO KMS_VL_ALL_AIO是一款开源的智能激活脚本ÿ…...
Windows Audio服务启动报错‘193 0xc1’?可能是系统文件损坏了,试试这个修复流程
Windows音频服务报错‘193 0xc1’深度修复指南:从原理到实战 当你在Windows系统中遭遇音频服务无法启动,并看到神秘的"193 0xc1"错误代码时,这通常意味着系统核心组件出现了问题。不同于普通的驱动故障,这类错误往往需要…...
【免费下载】 Windows Installer Clean Up 简体中文版
Windows Installer Clean Up 简体中文版 【下载地址】WindowsInstallerCleanUp简体中文版 本仓库提供了一个名为“Windows Installer Clean Up 简体中文”的资源文件下载。该工具是一款专门用于清理Windows系统中的安装程序残留文件的实用工具。通过使用此工具,您可…...
从Vue源码的preinstall钩子看团队包管理器规范:npx only-allow pnpm的工程实践
1. 为什么需要统一包管理器 最近在查看Vue源码时,发现package.json里有个有趣的配置:"preinstall": "npx only-allow pnpm"。这行看似简单的命令,背后隐藏着团队协作中一个非常重要的问题——包管理器的统一性。 想象一下…...
别再乱设JVM堆大小了!Elasticsearch 8.x 内存配置保姆级避坑指南
Elasticsearch 8.x 内存配置实战:从GC崩溃到性能巅峰的避坑手册 凌晨三点,服务器告警又一次响起。屏幕上的GC日志像瀑布一样滚动,节点频繁脱离集群,查询延迟突破天际——这可能是每个Elasticsearch运维人员都经历过的噩梦时刻。而…...
