Android中creatNewfile一些认识

最近在看Android一些IO方法,对File对象有些懵。

如下代码:

package cn.laipipig.learn;

import android.database.Cursor;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

import java.io.File;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        String dataPath="/data/data/"+getPackageName()+"/databases";
        File f=new File(dataPath);
        try {
            //f.mkdirs();  //当本条语句被屏蔽后,creatNewfile照样可以建立
            boolean b = f.createNewFile();
            DisplayContact("创建文件:"+b);
            DisplayContact("文件大小:"+f.getTotalSpace()/(1024*1024*1024));
            DisplayContact("路径:"+f.getPath());

            if(f.isFile()) {
                DisplayContact("这是文件");
            }else{DisplayContact("这是文件夹");}

            /*  注释区语句如果还原的话,database就变成了文件夹而不是文件了
            File fb=new File(dataPath+"/MYDB.txt");
            fb.createNewFile();

            DisplayContact("Test");

            if(f.isFile()) {
              DisplayContact("这是文件");
            }else{DisplayContact("这是文件夹");}

            if(fb.isFile()) {
                DisplayContact("这是文件");
            }else{DisplayContact("这是文件夹");} */


        }catch (IOException e)
        {DisplayContact(e.toString());}
   }

    public void DisplayContact(Cursor c)
    {
        Toast.makeText(this,c.getString(0)+"\n"+c.getString(1)+"\n"+c.getString(2),Toast.LENGTH_LONG).show();

    }
    public void DisplayContact(String c)
    {

        Toast.makeText(this,c,Toast.LENGTH_LONG).show();
    }
}

对于相同的语句,如果把注释区去掉的话,产生的database对象就完全不一样,无注释时它返回的是一个文件,而当有注释区时,它返回的就是一个文件夹。因为还是对Java一些相关知识不是很明确,我只是简单的认为,这是因为Java语句会把所有句子编译完之后才给出次结论。

Java如果要对一个File进行IO的话,都要先进行一个creatNewfile或者creatTempleFile

猜你喜欢

转载自blog.csdn.net/sharpeha/article/details/73610141