Android file类使用详解

本文详细介绍Android开发中File类的使用方法,包括权限配置、构造函数、常见方法如exists(), delete(), createNewFile(), mkdir(), mkdirs()等,并提供具体代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

    最近使用File,发现要配合FileProvider类使用,其中File让我头大,所以索性记录一下

Android file类

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

Android file类使用

   File文件的存储需要在程序中使用sdcard进行数据的存储,需要在AndroidMainfset.xml文件中进行权限的配置:

  • SDCard中创建与删除文件权限:
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    
  • 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类语法

继承包
public class File
extends Object implements Serializable, Comparable

java.lang.Object
↳ java.io.File

File类语法

File(String pathname)
Creates a new File instance by converting the given pathname string into an abstract pathname.
通过将给定的路径名字符串转换为一个抽象的路径名来创建一个新的文件实例。
//例如----File file = new File ("/mnt/sdcard/test.txt");
File(String parent, String child)
Creates a new File instance from a parent pathname string and a child pathname string.
从父路径名字符串和子路径名字符串创建一个新的文件实例。
//例如----File file = new File("/mnt/sdcard/", "test.txt");

File(File parent, String child)
Creates a new File instance from a parent abstract pathname and a child pathname string.
从父抽象路径名和子路径名字符串创建一个新的文件实例。

File(URI uri)
Creates a new File instance by converting the given file: URI into an abstract pathname.

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();
        }
    }
}

使用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();
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fu_Lin_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值