//测试下Android下,程序能否创建多级目录结构
File file = new File ("/sdcard/test/uc/zhangkai/hello.txt");
if(!file.exists())//如果不存在
{
file.mkdirs();//测试下这个能否创建多级目录结构
}
//测试结果:
//运用此方法能够创建多级目录
//测试数据 测试结果
// /sdcard/test/uc/ 在sdcard目录下创建了test/uc目录结构
// /sdcard/test/uc/zhangkai/ 首先/sdcard/test/uc/是存在,程序直接的在 uc目录下创建了zhangkai目录
// /sdcard/test/uc/zhangkai/hello.txt 在zhangkai目录下多了个目录/hello.txt目录,
//因为调用的mkdirs(),因此只是创建的多级目录,如果要创建文件,还需要使用 file.createNewFile();
在Symbian S60中是系统目录是分为C盘和E盘的,C盘根目录是可写的,那么Android中系统自带的磁盘是否有可写的呢?
很多人是存储目录的时候是直接的/data/save.txt,我就奇怪了/data/目录可写吗,Android的除了sdcard 外,其它的位置是否是可写的,为此我专门写了段测试程序:
File [] files = new File ("/").listFiles();
int length = files.length;
for(int i = 0; i < length ; i++)
{
String name = files[i].getName();
System.out.println("name:"+name);
if(files[i].canWrite())
{
System.out.println("can write");
}
else
{
System.out.println("can not write");
}
}
测试结果如下:
通过观察可以发现:
系统自带的目录有一个文件夹是可写的,我们可以存放一些简单的文件到那里去,/sqlite_stmt_journals/,然后data目录,我们可以在里面新建另外一个文件加,但是即使新建了另外一个文件夹,这个文件夹也是不可写的
另外跟大家玩下FileOutputStream
说老实话,当初真是小敲了这个类啊
按照正常的逻辑我们在对某个目录下的文件进行操作一般是按如下的方式进行的:
File file = new File ("/sdcard/test.txt");
if(!file.exsit())
{
file.createNewFile();
}
FileOutputStream fileOut = new FileOutputStream (file);
也就是说我们必须通过程序来检测我们指定的目录下的这个文件是否是存在的,然后不存在我们就创建一个文件,在保证文件存在后,然后再打开文件流
FileOutputStream(String fileName);
FileOutputStream(String fileName,boolean append);
这两个FileOutputStream的函数可以直接代替上面的操作,
通过执行这个两个函数,当我们指定的目录中的文件不存在的时候,Android系统会自动为我们创建我们所指定的文件,然后大家文件的输出流,boolean append,代表的意思是:是否将流写入到文件的尾部
比如:
FileOutputStream fileOutput = new FileOutputStraem ("/sdcard/test.txt");
这句代码的功能就相当于:
如果sdcard内没有test.txt,会首先创建这个一个文件,然后打开文件输出流,如果存在,直接打开,这样我们在写程序的时候就可以轻松点
另外使用这种方法是有限制条件的,它只能创建文件,不能创建目录:
比如 :
FileOutputStram fileOutput = new FileOutputStream ("/sdcard/test/1.txt");
我们必须首先确保/sdcard/test/这个目录是存在的,然后这样上面这句代码就是OK的,
否则程序就会报错,大家可以自己真机测试下.
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ky53900/archive/2010/04/23/5518639.aspx