最近在看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