您的位置:首页 > 其它

安卓中的外部存储ExternalStorage,工具类

2015-09-16 20:11 260 查看
<span style="font-size:18px;">注意:配置文件中加上权限:
  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/></span>

<span style="font-size:18px;">package com.example.day13_extrastroage.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;

import android.annotation.SuppressLint;
import android.content.Context;
import android.os.Environment;

public class SD_util {
//外部存储是否可用F
public static boolean isExtra()
{
boolean b=false;
//获取外部存储状态与外部可读性状态比较,相等为true
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED))
{
b=true;
}
return b;

}
//写入数据到public外部存储
public static void writeStoragePublic(String content,String fileName)
{
//boolean issuccess=false;
try
{
File file=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName);
FileOutputStream fo=new FileOutputStream(file);
fo.write(content.getBytes());
fo.flush();
fo.close();

}
catch(Exception e)
{
e.printStackTrace();
}
}
//读取public外部存储中的数据
public static String readStoragePublic(String fileName)
{
StringBuffer sb=new StringBuffer();
try
{
File file=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName);
FileInputStream fi=new FileInputStream(file);
BufferedReader br=new BufferedReader(new InputStreamReader(fi));
String line=null;
while((line=br.readLine())!=null)
{
sb.append(line);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return sb.toString();

}

//写入数据到private外部存储
public static void writeStoragePrivate(Context context,String content,String fileName)
{
try
{
File file=new File(context.getExternalFilesDir(null), fileName);
FileOutputStream fo=new FileOutputStream(file);
fo.write(content.getBytes());
fo.flush();
fo.close();

}
catch(Exception e)
{
e.printStackTrace();
}
}
//读取private外部存储中的数据
public static String readStoragePrivate(Context context,String fileName)
{
StringBuffer sb=new StringBuffer();
try
{
File file=new File(context.getExternalFilesDir(null), fileName);
FileInputStream fi=new FileInputStream(file);
BufferedReader br=new BufferedReader(new InputStreamReader(fi));
String line=null;
while((line=br.readLine())!=null)
{
sb.append(line);
}
}
catch (Exception e)
{
e.printStackTrace();
}
return sb.toString();

}

//读取文件总长度
@SuppressLint("NewApi")
public static long fileLength()
{
File file=new File(Environment.getExternalStorageDirectory(),"");
long l=file.getTotalSpace();
return l;
}
//读取文件剩余大小
@SuppressLint("NewApi")
public static long freeLength()
{
File file=new File(Environment.getExternalStorageDirectory(),"");
long l=file.getFreeSpace();
return l;
}
//删除public文件
public static boolean removepublicFile(String fileName)
{
File file=new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), fileName);
boolean b=file.delete();
return b;
}
//删除private文件
public static boolean removeprivateFile(Context context,String fileName)
{
File file=new File(context.getExternalFilesDir(null), fileName);
boolean b=file.delete();
return b;
}

}
</span></span></span>


使用工具类:

布局文件:

<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;"><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/bt1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试外部存储是否可用"
android:onClick="click"/>
<Button
android:id="@+id/bt2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试是否写入public外部存储"
android:onClick="click"/>
<Button
android:id="@+id/bt3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试是否读出public外部存储数据"
android:onClick="click"/>
<Button
android:id="@+id/bt4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试是否写入private外部存储"
android:onClick="click"/>
<Button
android:id="@+id/bt5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试是否读出private外部存储数据"
android:onClick="click"/>
<Button
android:id="@+id/bt6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试文件总长度"
android:onClick="click"/>
<Button
android:id="@+id/bt7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="测试文件剩余大小"
android:onClick="click"/>
<Button
android:id="@+id/bt8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除指定public文件"
android:onClick="click"/>
<Button
android:id="@+id/bt9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="删除指定private文件"
android:onClick="click"/>

</LinearLayout></span>
</span></span>

逻辑代码文件:

<span style="font-size:18px;"><span style="font-size:18px;"><span style="font-size:18px;">package com.example.day13_extrastroage;

import com.example.day13_extrastroage.utils.SD_util;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v)
{
switch(v.getId())
{
case R.id.bt1:
{
boolean b=SD_util.isExtra();
if(b)
{
Toast.makeText(getApplicationContext(),"外部存储可用", 0).show();
}
else
{
Toast.makeText(getApplicationContext(),"外部存储不可用", 0).show();
}
}
case R.id.bt2:
{
SD_util.writeStoragePublic("welcome to China!","my.txt");
}
break;
case R.id.bt3:
{
String data=SD_util.readStoragePublic("my.txt");
Toast.makeText(getApplicationContext(),"读取的数据:"+data, 0).show();
}
break;
case R.id.bt4:
{
SD_util.writeStoragePrivate(getApplicationContext(), "you are beautiful!","my2.txt");
}
break;
case R.id.bt5:
{
String data=SD_util.readStoragePrivate(getApplicationContext(),"my2.txt");
Toast.makeText(getApplicationContext(),"读取的数据:"+data, 0).show();
}
break;
case R.id.bt6:
{
long l=SD_util.fileLength();
Toast.makeText(getApplicationContext(),"文件总长度:"+l, 0).show();
}
break;
case R.id.bt7:
{
long l=SD_util.freeLength();
Toast.makeText(getApplicationContext(),"文件剩余大小:"+l, 0).show();
}
break;
case R.id.bt8:
{
boolean b=SD_util.removepublicFile("my2.txt");
if(b)
{
Toast.makeText(getApplicationContext(),"删除成功", 0).show();
}
else
{
Toast.makeText(getApplicationContext(),"删除失败", 0).show();
}
}
break;
case R.id.bt9:
{
boolean b=SD_util.removeprivateFile(getApplicationContext(),"my2.txt");
if(b)
{
Toast.makeText(getApplicationContext(),"删除成功", 0).show();
}
else
{
Toast.makeText(getApplicationContext(),"删除失败", 0).show();
}
}
break;
}

}

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