Android文件操作

第一步:前台页面main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/fileName" />

    <EditText
        android:id="@+id/txtName"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint=""
        android:maxLines="1" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/fileContext" />

    <EditText
        android:id="@+id/txtContext"
        android:layout_width="fill_parent"
        android:layout_height="100dp"
        android:gravity="left"
        android:hint=""
        android:minLines="4" />

    <Button
        android:id="@+id/btnSave"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/btnSave" />

</LinearLayout>

第二步:后台代码

package apk.example.androidapk;

import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.app.Activity;
import apk.example.service.FileServer;

public class MainActivity extends Activity {
    public Button btnSave;
    public EditText txtName, txtContext;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        txtName = (EditText) findViewById(R.id.txtName);
        txtContext = (EditText) findViewById(R.id.txtContext);
        btnSave = (Button) findViewById(R.id.btnSave);
        btnSave.setOnClickListener(new BtnSaveListener());
    }

    private final class BtnSaveListener implements View.OnClickListener {

        @Override
        public void onClick(View v) {
            String fileName = txtName.getText().toString();
            String fileContext = txtContext.getText().toString();
            FileServer server = new FileServer(getApplicationContext());
            try {
                if (Environment.getExternalStorageState().equals(
                        Environment.MEDIA_MOUNTED)) {
                    server.saveToSDCard(fileName, fileContext);
                    // 保存成功
                    Toast.makeText(getApplicationContext(), R.string.success,
                            Toast.LENGTH_LONG).show();
                } else {
                    // SDCard不存在或者写保护
                    Toast.makeText(getApplicationContext(),
                            R.string.sdCardMessage, Toast.LENGTH_LONG).show();
                }
            } catch (Exception e) {
                // 保存失败
                Toast.makeText(getApplicationContext(), R.string.fail,
                        Toast.LENGTH_LONG).show();
                e.printStackTrace();
            }
        }
    }
}
package apk.example.service;

import java.io.File;
import java.io.FileOutputStream;

import android.content.Context;
import android.os.Environment;

public class FileServer {
    private Context context;

    public FileServer(Context context) {
        this.context = context;
    }

    /**
     *
     * @param 文件名称
     * @param 文件内容
     * @throws 异常信息
     */
    public void save(String fileName, String fileContext) throws Exception {
        // 私有操作模式:创建出来的文件只能被本应用访问,其它应用无法访问该文件,另外采用私有操作模式创建的文件,写入文件中的内容会覆盖原文件的内容
        FileOutputStream outStream = context.openFileOutput(fileName,
                Context.MODE_PRIVATE);
        outStream.write(fileContext.getBytes());
        outStream.close();
    }

    /**
     *
     * @param 文件名称
     * @param 文件内容
     * @throws 异常信息
     */
    public void saveToSDCard(String fileName, String context) throws Exception {
        // 私有操作模式:创建出来的文件只能被本应用访问,其它应用无法访问该文件,另外采用私有操作模式创建的文件,写入文件中的内容会覆盖原文件的内容
        File file = new File(Environment.getExternalStorageDirectory(),
                fileName);
        FileOutputStream outStream = new FileOutputStream(file);
        outStream.write(context.getBytes());
        outStream.close();
    }
}

如图:

注:在AndroidManifest.xml文件中添加下列权限。

    <!-- 在SDCard中创建与删除文件权限 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <!-- 往SDCard写入数据权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

时间: 2024-10-12 06:47:14

Android文件操作的相关文章

Android文件操作的存放位置和形式

在上课学习时也学了,虽然大概知道如何用,项目中都在用,但总感觉"不系统",因此看看大牛的博客,根据自己理解与之前所学,在总结一下,心里有个底. 第一,存储位置:内部存储 ,外部存储   和 apk内部资源 内部存储(internal storage :由android系统分配给app的空间) 外部存储(external storage:开发中通常指sd卡) apk内部资源(这是我自己的归类,指的是开发时工程目录下的文件,主要为Assets目录,这样归类只是便于记忆) 以下解释来自:ht

Java和Android文件操作

File这是文件基类,抽象地代表一个文件实体,它有四个不同的构造方法: File(File dir, String name)  File(String path)   File(String dirPath, String name)  File(URI uri)  这些构造方法的实质都是一样的,就是构造一个File实例,必须提供一个完整的文件路径. 构造了一个File实例,并不是说就新建了一个文件或文件夹,这个File实例,只是实际系统内文件实体的一个代表.重要方法:public boole

Android 文件操作

http://www.cnblogs.com/LiHuiGe8/p/5604725.html 读取Assets中的文件数据 在asset目录下的资源是无法直接访问的原生资源,但是这个目录保存的文件可以打包在程序里,Android应用通过Assetmanager来管理该目录下的原始资源. Android不为Assets下的文件生成id,如要使用assets里的文件,需要指定文件的路径和文件名. 代码使用示例: (1)在assets中创建文件:info.txt 文件内容为: 1,这是使用UTF-8编

android文件操作OpenFileInput OpenFileOutput

android 中对文件的IO操作,OpenFileInput OpenFileOutput 返回对象为Java Io 的FileInputStream和FileOutputStream 我们通过一个小例子,来看下是如何使用的 activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.an

Android文件操作报open failed: EBUSY (Device or resource busy)

Android删除文件后重新创建时偶尔出现 open failed: EBUSY (Device or resource busy)错误,该错误是Android系统的一个bug,大概的意思类似于windows的"改文件正在被使用".产生这个错误的原因是Android在删除文件后没有及时释放文件锁,导致文件在重新创建时仍然处于被某一进程占用的状态.解决的方法是:在删除文件之前对该文件进行重命名,这样可以保证在删除文件时系统持有的文件锁是重命名之后的文件锁.代码可以这样写: final F

Android文件操作IO技术

/** * 读取输入流数据 * @param inStream * @return */ public static byte[] read(InputStream inStream) throws Exception{ ByteArrayOutputStream outStream = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while( (len = inStream.read(buf

Android数据存储-文件操作

一.预备知识 1.Android中的MVC设计模式 MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器.一个逻辑模型可以对于多种视图模型,比如一批统计数据你可以分别用柱状图.饼图来表示.一种视图模型也可以对于多种逻辑模型.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式,而C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新,这与<设计模式>中的观察者模式是完全一样. MVC好处:从用户的角度出发,用户可

android 简单文件操作

1.布局 <LinearLayout 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:orient

【转】 android中的文件操作详解以及内部存储和外部存储

摘要 其实安卓文件的操作和Java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理.根据我的经验,初学者在这部分感到很容易混淆内部存储和外部存储两个概念. 相对 其实安卓文件的操作和java在pc环境下的操作并无二致,之所以需要单独讲解是因为安卓系统提供了不同于pc的访问文件系统根路径的api,同时对一个应用的私有文件做了统一的管理.根据我的经验,初学者在这部分感到很容易混淆内部存储和外部存储两个概念