`
龙哥IT
  • 浏览: 254113 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

File保存文件总结——摘抄

 
阅读更多
首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。

ublic void save()
    {
        try {
            FileOutputStream outStream=this.openFileOutput("a.txt",Context.MODE_WORLD_READABLE);
            outStream.write(text.getText().toString().getBytes());
            outStream.close();
            Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();
        } catch (FileNotFoundException e) {
            return;
        }
        catch (IOException e){
            return ;
        }
    }


openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/<package name>/files目录,如: /data/data/cn.itcast.action/files/itcast.txt ,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/<package name>/files目录就可以看到该文件。
openFileOutput()方法的第二参数用于指定操作模式,有四种模式,分别为:

Context.MODE_PRIVATE    =  0
Context.MODE_APPEND    =  32768
Context.MODE_WORLD_READABLE =  1
Context.MODE_WORLD_WRITEABLE =  2
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
如果希望文件被其他应用读和写,可以传入:
openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/<package name>/files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有这样其他程序才能正确访问。

读取文件内容:

public void load()
{
    try {
        FileInputStream inStream=this.openFileInput("a.txt");
        ByteArrayOutputStream stream=new ByteArrayOutputStream();
        byte[] buffer=new byte[1024];
        int length=-1;
        while((length=inStream.read(buffer))!=-1)   {
            stream.write(buffer,0,length);
        }
        stream.close();
        inStream.close();
        text.setText(stream.toString());
        Toast.makeText(MyActivity.this,"Loaded",Toast.LENGTH_LONG).show();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    catch (IOException e){
        return ;
    }
}


对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。
Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data/<package name>/cache目录
getFilesDir()方法用于获取/data/data/<package name>/files目录



把文件放入SD卡

使用Activity的openFileOutput()方法保存文件,文件是存放在手机空间上,一般手机的存储空间不是很大,存放些小文件还行,如果要存放像视频这样的大文件,是不可行的。对于像视频这样的大文件,我们可以把它存放在SDCard。 SDCard是干什么的?你可以把它看作是移动硬盘或U盘。

在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件)。创建SDCard可以在Eclipse创建模拟器时随同创建,也可以使用DOS命令进行创建,如下:

在Dos窗口中进入android SDK安装路径的tools目录,输入以下命令创建一张容量为2G的SDCard,文件后缀可以随便取,建议使用.img:

mksdcard 2048M D:\AndroidTool\sdcard.img

在程序中访问SDCard,你需要申请访问SDCard的权限。

在AndroidManifest.xml中加入访问SDCard的权限如下:

<!-- 在SDCard中创建与删除文件权限 -->

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission><!-- 往SDCard写入数据权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

要往SDCard存放文件,程序必须先判断手机是否装有SDCard,并且可以进行读写。

注意:访问SDCard必须在AndroidManifest.xml中加入访问SDCard的权限

1:写方法一

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

         File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录

         File saveFile = new File(sdCardDir, “a.txt”);

       FileOutputStream outStream = new FileOutputStream(saveFile);

         outStream.write("test".getBytes());

         outStream.close();

}

2:写方法二

public static void writeSDFiles(String filename, String content)
throws Exception {
File f = new File(android.os.Environment.getExternalStorageDirectory()
+ "/" + filename);
FileOutputStream fileos = new FileOutputStream(f);
fileos.write(content.getBytes());
fileos.close();
}

3:读方法一

public static String readSDFiles(String filename) throws Exception {
String content = null;
File f = new File(android.os.Environment.getExternalStorageDirectory()
+ "/" + filename);
FileInputStream fileIS = new FileInputStream(f);
ByteArrayOutputStream baos = new ByteArrayOutputStream();

byte[] buffer = new byte[1024];
int len = 0;
while ((len = fileIS.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
content = baos.toString();
fileIS.close();
baos.close();
return content.toString();

}

4:读方法二

public static String readSDFiles1(String filename) throws Exception {
String content = "Filedec:";
File file[] = android.os.Environment.getExternalStorageDirectory()
.listFiles();
for (File file1 : file) {
if (file1.getName().equals(filename)) {
String path = file1.getAbsolutePath();
FileInputStream fileIS = new FileInputStream(path);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = fileIS.read(buffer)) != -1) {
baos.write(buffer, 0, len);
}
content = baos.toString();
fileIS.close();
baos.close();
break;
}
}
return content.toString();

}
注:filename为所要读或写的文件名,content为写的内容

Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。

Environment.getExternalStorageDirectory()方法用于获取SDCard的目录,当然要获取SDCard的目录,你也可以这样写:

File sdCardDir = new File("/sdcard"); //获取SDCard目录

File saveFile = new File(sdCardDir, "itcast.txt"); 

//上面两句代码可以合成一句: File saveFile = new File("/sdcard/a.txt");

FileOutputStream outStream = new FileOutputStream(saveFile);

outStream.write("test".getBytes());

outStream.close();
分享到:
评论

相关推荐

    HTTP 文件服务器——Http File Server

    HFS是专为个人用户所设计的 HTTP 文件服务器——Http File Server,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装。运行主程序,在“虚拟文件系统”窗格下按鼠标...

    JAVA文件操作——File 、 RandomAccessFile(上).mp4

    文件操作——File 、 RandomAccessFile(上).mp4

    文件操作——File 、 RandomAccessFile(上).mp4

    文件操作——File 、 RandomAccessFile(上).mp4

    Oracle工作总结——日志文件切换频率的调整

    - **数据库配置参数**:如`LOG_FILE_SIZE`、`LOG_BUFFER`、`LOG_CHECKPOINT_INTERVAL`等,它们会影响日志的生成和切换。 - **归档模式**:在归档模式下,日志文件的切换会更频繁,因为旧的日志需要被归档。确保归档...

    android开发之文件操作——文件创建和文件读取

    本项目"android开发之文件操作——文件创建和文件读取"提供了相关的代码示例,帮助开发者理解和实践Android中的文件操作。 在Android中,文件操作主要通过java.io包下的类来实现,如File、FileInputStream、...

    文件系统——操作系统课程设计

    在这个“文件系统——操作系统课程设计”项目中,我们可能会遇到一系列与文件系统相关的概念和技术。以下是对这些概念的详细解释: 1. 文件系统(File System):文件系统是操作系统用于控制和管理磁盘上数据的一种...

    Hadoop分布式文件系统——导入和导出数据内含源码以及说明书可以自己运行复现.zip

    在IT行业中,Hadoop分布式文件系统(Hadoop Distributed File System, 简称HDFS)是一种广泛应用于大数据处理的关键技术。本压缩包“Hadoop分布式文件系统——导入和导出数据内含源码以及说明书可以自己运行复现.zip...

    探索PE文件内幕 —— Win32可移植可执行文件格式之旅

    ### 探索PE文件内幕 —— Win32可移植可执行文件格式之旅 #### PE文件:微软操作系统的基石 在深入了解PE(Portable Executable)文件格式之前,我们首先需要理解其重要性和它在微软操作系统生态中的核心地位。PE...

    uniapp新建文件保存本地 file.js

    uniapp新建文件保存本地 file.js

    js处理文件——文件读写例子.zip

    综上所述,"js处理文件——文件读写例子.zip"中的示例可能涵盖了以上讨论的各个方面,通过实际代码展示如何利用JavaScript的File API来实现文件的读取和写入操作。学习并理解这些概念,对于开发交互性强、功能丰富的...

    protobuf-js-3.17.0

    your_file.proto`命令,可以将.proto文件编译成JavaScript代码,供protobuf-js库使用。 在实际应用中,protobuf-js-3.17.0可以广泛应用于前后端通信、游戏开发、物联网设备通信等领域,特别是在需要高效、紧凑数据...

    Nfile是一个基于Node.js的简易文件系统支持文档的上传编辑和预览

    Nfile 是一个强大的工具,专为那些寻求在Node.js环境中构建简单文件系统并处理文档上传、编辑和预览需求的开发者设计。这个开源项目利用了Node.js的非阻塞I/O特性和事件驱动架构,使其在处理大量并发请求时表现出色...

    PHP实例开发源码——File Manager(PHP文件管理器) 中文版.zip

    【PHP文件管理器——File Manager概述】 PHP文件管理器,如File Manager,是基于PHP语言构建的一款实用工具,用于在Web界面中实现对服务器上文件和目录的操作。它提供了诸如浏览、上传、下载、重命名、移动、复制、...

    readlas_XYZI_txt.zip_Python支持las_las文件保存_python 读las文件_xyzi 点云格式

    总结起来,Python的`liblas`库提供了一个强大且灵活的工具集,用于处理LAS文件中的XYZI点云数据。通过学习和熟练运用这个库,可以有效地进行点云数据的读取、分析和保存,为各种基于点云的应用提供基础支持。

    适合嵌入式Linux应用的文件系统——JFFS.pdf

    《适合嵌入式Linux应用的文件系统——JFFS》 嵌入式Linux的应用随着互联网的崛起而备受关注,尤其在近年来,其巨大的市场潜力使之成为研究的重点。在这个领域,一个至关重要的需求就是在断电或备份时能保持数据的...

    文件类型分析工具FileAnalysis v2.1.rar

    《深入解析:FileAnalysis v2.1——揭示未知文件类型的神秘面纱》 在日常的计算机操作中,我们经常会遇到一些扩展名不明确或者被篡改的文件,这些文件如同谜团,让人摸不清头脑。这时候,一款强大的文件分析工具就...

    C语言——File文件操作PPT课件.pptx

    本篇PPT课件主要讲解了C语言中的File文件操作,包括文件的特点、文件处理方法、文件类型指针、文件的打开与关闭、文件的读写等核心概念。 首先,文件分为两种类型:文本文件和二进制文件。文本文件以ASCII码形式...

    c#保存文件(文本框保存到txt)

    在C#编程中,保存文件是一项基本操作,特别是在开发用户界面(UI)应用程序时,如Windows Forms或WPF,用户可能需要将输入的数据保存到本地文件。本篇将详细讲解如何将文本框(TextBox)中的内容保存到一个TXT文本...

    文件粉碎机——顽固文件的杀手

    "文件粉碎机——顽固文件的杀手"这个标题揭示了一个专为解决无法常规删除的文件问题而设计的软件工具。在计算机操作中,有时我们可能会遇到一些文件由于各种原因(如程序正在使用、系统权限限制或者病毒保护)无法...

Global site tag (gtag.js) - Google Analytics