Android——文件存储之内部存储(含源码下载)

内部存储位于 Android 手 机 系 统 下 的“/data/data/< 包 名 >/files” 目 录 中。 使 用 Java 提供的 IO 流体系可以很方便的对内部存储的数据进行读写操作。其中,FileOutputStream 类的openFileOutput() 方法用来打开相应的输出流而 FileInputStream 类的 openFileInput() 方法用来打开相应的输入流。默认情况下,使用 IO 流保存的文件仅对当前应用程序可见,对于其他应用程序(包括用户)是不可见的(即不能访问其中的数据)。如果用户卸载了应用程序,则保存数据的文件也会一起被删除

内部存储一般有如下几个常用方法:
1、创建文件并写入数据

/*
* 参数 name:用于指定文件名称,该参数不能包含描述路径的斜杠“/”。
* 参数 mode:用于指定访问权限,可以使用如下取值:
* MODE_PRIVATE:表示文件只能被创建它的程序访问。
* MODE_APPEND:表示追加模式,如果文件存在,则在文件的结尾处添加新数据,否则
  创建文件。
* MODE_WORLD_READABLE:表示可以被其他应用程序读,但不能写。
* MODE_WORLD_WRITEABLE:表示可以被其他应用程序读和写。
*/
FileOutputStream fos = openFileOutput(String name, int mode)); //获取文件输出流
fos.write(byte b[]); //写入数据
fos.flush(); //清空缓存
fos.close(); //关闭文件输出流

2.读取存储数据

/*
* name是要读取的文件名
*/
FileInputStream fis = openFileInput(String name); //获取文件输入流
byte[ ] buffer = new byte[fis.available()]; //定义保存数据的数组
fis.read(buffer); //从输入流中读取数据
String content = new String(buffer);//将读取的数据转换成字符串

3.得到存储文件的根目录方法getFilesDir()

public String getFileDir(String filename){
        File file = new File(context.getFilesDir(), filename);
        return file.getPath();
 }

4.得到内部存储的所有文件名方法fileList()

public String[] getAllFile(){
    return context.fileList();
 }

5.删除指定文件方法deleteFile(……)

public void deleteFile(String filename){
  context.deleteFile(filename);
}

6.得到缓存目录方法getCacheDir()

public String getCacheDir(String filename){
   return context.getCacheDir().getPath();
}

这里为了方便使用,我创建了一个InternalFileOperation类,用于操作常用内部存储的方法。
代码如下:

import android.content.Context;

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

import static android.content.Context.MODE_PRIVATE;

public class InternalFileOperation{

    private Context context;
    private static InternalFileOperation interfile = null;


    //得到InternalFileOperation实例
    public static InternalFileOperation get(Context context){
        if (interfile == null){
            interfile = new InternalFileOperation(context);
        }

        return interfile;
    }

    //初始化InternalFileOperation类
    private InternalFileOperation(Context context) {
        this.context = context;
    }

