• android学习笔记46——File存储


    File存储——IO操作文件

    openFileOutput、openFileInput

    Context提供了如下两个方法来打开本应用程序的数据文件夹里面的文件IO流。

    1.FileInputStream openFileInput(String name):打开应用程序中的数据文件夹下的name文件对应输入流

    2.FileOutputStream openFileOutput(String name,int mode):打开应用程序的数据文件下的name文件对应的输出流

    注意:

    FileOutputStream openFileOutput(String name,int mode)中mode参数用于指定打开文件的模式,支持模式如下:

    1.MODE_PRIVATE:改文件只能被当前程序读写;

    2.MODE_APPEND:以追加的方式打开该文件,应用程序可以向该文件中追加内容;

    3.MODE_WORLD_READABLE:该文件的内容可以被其他程序读取(只读);

    4.MODE_WORLD_WRITEABLE:该文件的内容可以不其他程序读、写;

    除此之外,Context还提供了如下两个方法来访问应用程序的数据文件夹.

    1.getDir(String name,int mode):在应用程序的数据文件夹下获取或创建name对应的子目录;

    2.File getFilesDir():获取该应用程序的数据文件夹的绝对路径;

    3.String[] fileList():返回该应用程序的数据文件夹下的全部文件;

    4.deleteFile(String):删除该应用程序的数据文件夹下指定的文件;

    实例如下:实现读写应用程序数据文件夹内的文件。

    布局文件==》
    <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:orientation="vertical"
        tools:context=".MainActivity" >
    
        <EditText
            android:id="@+id/edit1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
        <Button
            android:id="@+id/btnone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="write" />
    
        <EditText
            android:id="@+id/edit2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" />
    
        <Button
            android:id="@+id/btnTwo"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="read" />
    
    </LinearLayout>
    
    代码实现==》
    package com.example.myfile;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.PrintStream;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.util.Log;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    
    public class MainActivity extends Activity
    {
    	final String FILE_NAME = "crazyit.bin";
    	EditText Edit1;
    	EditText Edit2;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState)
    	{
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    
    		Button btnOne = (Button) this.findViewById(R.id.btnone);
    		Button btnTwo = (Button) this.findViewById(R.id.btnTwo);
    		Edit1 = (EditText) this.findViewById(R.id.edit1);
    		Edit2 = (EditText) this.findViewById(R.id.edit2);
    		btnOne.setOnClickListener(new MyButtonClick());
    		btnTwo.setOnClickListener(new MyButtonClick());
    	}
    
    	private class MyButtonClick implements OnClickListener
    	{
    		@Override
    		public void onClick(View v)
    		{
    			switch (v.getId())
    			{
    			case R.id.btnone:
    				Log.i("swg", "write==" +Edit1.getText());
    				write(Edit1.getText().toString());
    				Edit1.setText("");
    				break;
    			case R.id.btnTwo:
    				Log.i("swg", "read==" +read());
    				Edit2.setText(read());
    				break;
    			}
    		}
    
    		private String read()
    		{
    			try
    			{
    				FileInputStream fis = openFileInput(FILE_NAME);
    				byte[] buff = new byte[1024];
    				int hasread = 0;
    				StringBuilder sb = new StringBuilder("");
    				while ((hasread = fis.read(buff)) > 0)
    				{
    					sb.append(new String(buff, 0, hasread));
    				}
    				return sb.toString();
    			} catch (Exception e)
    			{
    				e.printStackTrace();
    			}
    			return null;
    		}
    
    		private void write(String content)
    		{
    			try
    			{
    				// 以追加模式打开文件输出流
    				FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND);
    				// 将FileOutputStream包装成PrintStream
    				PrintStream ps = new PrintStream(fos);
    				// 输出文件内容
    				ps.println(content);
    				ps.close();
    			} catch (Exception e)
    			{
    				e.printStackTrace();
    			}
    		}
    
    	}
    
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu)
    	{
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    
    }
    

    运行效果:

  • 相关阅读:
    C# 获取类似java gettime() 的时间格式
    LUbuntu电脑棒安装指南
    Visual Studio Gallery
    SQL SERVER 分页存储过程
    asp.mvc获取checkbox、radio、select的值
    C#面向对象的一些笔记
    Javascript预解析、作用域、作用域链
    解决ajax请求cors跨域问题
    Asp.Net操作WebServices
    2019年科技趋势前10位
  • 原文地址:https://www.cnblogs.com/YYkun/p/5953698.html
Copyright © 2020-2023  润新知