• 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() + "
    ") ;
    
    		}
    
    		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() + "
    ") ;
    
    				}
    
    			} 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("
    ") ;
    
    		}
    
    		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();  
    
                }  
    
    	
    
    	
    
    	
    
    	
    
  • 相关阅读:
    从零开始学 Web 之 DOM(七)事件冒泡
    从零开始学 Web 之 DOM(六)为元素绑定与解绑事件
    从零开始学 Web 之 DOM(五)元素的创建
    从零开始学 Web 之 DOM(四)节点
    从零开始学 Web 之 DOM(三)innerText与innerHTML、自定义属性
    从零开始学 Web 之 DOM(二)对样式的操作,获取元素的方式
    从零开始学 Web 之 DOM(一)DOM的概念,对标签操作
    @RequestParam和@GetMapping
    组件(一)
    Vue(一)
  • 原文地址:https://www.cnblogs.com/hxsyl/p/3712007.html
Copyright © 2020-2023  润新知