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;
    	}




  • 相关阅读:
    MySQL中的事务
    MySQL中的锁
    MySQL查询更新所有满足条件的数据
    MySQL存储引擎
    MySQL架构
    MySQL中存储json格式数据
    Java反射破坏单例模式
    合唱队(华为OJ)
    Java实现生产者消费者问题
    Spring IOC + AOP 的实现
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5327686.html
Copyright © 2011-2022 走看看