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);
}
}
}
}
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);
}
}
}
}
相关文章推荐
- Android文件读写操作(含SDCard的读写)
- Android SDCard操作(文件读写,容量计算)
- android打开sdcard读写文件、访问网络权限
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android:文件读写、操作模式、SDCard
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- (转)Android SDCard操作(文件读写,容量计算)
- Android sdcard读写文件(二)
- 在android开发中正确读写sdcard文件的方法
- 【Android】文件读写操作(含SDCard的读写)
- android中读写SD Card文件
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- Android SDCard操作(文件读写,容量计算)
- android报错及解决2--Sdcard进行文件的读写操作报的异常
- Android之怎么操作文件(读写以及保存到sdcard)
- 转:Android下文件操作模式(含SDCard的读写)