Android file类使用详解

2023-10-30

一.Android file类
    在开发Android应用时免不了会跟文件打交道,本篇文章记录总结自己常用到的文件操作,数据的存储有多种方式,比如数据库存储、SharedPreferences存储、文件存储等;这里我们将要介绍最简单的文件存储方式;文件存储简单的来说就是一般的JAVASE中的IO流,只是把他应用于Android手机中而已。

二.Android file类使用

    File文件的存储需要在程序中使用sdcard进行数据的存储,需要在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.file">
    <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>

    File类语法
1.File(String pathname)
File file = new File ("/mnt/sdcard/test.txt");
2.File(String dir, String subpath)
File file = new File("/mnt/sdcard/temp", "test.txt");
          File类常用方法
boolean exists() 测试文件是否存在
boolean delete() 删除此对象指定的文件
boolean createNewFile() 创建新的空文件
boolean isDirectory() 测试此File对象表示的文件是否是目录
boolean mkdir() 创建由该File对象表示的目录
boolean mkdirs() 创建包括父目录的目录
String getAbsolutePath() 返回此对象表示的文件的绝对路径名
String getName() 返回此对象表示的文件的名称
String getParent() 返回此File对象的路径名的上一级,若路径名没有上一级,则返回null
使用mkdir创建由该File对象表示的目录
package com.example.cxy.file;

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.Toast;

import java.io.File;
import java.io.IOException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }
    private void initView(){
        btn= (Button) findViewById(R.id.button);
        btn.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        //先实例化一个file对象,参数为路径名
        File file = new File("/mnt/sdcard/Tenect/chenxiaoyang.txt");
        //File file = new File("/mnt/sdcard/Tenect","chenxiaoyang.txt");
        try {
            //判断文件是否存在
            if (file.exists()){
                //文件如果存在删除这个文件
                file.delete();

                Toast.makeText(MainActivity.this, "删除成功了", Toast.LENGTH_SHORT).show();
            }else{
                //创建一个新的文件
                file=new File("/mnt/sdcard/Tenect");
                //先创建文件夹
                file.mkdir();
                //创建这个文件
                file = new File("/mnt/sdcard/Tenect/chenxiaoyang.txt");
                file.createNewFile();
                Toast.makeText(MainActivity.this, "创建成功了", Toast.LENGTH_SHORT).show();
            }
            //获取当前file文件的绝对路径
            Log.i("$$$",file.getAbsolutePath());
            //获取当前file文件的名字,包括后缀名
            Log.i("$$$",file.getName());
            //获取当前file文件的以上所有级的目录
            Log.i("$$$",file.getParent());
            //测试此file文件是否是一个目录
            boolean directory=file.isDirectory();
            Log.i("$$$",String.valueOf(directory));
        } catch (IOException e) {
            e.printStackTrace();
            Toast.makeText(MainActivity.this, "失败了", Toast.LENGTH_SHORT).show();
        }
    }
}
<?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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.cxy.file.MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="写入"
        android:id="@+id/button"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"/>
</RelativeLayout>

使用mkdirs创建包括父目录的目录
package com.example.cxy.myapplication;

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

