您的位置:首页 > 移动开发 > Android开发

android中读写SD Card文件

2012-11-14 09:05 141 查看
1. 使用mksdcard命令创建一个名为 sdcard.img的128M(M需大写)SD卡镜像。

mksdcard 128M sdcard.img

2.把sdcard.img拷贝到D:\projects2下,在Eclipse中的Run Configuration对话框中设置启动参数。

-sdcard D:\projects2\sdcard.img

这样SD Card就可用了。

3.sdcard中加入内容

adb push E:\Xunlei\give.mp3 /sdcard/give.mp3。

4.应用程序中对文件的读写

注意如果在应用程序中要对SD card进行写操作的话,

需要加上androi权限android.permission.WRITE_EXTERNAL_STORAGE

如下:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

实例1:

Button button6 = (Button) findViewById(R.id.Button06);

OnClickListener listener6 = new OnClickListener() {

@Override

public void onClick(View v) {

createSDFile();

}

};

button6.setOnClickListener(listener6);

Button button7 = (Button) findViewById(R.id.Button07);

OnClickListener listener7 = new OnClickListener() {

@Override

public void onClick(View v) {

writeSDFile(kFileName);

}

};

button7.setOnClickListener(listener7);



Button button8 = (Button) findViewById(R.id.Button08);

OnClickListener listener8 = new OnClickListener() {

@Override

public void onClick(View v) {

readSDFile(kFileName);

}

};

button8.setOnClickListener(listener8);



String kFileName="/sdcard/uad2/test.txt";

void createSDFile()

{

createSDFile(kFileName);

}

final static String kSdCardRoot="sdcard";

void createSDFile(String fileFullName)

{

if(fileFullName.charAt(0)=='/')

fileFullName=fileFullName.substring(1, fileFullName.length());

String name[]=fileFullName.split("/");

if(name==null||name.length<2)

return;

if(!name[0].equals(kSdCardRoot))

{

Log.i(tag,fileFullName+" is not a file"+name[0]);

return;

}

File sdDir=new File("/"+kSdCardRoot);

if(!sdDir.exists())

{

Log.i(tag, "SD card is not exists");

return;

}

if(!sdDir.canWrite())

{

Log.i(tag, sdDir.length()+"SD card can not be wrote"+sdDir.canRead());

return;

}

File dir=sdDir;

for(int i=1;i<name.length-1;i++)

{

dir=new File(dir.getAbsolutePath()+"/"+name[i]);

if(dir.exists())

continue;

boolean res=dir.mkdir();

if(!res)

{

Log.i(tag, "create dir:"+res+" fail"+name[i]);

return;

}

}

String fileName=name[name.length-1].trim();

if(fileName.length()>0)

{

File file=new File(dir.getAbsolutePath()+"/"+name[name.length-1]);

if(!file.exists())

{

try{

file.createNewFile();

}catch(IOException e)

{

Log.e(tag, "creat File erro:",e);

}

}

}

}

void writeSDFile(String fileName)

{

File file=new File(fileName);

if(!file.exists())

createSDFile(fileName);

if(!file.canWrite())

{

Log.i(tag,"file:"+file.getAbsoluteFile()+" can not to be wrote");

return;

}

String content="hello:"+System.currentTimeMillis();

FileOutputStream os=null;

try{

os=new FileOutputStream(file);

os.write(content.getBytes());

Log.i(tag, "write:"+content);

}

catch(IOException e)

{

Log.e(tag, "write file",e);

}

finally

{

if(os!=null)

{

try{

os.flush();

os.close();

}catch(IOException e)

{

Log.e(tag, "close file",e);

}

}

}

}

void readSDFile(String fileName)

{

String content;

FileInputStream is=null;

File file=new File(fileName);

if(!file.exists())

{

Log.i(tag,file.getAbsolutePath()+" is not exists");

return;

}

if(!file.canRead())

{

Log.i(tag,file.getAbsolutePath()+" can not be read");

return;

}

try{

is=new FileInputStream(file);

byte buffer[]=new byte[is.available()];

is.read(buffer);

content=new String(buffer);

Log.i(tag, "read SD file:"+content);

//InputStreamReader inReader = new InputStreamReader(is);

}

catch(IOException e)

{

Log.e(tag, "write file",e);

}

finally

{

if(is!=null)

{

try{

is.close();

}catch(IOException e)

{

Log.e(tag, "close file",e);

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: