zoukankan      html  css  js  c++  java
  • 【Android先进】如何使用数据文件来保存程序

    在程序,有许多方法来存储和检索数据,本文,它描述了如何使用文件系统来保存数据编程和读取操作


    我直接写了一个帮助类,进行文件的写入和读取操作


    /**
     * 用于在文件里保存程序数据
     * 
     * @author zhaokaiqiang
     * 
     */
    public class FileHelper {
    
    	private static final String TAG = "FileHelper";
    	private Context mContext;
    
    	FileHelper(Context _mContext) {
    		mContext = _mContext;
    	}
    
    	// 在手机本地硬盘中保存信息
    	public void save(String fileName, String content) {
    
    		FileOutputStream fileOutputStream = null;
    		try {
    			fileOutputStream = mContext.openFileOutput(fileName,
    					Context.MODE_PRIVATE);
    			fileOutputStream.write(content.getBytes());
    
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    
    				if (fileOutputStream != null) {
    					fileOutputStream.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    	}
    
    	// 读取手机硬盘中保存的文件
    	public void read(String fileName) {
    		FileInputStream fileInputStream = null;
    		try {
    			fileInputStream = mContext.openFileInput(fileName);
    			int len = 0;
    			byte[] buffer = new byte[1024];
    			ByteArrayOutputStream byteArrayInputStream = new ByteArrayOutputStream();
    			while ((len = fileInputStream.read(buffer)) != -1) {
    				byteArrayInputStream.write(buffer, 0, len);
    			}
    			String string = new String(byteArrayInputStream.toByteArray());
    			Log.d(TAG, string);
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			if (fileInputStream != null) {
    				try {
    					fileInputStream.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    
    	}
    }

    注意:使用写入操作的时候。写入的内容会将上次写入的内容进行覆盖


    写入的文件保存在/data/data/package name/files文件夹下,使用DDMS能够进行查看

    例如以下图所看到的:


    使用DDMS将文件导出。就可以查看内容


    上面这些是将数据写入到我们的手机自带的存储空间里,假设想写入我们的SDCard,那么应该怎么做呢?

    以下的写入到SDCard的操作


    // save infomation in the SDCard
    	public boolean saveToSDCard(String fileName, String content) {
    
    		// judge weather the SDCard exits,and can be read and written
    		if (!Environment.getExternalStorageState().equals(
    				Environment.MEDIA_MOUNTED)) {
    			return false;
    		}
    
    		FileOutputStream fileOutputStream = null;
    		File file = new File(Environment.getExternalStorageDirectory(),
    				fileName);
    		try {
    			fileOutputStream = new FileOutputStream(file);
    			fileOutputStream.write(content.getBytes());
    			return true;
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			try {
    
    				if (fileOutputStream != null) {
    					fileOutputStream.close();
    				}
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    		}
    		return false;
    	}

    以下是读取位于SDCard根文件夹下文件的操作方法

    // read the file in the SDCard
    	public String readFromSD(String fileName) {
    		FileInputStream fileInputStream = null;
    		File file = new File(Environment.getExternalStorageDirectory(),
    				fileName);
    		try {
    			fileInputStream = new FileInputStream(file);
    			int len = 0;
    			byte[] buffer = new byte[1024];
    			ByteArrayOutputStream byteArrayInputStream = new ByteArrayOutputStream();
    			while ((len = fileInputStream.read(buffer)) != -1) {
    				byteArrayInputStream.write(buffer, 0, len);
    			}
    			String string = new String(byteArrayInputStream.toByteArray());
    			return string;
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		} catch (IOException e) {
    			e.printStackTrace();
    		} finally {
    			if (fileInputStream != null) {
    				try {
    					fileInputStream.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    
    		return null;
    	}




    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    python初学第一节课
    关于float类型和u32类型问题
    今天的工作状态,规划未来一段时间内必须完成的事情(Record the working status of today,planning for the next period of time must be completed)
    STM32 硬件I2C初始化 I2C1_GPIO_AF_Config
    C语言编程规范--------12 宏
    C语言编程规范--------11 代码测试、维护
    C语言编程规范--------10 代码编辑、编译、审查
    C语言编程规范--------9 质量保证
    C语言编程规范--------8 效率
    C语言编程规范--------7 可测性
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4621060.html
Copyright © 2011-2022 走看看