import java.io.File;
import java.io.IOException;

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    private Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        inintView();
    }

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

    @Override
    public void onClick(View v) {
        //先实例化一个file对象,参数为路径名
        File file=new File("/mnt/sdcard/tmp/one/two/three","test.txt");
        try {
            //判断文件是否存在
            if(file.exists()){
                //文件如果存在删除这个文件
                file.delete();
                Toast.makeText(MainActivity.this,"删除成功", Toast.LENGTH_SHORT).show();
            }else{
                //创建一个新的文件
                file=new File("/mnt/sdcard/tmp/one/tow/three");
                //先创建文件夹,mkdirds可直接创建多级文件夹
                file.mkdirs();
                //创建这个文件
                file=new File("/mnt/sdcard/tmp/one/tow/three/test.txt");
                file.createNewFile();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

<?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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.cxy.myapplication.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="56dp"/>
</RelativeLayout>

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android file类使用详解 的相关文章

  • Attribute application@appComponentFactory value=(android.support.v4.app.CoreComponentFactory) from

    程序在编译时报错 在执行合并AndroidMainfest时报Attribute application appComponentFactory value android support v4 app CoreComponentFacto
  • 安卓架构组件实战——Lifecycle

    注 本文涉及代码请看 项目源码 Lifecycle是谷歌推出的一个架构组件 用于感知组件生命周期 并赋予了非组件对象感知生命周期的能力 Lifecycle组件用来响应另一个组件的生命周期状态变化 例如Activity和Fragment 可以
  • Android file类使用详解

    一 Android file类 在开发Android应用时免不了会跟文件打交道 本篇文章记录总结自己常用到的文件操作 数据的存储有多种方式 比如数据库存储 SharedPreferences存储 文件存储等 这里我们将要介绍最简单的文件存储
  • Android内存泄露

    Android内存泄露概述 了解Android内存泄露之前 需要对java的内存管理和GC机制有个简单的了解 Android内存泄露的根本原因是引用者的生命周期大于被引用者 举个例子 有对象A B B有A的强引用 GC要回收A时发现B还未销
  • 【Android】WebView控件最全使用解析

    WebView控件最全使用解析 一 WebView 概述 二 WebView使用基础篇 2 1添加方式 2 2 加载远程网页 2 3 加载本地网页 2 4 加载HTML片段 2 5 WebView 常用方法 三 WebView 进阶篇 3
  • 自定义时间Toast(只弹一次)

    CToast类 package com pinkman dota util import com pinkman dota R import android content Context import android graphics C
  • 源码环境下添加系统Service流程

    关于系统服务的分析 以及如何实现添加系统服务 分析详细跳转链接 Android系统服务 SystemService 简介 添加系统Service涉及的文件 修改文件 Android mk api current txt api system
  • Android(java方法)上实现mp4的分割和拼接 (二)

    http blog csdn net banking17173 article details 20646251 这节谈一下如何在Android上实现mp4文件的高效率切割 业务需求举例 把一段2分钟的mp4文件切割出00 42 至 01
  • Android Studio连接夜神模拟器

    Android Studio连接夜神模拟器 一 下载夜神模拟器 二 夜神模拟器连接Android Studio 三 其他操作 3 1 屏幕旋转 3 2 创建其他模拟器 一 下载夜神模拟器 官网 https www yeshen com 下载
  • Android Studio 将项目转变成library(model)引入到另一个项目中使用

    最近要将项目转换成library 引入到另一项目中使用 所以记录引用的过程 1 修改配置 2 修改app文件夹里面的iml文件名称 在APP文件夹下 找到app iml 文件 将文件名改为想要命名的名称 这里改成loadingviewlir
  • FloatingActionButton的使用

    FloatingActionButton FAB 是 Android 5 0 新特性 Material Design 中的一个控件 是一种悬浮的按钮 FloatingActionButton 是 ImageView 的子类 因此它具备Ima
  • Android解决问题的思路

    1 前言 授人以鱼不如授人以渔 当向别人请教了问题且被解答了疑惑后 或许也想知道对方是如何思考 如何按照一定的的逻辑得出最终的答案 故想分享一下我这6年Android开发中是如何解决问题的 一家之言 请同学们多多指教 2 指导性原则 第一点
  • Android Service最全面的解析

    本篇文章再次来自 刘明渊 话说刘明渊已经是我公众号的老熟人了 这是第三次发表他投稿的文章 前两篇关于Intent的译文都广受大家好评 而本篇对于Service的译文同样精彩 其实像这种官方文档翻译类文章的投稿我都是非常欢迎的 因为官方文档的
  • Android 架构设计的思想与原则是什么?

    http www zhihu com question 19717380
  • Android Studio中重写onClick()方法时,出现Method does not override method from its supperclass问题

    用实现接口的方式来重写监听器中的onClick 方法 改正方法 应在让该类继承implements View OnClickListener
  • 【Android】DataBinding 最全使用解析

    DataBinding 最全使用解析 一 DataBinding 概述 二 基本用法 2 1 使用入门 2 2 布局和绑定表达式 2 3 事件绑定 2 4 单向绑定 2 5 双向绑定 三 高级用法 BindingAdapter 一 Data
  • Android四大组件-BroadcastReceiver、ContentProvider、Service

    目录 一 BroadcastReceiver 1 定义 2 作用 3 生命周期 4 广播注册方式 动态注册 静态注册 5 广播类型 普通广播 即发出广播后所有接收者都能收 有序广播 按照广播的优先级接受 broadcastReceiver可
  • 【Android】相对布局(RelativeLayout)最全解析

    Android 相对布局 RelativeLayout 最全解析 一 相对布局 RelativeLayout 概述 二 根据父容器定位 三 根据兄弟控件定位 一 相对布局 RelativeLayout 概述 相对布局 RelativeLay
  • TelephonyManager类使用方法大全

    这个类是很有用地 可以得到很多关于手机的信息 做应用时必须的工具 不废话 直接上注释后的代码 请享用 code author dingran 创建日期 2010 4 29 下午05 02 47 package net sunniwell a
  • 多线程下载文件(支持暂停、取消、断点续传)

    多线程下载文件 支持暂停 取消 断点续传 多线程同时下载文件即 在同一时间内通过多个线程对同一个请求地址发起多个请求 将需要下载的数据分割成多个部分 同时下载 每个线程只负责下载其中的一部分 最后将每一个线程下载的部分组装起来即可 涉及的知

随机推荐

  • 获取当前季度、前N季度、判断时间是否超出该季度

    获取当前季度 前N个季度的值 指定时间和季度 来判断该事件是否超出了该季度 ClassName QuarterUtil Description 季度工具类 public class QuarterUtil private static fi
  • Prometheus部署

    目录 一 部署prometheus 1 环境准备工作 2 普罗米修斯的部署 2 1 上传prometheus到 opt目录中 解压 2 2 修改配置文件 2 3 配置系统启动文件 设置开机自启 2 4 开启prometheus 并访问网页验
  • maven install时报错Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile

    首先检查父项目 子项目的jdk版本是否一致 编码格式是否一致 我的问题就错在了编码格式上 父项目用的是UTF 8 子项目新建的 默认GBK 这时 使用maven install命令出错 提示 INFO pims core Maven Web
  • cycleGAN有matlab代码吗,CycleGAN的代码组成

    train py 是通用训练脚本 它为许多模型 可选的模型比如 pix2pix cyclegan colorization 和不同的数据集服务 可选的数据集模式包括 aligned unaligned single colorization
  • kdj买卖指标公式源码_通达信指标公式源码买卖操盘指标副图源码

    做价值的传播者 一路同行 一起成长 问题 怎样才能每天都收到这类文章 答案 只需点击上方 通达信公式指标 VAR1 CLOSE gt REF CLOSE 1 AND CLOSE gt REF CLOSE 2 VAR2 REF VAR1 1
  • docker方式部署redis

    docker 安装redis 拉去镜像 docker pull redis Using default tag latest latest Pulling from library redis 8ec398bc0356 Pull compl
  • java方法引用的使用详解

    使用情境 当要传递给Lambda体的操作 已经有实现的方法了 可以使用方法引用 方法引用的本质 本质上就是Lambda表达式 而Lambda表达式作为函数式接口的实例 所以 方法引用 也是函数式接口的实例 使用格式 类 或对象 方法名 具体
  • Layui官网文档备份, Layui文档站点,LayuiAdmin

    layui文档在线查看 镜像 https www layuion com LayuiAdmin v2 5 6 iframe版 后台管理模板 有需求的 评论区留言1
  • 【QT】:QT实现关联和解决关联

    connect实现关联 disconnect实现解除关联 思路 1 一个可用 另一个就不可用 2 关联和解除关联 代码在cpp文件里面 void Widget on pushButton 6 clicked connect ui gt li
  • anylabeling安装与使用说明

    文章目录 一 anylabeling说明 二 安装教程 1 可执行程序方式 2 python程序 一 anylabeling说明 官网 https anylabeling nrl ai docs 该工具作为一个具有Segment Anyth
  • 西门子锂电池项目,1500安全型PLC程序

    西门子锂电池项目 1500安全型PLC程序 包含对接雅马哈机器人 视觉 库卡机器人 MES通信程序块 由STL语言和LAD编写7678621367452135油腻的肥宅仔
  • Linux下Nginx编译安装过程详解

    Linux下Nginx编译安装过程详解 一 Nginx介绍 二 Nginx源码下载 1 打开Nginx官网 2 下载官网的源码包 三 Nginx源码安装 1 解压源码包 2 安装开发包组及环境 3 编译Nginx源码 四 Nginx启动与检
  • qt memring固定片元内存池制作

    内存池 其实和qt无关 不过既然已经使用qt 就加上吧 无论使用qt与否 都额可以使用 限制为片元固定大小内存 非固定内存内存池可以看我的其他文章 数据结构定义 ifndef C MEM H define C MEM H include
  • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 论文解读

    BERT Pre training of Deep Bidirectional Transformers for Language Understanding 1 BERT模型 1 1 Pre training BERT 1 2 Fine
  • Pandownload复活教程

    众所周知 因为某些原因pandownload作者已被抓捕 pandownload无法再次登录 但是 经过热心网友的努力 发现被端掉的只是pandownload的服务器 其余功能皆可正常使用 故在此根据网友总结 再次验证了pandownloa
  • Java多线程 - 锁

    Java多线程 锁 三性 可见性 指的是线程之间的可见性 一个线程对状态的修改 对其他线程是可见的 在 Java中 volatile synchronized 和 final 实现可见性 原子性 如果一个操作是不可分割的 我们则称之为原子操
  • mmap-转载

    平时在面试中你肯定会经常碰见的问题就是 RocketMQ为什么快 Kafka为什么快 什么是mmap 这一类的问题都逃不过的一个点就是零拷贝 虽然还有一些其他的原因 但是今天我们的话题主要就是零拷贝 传统IO 在开始谈零拷贝之前 首先要对传
  • 《C++程序设计原理与实践》笔记 第16章 图形用户界面

    图形用户界面 graphical user interface GUI 允许用户通过点击按钮 选择菜单 以不同的方式输入数据以及在屏幕上显示文本和图形等方式与程序进行交互 在本章中 我们将介绍编写代码来定义和控制GUI应用的基本方法 16
  • linux用户登录,鉴定故障

    异常信息 解决方法 1重启linux 按E 结果如图所示 2选择图中全亮的那一行 继续按E 3quite 后面 空格 1 输入完毕按enter 4 按B 5修改密码
  • Android file类使用详解

    一 Android file类 在开发Android应用时免不了会跟文件打交道 本篇文章记录总结自己常用到的文件操作 数据的存储有多种方式 比如数据库存储 SharedPreferences存储 文件存储等 这里我们将要介绍最简单的文件存储