开发者社区> 哈沙给> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Android数据存储

简介: IO :http://www.cnblogs.com/hxsyl/p/3302852.html getParentFile()的返回值是File型的。 而getParent() 的返回值是String型的。
+关注继续查看

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开发】 ListView使用实战详解,你get到了嘛?
【Android开发】 ListView使用实战详解,你get到了嘛?
53 0
【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片
【Android 应用开发】Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片
88 0
Android开发之ListView使用经验分享
在Android开发中,ListView是使用最广泛的组件之一,虽然谷歌推出了RecycleView,但是很多项目中依旧在使用ListView,本文将总结一下使用过程中遇到的一些问题,与大家共勉~~~ 一、ListView 与 Adapter List...
760 0
Android开发重要参考资料
=======================博客============================= 秋百万 有心课堂 郭霖 源码 安装ffmpeg 胡凯 官方培训课程 litesuitsway 爱哥 trinea robinRobin Hu...
828 0
+关注
哈沙给
渣渣一枚
1101
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载