編輯:關於Android編程
(1)文件的目錄

(2)各文件的代碼:
FileService.java也就是操作sdcard的工具類:
package com.example.data_storage_sdcard.file;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import android.os.Environment;
/**
* sdcard的存在於上下文無關
*
* @author piaodangdehun
*
*/
public class FileService {
/*
* 存放在sdcard的根目錄
*/
public boolean saveFileToSdcardRoot(String fileName, byte[] data) {
boolean flag = false;
/*
* 先判斷sdcard的狀態,是否存在
*/
String state = Environment.getExternalStorageState();
FileOutputStream outputStream = null;
File rootFile = Environment.getExternalStorageDirectory(); // 獲得sdcard的根路徑
/*
* 表示sdcard掛載在手機上,並且可以讀寫
*/
if (state.equals(Environment.MEDIA_MOUNTED)) {
File file = new File(rootFile, fileName);
try {
outputStream = new FileOutputStream(file);
try {
outputStream.write(data, 0, data.length);
flag = true;
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
return flag;
}
/*
* 存放在sdcard下自定義的目錄
*/
public boolean saveFileToSdcardDir(String fileName, byte[] data) {
boolean flag = false;
/*
* 先判斷sdcard的狀態,是否存在
*/
String state = Environment.getExternalStorageState();
FileOutputStream outputStream = null;
File rootFile = Environment.getExternalStorageDirectory(); // 獲得sdcard的根路徑
/*
* 表示sdcard掛載在手機上,並且可以讀寫
*/
if (state.equals(Environment.MEDIA_MOUNTED)) {
File file = new File(rootFile.getAbsoluteFile() + /txt);
if (!file.exists()) {
file.mkdirs();
}
try {
outputStream = new FileOutputStream(new File(file, fileName));
try {
outputStream.write(data, 0, data.length);
flag = true;
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
return flag;
}
/*
* 用於讀取sdcard的數據
*/
public String readContextFromSdcard(String fileName) {
String state = Environment.getExternalStorageState();
File rooFile = Environment.getExternalStorageDirectory(); // 獲得sdcard的目錄
FileInputStream inputStream = null;// 用於度取數據的流
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); // 用於存放獨處的數據
if (state.equals(Environment.MEDIA_MOUNTED)) {
File file = new File(rooFile.getAbsoluteFile() + /txt/);// 在sdcard目錄下創建一個txt目錄
File file2 = new File(file, fileName);
int len = 0;
byte[] data = new byte[1024];
if (file2.exists()) {
try {
inputStream = new FileInputStream(file2);
try {
while ((len = inputStream.read(data)) != -1) {
outputStream.write(data, 0, data.length);
}
} catch (IOException e) {
e.printStackTrace();
}
return new String(outputStream.toByteArray());
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
return null;
}
/**
* 對文件進行分類的保存到固定的文件中去
*
* @param fileName
* @param data
*/
public void saveFileToSdcardBySuff(String fileName, byte[] data) {
// File file = Environment.getExternalStoragePublicDirectory();
// 保存文件的目錄
File file = null;
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
/*
* 將不同的文件放入到不同的類別中
*/
if (fileName.endsWith(.mp3)) {
file = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
} else if (fileName.endsWith(.jpg) || fileName.endsWith(.png)
|| fileName.endsWith(.gif)) {
file = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
} else if (fileName.endsWith(.mp4) || fileName.endsWith(.avi)
|| fileName.endsWith(.3gp)) {
file = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
} else {
file = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
}
FileOutputStream outputStream = null;
try {
outputStream = new FileOutputStream(new File(file, fileName));
try {
outputStream.write(data, 0, data.length);
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
/*
* 刪除一個文件
*/
public boolean deleteFileFromSdcard(String folder, String fileName) {
boolean flag = false;
File file = Environment.getExternalStorageDirectory();
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
File exitFile = new File(file.getAbsoluteFile() + / + folder);
if (exitFile.exists()) {
exitFile.delete();
}
}
return flag;
}
}
package com.example.data_storage_sdcard.http;
import java.io.IOException;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;
public class HttpUtils {
/*
*
*/
public static byte[] getImage(String path) {
byte[] data = null;
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(path);
try {
HttpResponse response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() == 200) {
data = EntityUtils.toByteArray(response.getEntity());
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
httpClient.getConnectionManager().shutdown();
}
return data;
}
}
ImageCache.java將文件放到cache中的:
package com.example.data_storage_sdcard.img;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import android.os.Environment;
public class ImageCache {
public static String saveImageCache(String fileName, byte[] data) {
File file = Environment.getExternalStorageDirectory(); // 根目錄
FileOutputStream outputStream = null;
if (Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED)) {
try {
outputStream = new FileOutputStream(new File(file, fileName));
outputStream.write(data, 0, data.length);
return file.getAbsolutePath() + / + fileName;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (outputStream != null) {
try {
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
return null;
}
}
package com.example.data_storage_sdcard;
import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import com.example.data_storage_sdcard.http.HttpUtils;
import com.example.data_storage_sdcard.img.ImageCache;
public class MainActivity extends Activity {
private Button button;
private ImageView imageView;
private ProgressDialog progressDialog;
private String imageName;
private final String pathString = http://www.baidu.com/img/bd_logo1.png;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) this.findViewById(R.id.button1);
imageView = (ImageView) this.findViewById(R.id.imageView1);
progressDialog = new ProgressDialog(this);
progressDialog.setTitle(下載提示);
progressDialog.setMessage(load...);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new MyTask().execute(pathString);
}
});
}
class MyTask extends AsyncTask {
@Override
protected void onPreExecute() {
super.onPreExecute();
progressDialog.show();
}
@Override
protected byte[] doInBackground(String... params) {
String name = params[0];
imageName = name
.substring(name.lastIndexOf(/) + 1, name.length());
return HttpUtils.getImage(params[0]);
}
@Override
protected void onProgressUpdate(Void... values) {
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(byte[] result) {
super.onPostExecute(result);
if (result != null) {
Bitmap bm = BitmapFactory.decodeByteArray(result, 0,
result.length);
imageView.setImageBitmap(bm);
ImageCache.saveImageCache(, result);
} else {
imageView.setImageResource(R.drawable.ic_launcher);
}
progressDialog.dismiss();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
package com.example.data_storage_sdcard;
import java.io.FileWriter;
import com.example.data_storage_sdcard.file.FileService;
import android.nfc.Tag;
import android.test.AndroidTestCase;
import android.util.Log;
public class MyTest extends AndroidTestCase {
public void saveFileToSdcardTest() {
FileService fileService = new FileService();
fileService.saveFileToSdcardRoot(aa.txt,
jkhdsfjkhdskjfhdsjf.getBytes());
}
public void saveFileToSdcardDir() {
FileService fileService = new FileService();
fileService.saveFileToSdcardRoot(aa.txt,
jkhdsfjkhdskjfhdsjf.getBytes());
}
public void readContextFromSdcardTest() {
FileService fileService = new FileService();
String msg = fileService.readContextFromSdcard(aa.txt);
System.err.println(--> + msg);
}
public void saveFileToSdcardBySuffTest() {
FileService fileService = new FileService();
fileService.saveFileToSdcardBySuff(aa.avi,
asdfkajsgdhagsdfhdgsf.getBytes());
}
public void delFile() {
FileService fileService = new FileService();
boolean flag = fileService.deleteFileFromSdcard(txt, aa.txt);
}
}
Android測試
1. Testing http://developer.android.com/tools/testing/index.html Android的框架包含了一組完整的
Android加載大分辨率圖片到手機內存中的實例方法
還原堆內存溢出的錯誤首先來還原一下堆內存溢出的錯誤。首先在SD卡上放一張照片,分辨率為(3776 X 2520),大小為3.88MB,是我自己用相機拍的一張照片。應用的布
微信底部菜單欄實現的幾種方法 -- Android學習之路
實現方式 實現的方式有很多種 這裡總結最常見的幾種方式,以後再添加其他的。viewPager + RadioGroup viewPager + FragmentTabHo
Android實現搜索功能並本地保存搜索歷史記錄
本文實例為大家分享了Android實現搜索功能,並且需要顯示搜索的歷史記錄,供大家參考,具體內容如下效果圖:本案例實現起來很簡單,所以可以直接拿來嵌入項目中使用,涉及到的