zoukankan      html  css  js  c++  java
  • Andorid存储方式---读写文件

    在手机Rom和SDCard保存文件:


    1.创建界面

    <?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" >
    
        <EditText
            android:id="@+id/nameET"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="请输入文件名"
            android:inputType="text" />
    
        <EditText
            android:id="@+id/contentET"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="请输入文件内容"
            android:inputType="textMultiLine"
            android:maxLines="5"
            android:minLines="3" />
    
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >
    
            <Button
                android:id="@+id/sdcBT"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="保存到SD卡" />
    
            <Button
                android:id="@+id/romBT"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:onClick="onClick"
                android:text="保存到ROM" />
        </LinearLayout>
    
    </LinearLayout>

    2Activity类

    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    	private EditText nameET;
    	private EditText contentET;
    
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    
    		nameET = (EditText) findViewById(R.id.nameET);
    		contentET = (EditText) findViewById(R.id.contentET);
    
    	}
    
    	protected void onResume() { // 当界面切换到前台时执行
    		super.onResume();
    
    		// 根据SD卡状态, 设置按钮是否可用
    		findViewById(R.id.sdcBT).setEnabled(
    				Environment.getExternalStorageState().equals(
    						Environment.MEDIA_MOUNTED));
    	}
    
    	public void onClick(View view) {
    		try {
    			String name = nameET.getText().toString();
    			String content = contentET.getText().toString();
    			FileService service = new FileService(this);
    
    			switch (view.getId()) {
    			case R.id.sdcBT:
    				System.out.println("SD卡");
    				service.saveToSDCard(name, content);
    				break;
    			case R.id.romBT:
    				System.out.println("ROM");
    				service.saveToRom(name, content);
    				break;
    			}
    
    			Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_SHORT)
    					.show();
    		} catch (Exception e) {
    			e.printStackTrace();
    			Toast.makeText(getApplicationContext(), "保存失败", Toast.LENGTH_SHORT)
    					.show();
    		}
    	}
    }


    3.FileService文件:

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import android.content.Context;
    import android.os.Environment;
    
    public class FileService {
    	private Context context;
    
    	public FileService(Context context) {
    		this.context = context;
    	}
    
    	public void saveToSDCard(String name, String content) throws IOException {
    		// 获取SD卡所在目录(兼容所有版本)
    		//2.1之前sd卡根目录为/sdcard
    		//2.1之后sd卡根目录为/mnt/sdcard
    		File file = new File(Environment.getExternalStorageDirectory(), name);	//获取外存储设备的目录
    		FileOutputStream fos = new FileOutputStream(file);			// 创建输出流, 指向SD卡所在目录
    		fos.write(content.getBytes());						// 写出文件内容, 默认UTF-8
    		fos.close();
    		
    		System.out.println("总空间: " + file.getTotalSpace());
    		System.out.println("剩余空间: " + file.getFreeSpace());
    	}
    
    	public void saveToRom(String name, String content) throws IOException {
    		/*
    		 * Context_MODE_PRIVATE表示 文件为私有模式,不能从别的工程或者类来读或者写
    		 * Context.MODE_WORLD_READABLE表示只读
    		 * context.MODE_WORLD_WRITEABLE表示之可写
    		 * Context.MODE_APPEND表示写文件是追加,不是覆盖,且文件为私有,上面三种模式都是覆盖
    		 */
    	
    		FileOutputStream fos = context.openFileOutput(name, Context.MODE_PRIVATE);
    		fos.write(content.getBytes());
    		fos.close();
    	}
    
    }

    运行效果如下:




    如果要读取手机文件内的内容:


    public void testRead() throws IOException {
    		FileInputStream fis = new FileInputStream("/data/data/cn.itcast.file/files/private.txt");//读取的文件的路径
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		byte[] buffer = new byte[1024];
    		int len;
    		while ((len = fis.read(buffer)) != -1)
    			baos.write(buffer, 0, len);
    		fis.close();
    		baos.close();
    		
    		String content = new String(baos.toByteArray());
    		System.out.println(content);
    	}



  • 相关阅读:
    springboot~使用docker构建gradle项目
    CH BR8(小学生在上课-逆元和互质数一一对应关系)
    UNIX环境高级编程第二版代码笔记
    【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)
    hdu 1159
    轻量级的原型设计工具-Axure RP
    在Ubuntu 12.10 上安装部署Openstack
    [Android 中级]Voip之CSipSimple类库的编绎
    OpenStack云计算快速入门之一:OpenStack及其构成简介
    OpenStack云计算快速入门之二:OpenStack安装与配置
  • 原文地址:https://www.cnblogs.com/fzll/p/3954622.html
Copyright © 2011-2022 走看看