Android数据存储

IO :http://www.cnblogs.com/hxsyl/p/3302852.html
getParentFile()的返回值是File型的。
而getParent() 的返回值是String型的。
mkdirs是File类里面的方法,
mounted:爬,增加,安装
String fileName="new .txt";
String dir="mydir1/mydir2";
File f=new File(dir,fileName);
当我直接
f.mkdirs();后
new .txt也变成了目录
而f.getParentFile().mkdirs();
只有mydir1/mydir2的目录
这个是为什么
首先,你不要被File给迷惑了,中文翻译是个文件的意思,但Java中它表示的是“文件和目录路径名的抽象表示形式”,也就是说File即可以是文件,也可以是目录路径名;
其次,File f=new File(dir,fileName); 这根据dir路径名字符串和fileName路径名字符串创建一个新 File实例,也就是说你认为fileName表示的是个文件, 而Java认为fileName可以是个文件和目录路径;
所以这样调用f.mkdirs(),就会创建f表示的路径名指定的目录(包括dir和fileName),因为你明确的要创建目录;
你在f.getParentFile().mkdirs()后,再f.createNewFile(),这样Java才知道你要创建一个fileName的文件;
f.mkdirs();是以f为基准建立也就是说 f目录前面的都应该是目录,包括他,以此类推:f.getParent().mkdirs()是以 f.getParent()为基准建立,包括f.getParent()(这里可以把f.getParent()看做是第一种情况中的 f )。就这样
f是个File对象,f.getParentFile()也是个File对象,同样调用mkdirs(),它们的行为不一样吗?
这与你这样创建File f=new File(dir,fileName),调用f.mkdirs();   
和File parentPath=new File(dir);调用parentPath.mkdirs(); 
与你上面的是一样吗?
只说到这,自己再继续学习。
private static final String FILENAME = "mldn.txt" ;	// 设置文件名称
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		FileOutputStream output = null ;	// 接收文件输出对象
		try {
			output = super.openFileOutput(FILENAME, Activity.MODE_PRIVATE) ;
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		PrintStream out = new PrintStream(output) ; 	// 输出方便
		out.println("姓名:李兴华;") ;
		out.println("年龄:30;") ;
		out.println("地址:北京魔乐科技软件学院。") ; 
		out.close() ;	// 资源一定要关闭
		
		
		
		
		
private static final String FILENAME = "mldn.txt" ;	// 设置文件名称
	private TextView msg = null ;		// 文本组件
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		this.msg = (TextView) super.findViewById(R.id.msg) ; 
		FileInputStream input = null ;
		try {
			input = super.openFileInput(FILENAME) ;	// 取得输入流
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		Scanner scan = new Scanner(input) ;
		while(scan.hasNext()) {
			this.msg.append(scan.next() + "\n") ;
		}
		scan.close() ;
	}
	
	
	
	
	
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
private static final String FILENAME = "/mnt/sdcard/mldndata/mymldn.txt" ;	// 设置文件名称
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		File file = new File(FILENAME) ; 	// 定义要操作的文件
		if(!file.getParentFile().exists()) {
			file.getParentFile().mkdirs() ;	// 创建父文件夹路径
		}
		PrintStream out = null;
		try {
			out = new PrintStream(new FileOutputStream(file));
			out.println("北京魔乐科技软件学院(MLDN,www.MLDNJAVA.cn),讲师:李兴华");
		} catch (Exception e) {
			e.printStackTrace() ;
		} finally {	// 一定要关闭流
			if(out != null) {
				out.close() ;
			}
		}
	}
	
	
	
	
	private static final String FILENAME = "mymldn.txt" ;	// 设置文件名称
	private static final String DIR = "mldndata" ;	// 操作文件夹的名称
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		
		if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
			File file = new File(Environment.getExternalStorageDirectory()
					+ File.separator + DIR + File.separator + FILENAME); // 定义要操作的文件
			if (!file.getParentFile().exists()) {
				file.getParentFile().mkdirs(); // 创建父文件夹路径
			}
			PrintStream out = null;
			try {
				out = new PrintStream(new FileOutputStream(file));
				out.println("北京魔乐科技软件学院(MLDN,www.MLDNJAVA.cn),讲师:李兴华");
			} catch (Exception e) {
				e.printStackTrace();
			} finally { // 一定要关闭流
				if (out != null) {
					out.close();
				}
			}
		} else {
			Toast.makeText(this, "保存失败,SD卡不存在!", Toast.LENGTH_LONG).show() ;
		}
	}
	
	
	private static final String FILENAME = "mymldn.txt" ;	// 设置文件名称
	private static final String DIR = "mldndata" ;	// 操作文件夹的名称
	private TextView msg = null ;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		this.msg = (TextView) super.findViewById(R.id.msg) ;
		
		if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
			File file = new File(Environment.getExternalStorageDirectory()
					+ File.separator + DIR + File.separator + FILENAME); // 定义要操作的文件
			if (!file.getParentFile().exists()) {
				file.getParentFile().mkdirs(); // 创建父文件夹路径
			}
			Scanner scan = null ;
			try {
				scan = new Scanner(new FileInputStream(file)) ;
				while(scan.hasNext()) {
					this.msg.append(scan.next() + "\n") ;
				}
			} catch (Exception e) {
				e.printStackTrace();
			} finally { // 一定要关闭流
				if (scan != null) {
					scan.close();
				}
			}
		} else {
			Toast.makeText(this, "保存失败,SD卡不存在!", Toast.LENGTH_LONG).show() ;
		}
	}
	
	
	private TextView msg = null ;
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		super.setContentView(R.layout.main);
		this.msg = (TextView) super.findViewById(R.id.msg) ;
		Resources res = super.getResources() ;	// 资源操作类
		InputStream input = res.openRawResource(R.raw.mybook) ;	// 为要读取的内容设置输入流
		Scanner scan = new Scanner(input) ;
		StringBuffer buf = new StringBuffer() ;
		while (scan.hasNext()) {
			buf.append(scan.next()).append("\n") ;
		}
		scan.close() ;
		try {
			input.close() ;
		} catch (IOException e) {
			e.printStackTrace();
		}
		this.msg.setText(buf) ;
	}
	
	1.在AndroidManifest.xml中加入访问SDCard的权限如下:  
    <!-- 在SDCard中创建与删除文件权限 -->  
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>  
    <!-- 往SDCard写入数据权限 -->  
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>  
  
  要往SDCard存放	文件,程序必须先判断手机是否装有SDCard,并且可以进行读写。  
    注意:访问SDCard必须在AndroidManifest.xml中加入访问SDCard的权限  
              
            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){  
                File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录,2.2的时候为:/mnt/sdcart  2.1的时候为:/sdcard,所以使用静态方法得到路径会好一点。  
                File saveFile = new File(sdCardDir, "abc.txt");  
                FileOutputStream outStream = new FileOutputStream(saveFile);  
                outStream.write("你好".getBytes());  
                outStream.close();  
            }  
	
	
	
	

你可能感兴趣的:(android)