`
龙哥IT
  • 浏览: 258601 次
  • 性别: 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界面中实现对服务器上文件和目录的操作。它提供了诸如浏览、上传、下载、重命名、移动、复制、...

    分布式文件系统研究——民间学习总结

    ### 分布式文件系统研究——民间学习总结 #### 概述与定义 分布式文件系统(Distributed File System, DFS)是一种文件系统模型,它能够使用户通过网络访问远程的文件,就如同这些文件存储在本地一样。DFS允许用户...

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

    getFile文件操作。

    本话题将聚焦于一个特定的文件操作——"getFile",这个概念可能来源于某个特定的库或者框架,或者是一个自定义的函数。尽管描述中并未提供详尽的信息,我们可以根据常规的编程实践来探讨文件操作的相关知识点。 ...

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

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

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

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

Global site tag (gtag.js) - Google Analytics