zoukankan      html  css  js  c++  java
  • Android文档编辑器

    Android文档编辑器

    转自:http://www.cnblogs.com/Eaway/archive/2012/02/12/2348298.html

    本文主要是学习Android开发如何保存文件;

    分别有三种保存方式:

    第一种方式:以私有方式保存文件;本方式保存的文件其他程序无法读和写;点击按钮“私有保存”

    调用:context.openFileOutput(filename, Context.MODE_PRIVATE);

    Context.MODE_PRIVATE决定了以私有方式保存文件。

    第二种方式:常规方式保存文件;本方式保存的文件其他程序可读、可写;点击按钮“常规保存”

    调用:context.openFileOutput(filename, Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);

    Context.MODE_WORLD_READABLE使得其他程序可读该文件,Context.MODE_WORLD_WRITEABLE使得其他程序可写该文件。

    第三种方式:将文件保存到sdcard;

    调用Environment.getExternalStorageDirectory()读取Android中sdcard的路径

    新建项目File,在包com.shen.learning.shen.android中写文件FileActivity;

    FileActivity代码如下:

      

    复制代码
    package com.shen.learning.android;  

    import com.shen.learning.service.FileService;

    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Environment;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;

    public class FileActivity extends Activity {
    private static final String TAG = "FileActivity";
    private FileService fileService;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    fileService = new FileService(this);

    //第一个按钮:私有保存,调用save方法
    Button button = (Button) this.findViewById(R.id.button);//初始化按钮
    button.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
    //取得文件名称
    EditText filenameText = (EditText) findViewById(R.id.filename);
    String filename = filenameText.getText().toString();

    //取得文本内容
    EditText contentText = (EditText) findViewById(R.id.filecontent);
    String content = contentText.getText().toString();
    try {
    fileService.save(filename, content);
    //显示“文件保存成功”
    Toast.makeText(FileActivity.this, R.string.success, 1).show();
    }catch (Exception e) {
    //在LogCat显示错误信息
    Log.e(TAG,e.toString());
    //显示“文件保存失败”
    Toast.makeText(FileActivity.this, R.string.error, 1).show();
    }
    }
    });

    //第二个按钮:常规保存,调用saveOpening方法
    Button button2 = (Button) this.findViewById(R.id.button2);
    button2.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
    //取得文件名称
    EditText filenameText = (EditText) findViewById(R.id.filename);
    String filename = filenameText.getText().toString();
    //取得文本内容
    EditText contentText = (EditText) findViewById(R.id.filecontent);
    String content = contentText.getText().toString();
    try{
    fileService.saveOpening(filename, content);
    //显示“文件保存成功”
    Toast.makeText(FileActivity.this, R.string.success, 1).show();
    }catch (Exception e) {
    //在LogCat显示错误信息
    Log.e(TAG,e.toString());
    //显示“文件保存失败”
    Toast.makeText(FileActivity.this, R.string.error, 1).show();
    }
    }
    });

    //第三个按钮:sdcard保存,调用saveToSdcard方法
    Button button3 = (Button) this.findViewById(R.id.button3);
    button3.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
    //取得文件名称
    EditText filenameText = (EditText)findViewById(R.id.filename);
    String filename = filenameText.getText().toString();
    //取得文本内容
    EditText contentText = (EditText)findViewById(R.id.filecontent);
    String filecontent = contentText.getText().toString();
    try{
    if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
    fileService.saveToSdcard(filename, filecontent);
    //显示“文件保存成功”
    Toast.makeText(FileActivity.this, R.string.success, 1).show();
    }else{
    //显示“不存在sdcard或无写入sdcard权限”
    Toast.makeText(FileActivity.this, R.string.sdcarderror, 1).show();
    }
    }catch (Exception e) {
    //在LogCat显示错误信息
    Log.e(TAG, e.toString());
    //显示“文件保存失败”
    Toast.makeText(FileActivity.this, R.string.error, 1).show();
    }
    }
    });
    }
    }
    复制代码

    在包com.shen.learning.service中新建文件:FileService

    FileService代码如下:

    复制代码
    package com.shen.learning.service;  

    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.nio.Buffer;

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

    public class FileService{
    private Context context;

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

    /**
    * 以私有文件保存内容
    * @param filename
    * @param content
    * @throws Exception
    */

    public void save(String filename,String content)throws Exception{
    filename=filename+".txt";
    FileOutputStream outputStream=context.openFileOutput(filename, Context.MODE_PRIVATE);//以私有方式保存文件

    //FileOutputStream outputStream=context.openFileOutput(filename, Context.MODE_APPEND);//以追加方式保存文件

    outputStream.write(content.getBytes());
    outputStream.close();
    }

    /**
    * 以其他程序可读写文件形式保存内容
    * @param filename
    * @param content
    * @throws Exception
    */

    public void saveOpening(String filename,String content)throws Exception{
    filename=filename+".txt";

    //FileOutputStream outputStream=context.openFileOutput(filename, context.MODE_WORLD_READABLE);//以其他程序可读形式保存内容

    //FileOutputStream outputStream=context.openFileOutput(filename, context.MODE_WORLD_WRITEABLE);//以其他程序可写形式保存内容

    FileOutputStream outputStream=context.openFileOutput(filename, Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);//可读+可写

    outputStream.write(content.getBytes());
    outputStream.close();
    }

    /**
    * 将文件保存到sdcard
    * @param filename
    * @param content
    * @throws Exception
    */

    public void saveToSdcard(String filename,String content)throws Exception{
    filename=filename+".txt";

    //Environment.getExternalStorageDirectory()为读取Android中sdcard的路径
    File file=new File(Environment.getExternalStorageDirectory(),filename);//定路径;将文件保存到sdcard
    FileOutputStream outputStream = new FileOutputStream(file);
    outputStream.write(content.getBytes());
    outputStream.close();
    }
    }
    复制代码

    在values文件夹中编辑文件string.xml。

    string.xml代码如下:

    复制代码
    <?xml version="1.0" encoding="utf-8"?>  
    <resources>

    <string name="hello">Hello World, FileActivity!</string>
    <string name="app_name">文件操作</string>
    <string name="filename">文件名称</string>
    <string name="filecontent">请输入文件内容</string>
    <string name="button">私有保存</string>
    <string name="button2">可读写保存</string>
    <string name="button3">sdcard保存</string>
    <string name="success">文件保存成功</string>
    <string name="error">文件保存失败</string>
    <span style="white-space:pre"> </span><string name="sdcarderror">不存在sdcard或无写入sdcard权限</string>
    </resources>
    复制代码



    在layout文件夹中编辑文件main.xml

    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="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/filename" />
    <EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/filename" />
    <TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/filecontent" />
    <EditText
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:minLines="7"
    android:id="@+id/filecontent" />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button"
    android:text="@string/button" />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button2"
    android:text="@string/button2" />
    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/button3"
    android:text="@string/button3" />
    </LinearLayout>
    复制代码



    修改AndroidManifest.xml

    AndroidManifest.xml代码如下:

    复制代码
    <?xml version="1.0" encoding="utf-8"?>  
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.shen.learning.android"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="9" />
    <!-- 获取sdcard的读权限 -->
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
    <!-- 获取sdcard的写权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
    android:name=".FileActivity"
    android:label="@string/app_name" >
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    </application>
    </manifest>
    复制代码

    效果:

  • 相关阅读:
    idea初始化配置
    常用网址
    linux改错了profile文件
    获得ip地址[转载]
    java 基本数据类型转换
    log4j配置概要
    HTTP状态码
    HTTP 的请求方式
    10、类和方法
    9、一切都是对象
  • 原文地址:https://www.cnblogs.com/harry335/p/4536200.html
Copyright © 2011-2022 走看看