    //创建文件并保存数据,filename为文件名,content为保存内容
    public void savedFile(String filename,String content) {
        FileOutputStream fos = null;

        try {

            fos = context.openFileOutput(filename,MODE_PRIVATE);
            fos.write(content.getBytes());
            fos.flush();

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fos.close();

            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    //显示存储的数据,filename为文件名
    public String showFile(String filename) {
        FileInputStream fis = null;
        byte[] buffer = null;
        String content = null;

        try {

            fis = context.openFileInput(filename);
            buffer = new byte[fis.available()];
            fis.read(buffer);

        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                fis.close();
                content = new String(buffer);
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
        return content;
    }

    //得到根目录,filename为文件名
    public String getFileDir(String filename){
        File file = new File(context.getFilesDir(), filename);

        return file.getPath();
    }

    //以字符串数组型得到所有内部存储的文件名
    public String[] getAllFile(){
        return context.fileList();
    }

    //删除指定文件,filename为文件名
    public void deleteFile(String filename){
        context.deleteFile(filename);
    }

    //得到缓存目录
    public String getCacheDir(String filename){
        return context.getCacheDir().getPath();
    }
}

链接:百度网盘下载 提取码:wyoe

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 新闻app是一款基于Android平台的小型项目应用程序,它主要用于展示各类新闻内容,为用户提供便捷的阅读体验。该项目的源码了应用程序的基本框架和功能实现,方便开发者进行二次开发和定制。 新闻app的源码主要包以下几个方面的内容: 1. 用户界面设计:源码中包了新闻app的界面布局和样式,开发者可以根据自己的需要进行修改和美化。用户界面通常包括新闻列表、新闻详情页、分类标签等,开发者可以自由设计并添加其他功能模块。 2. 数据获取与展示:源码中实现了与服务器进行数据交互的功能,通过网络请求获取新闻数据,并在界面上展示出来。开发者可以根据需要修改数据请求接口和解析方式,实现与自己的服务器交互。 3. 新闻分类与搜索:源码中提供了新闻分类和搜索功能的实现,用户可以根据自己的兴趣和需求选择不同的新闻分类进行浏览,也可以通过搜索关键词进行精确定位。 4. 用户交互与分享:源码中包了用户的登录注册功能和新闻内容的分享功能,用户可以通过登录账号进行个性化设置和收藏喜欢的新闻内容,也可以将新闻分享到社交媒体上与他人交流。 总之,新闻app源码是一个基础框架,开发者可以在此基础上进行二次开发和定制,根据自己的需求添加功能模块和美化界面,实现自己独特的新闻应用。 ### 回答2: Android新闻App是一个基于Android平台开发的小型项目,它的主要功能是提供最新的新闻内容给用户,并且用户可以进行浏览、搜索和分享等操作。下面是这个项目的一些关键特点和所需的源码组成部分: 1. 特点: - 用户界面友好,交互性强,提供舒适的浏览体验; - 支持实时更新,提供最新的新闻内容; - 具备搜索功能,方便用户查找感兴趣的新闻; - 支持新闻分享功能,方便用户将新闻分享给朋友; - 具备图文混排的能力,可以展示新闻的文字和图片。 2. 源码组成部分: - 主界面布局代码:定义了App的整体布局结构,包括顶部导航栏、底部工具栏和新闻显示区域等。 - 数据源代码:负责获取新闻数据,可以通过API接口获取最新的新闻内容,也可以从本地数据库获取已缓存的新闻数据。 - 新闻列表适配器代码:用于将新闻数据展示在界面上,包括标题、描述和图片等。 - 新闻详情界面代码:用于显示单篇新闻的详细内容,包括标题、正文和相关图片等。 - 搜索功能代码:实现了按关键字搜索新闻的功能,可以在已有的新闻数据中进行筛选。 - 分享功能代码:集成了社交媒体的分享SDK,方便用户将新闻内容分享给朋友。 - 图片加载和缓存代码:处理了新闻中的图片加载和本地缓存,提高了图片加载速度和用户体验。 通过以上的源码组成部分,可以完成一个基本的新闻App,用户可以在界面上浏览最新的新闻内容,进行搜索和分享操作。这个小项目可以帮助开发者理解Android开发框架和开发方式,提高编码能力和UI设计能力。 ### 回答3: 新闻app是基于Android平台开发的一个小型应用程序,可以提供用户各种最新的新闻资讯。以下是关于这个项目的源码介绍。 该项目源码主要由Java语言编写,使用了Android Studio作为开发工具。代码结构清晰,包了主要的几个模块。 1. 用户界面模块:这个模块负责显示新闻列表和新闻详情等信息,主要包布局文件和相应的逻辑代码。列表界面使用RecyclerView控件展示新闻列表,详情界面使用WebView展示新闻内容。 2. 网络请求模块:这个模块负责与后台服务器进行数据交互,使用了Android的HttpURLConnection类来发送请求和接收响应。请求参数可以根据实际需要进行修改,例如可以根据新闻类别进行请求。 3. 数据解析模块:这个模块负责解析从服务器返回的JSON格式的数据,转换成Java对象供应用程序使用。可以使用Android提供的JSON解析库,如Gson。 4. 数据存储模块:这个模块负责缓存新闻数据,以提高应用程序的响应速度。可以使用SharedPreferences或SQLite数据库来存储新闻数据。同时也可以使用图片缓存库,如Glide或Picasso来缓存新闻图片。 5. 用户交互模块:这个模块负责处理用户的交互行为,例如点击新闻列表项跳转到新闻详情界面,下拉刷新获取最新数据等。可以使用Android提供的相关控件和事件监听器来实现用户交互。 除了以上几个主要的模块,还可以根据需要添加其他功能,例如搜索栏、分享按钮等。 总体来说,这个新闻app的源码提供了一个完整的开发框架,初学者可以通过阅读和理解源码来学习Android应用程序的开发流程和一些常用技术。同时,也可以根据实际需求进行二次开发,添加新的功能和改进用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值