存储文件:
在 Android 中,可以使用内部存储和外部存储来存储文件。内部存储是应用的私有存储空间,只能应用本身访问。外部存储是 SD 卡等可移动存储设备,可以被多个应用或用户访问。
内部存储:
// 获取内部存储文件路径
File file = getFilesDir();
// 创建文件
File file1 = new File(file, "example.txt");
// 写文件
try {
FileOutputStream fos = openFileOutput("example.txt", Context.MODE_PRIVATE);
fos.write("Hello World".getBytes());
fos.close();
} catch (Exception e) {
Log.e(TAG, "存储文件失败", e);
}
外部存储:
// 判断 SD 卡是否可用
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
// 获取 SD 卡的公共目录
File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
// 创建文件
File file1 = new File(file, "example.txt");
// 写文件
try {
FileOutputStream fos = new FileOutputStream(file1);
fos.write("Hello World".getBytes());
fos.close();
} catch (Exception e) {
Log.e(TAG, "存储文件失败", e);
}
} else {
Log.e(TAG, "SD 卡不可用");
}
存储图片:
// 获取内部存储文件路径
File file = getFilesDir();
// 创建图片文件
File imageFile = new File(file, "example.jpg");
// 从资源中获取图片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.example);
// 将 Bitmap 写入图片文件
try {
FileOutputStream fos = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
} catch (Exception e) {
Log.e(TAG, "存储图片失败", e);
}
// 从相册选择图片并存储
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 1);
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
if(requestCode == 1 && resultCode == RESULT_OK && data != null){
// 获取选择的图片的 URI
Uri uri = data.getData();
// 从 URI 中获取 Bitmap
Bitmap bitmap = null;
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
} catch (IOException e) {
e.printStackTrace();
}
// 将 Bitmap 写入图片文件
try {
FileOutputStream fos = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.close();
} catch (Exception e) {
Log.e(TAG, "存储图片失败", e);
}
}
}
Android 写一个软件存储文件和图片的方法如下:
-
获取文件和图片的存储路径:
//获取文件存储路径 File filePath = getApplicationContext().getFilesDir(); //获取图片存储路径 File imagePath = getApplicationContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
-
创建文件和图片:
try { //创建文件 File file = new File(filePath,"test.txt"); file.createNewFile(); //创建图片 File imageFile = new File(imagePath,"testImage.jpg"); imageFile.createNewFile(); } catch (IOException e) { e.printStackTrace(); }
-
将数据写入文件和图片:
//写入数据到文件 try { FileOutputStream fileOutputStream = openFileOutput("test.txt", Context.MODE_PRIVATE); String data = "Hello, World!"; fileOutputStream.write(data.getBytes()); fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); } //写入图片到文件 try { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test_image); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] byteArray = stream.toByteArray(); FileOutputStream fileOutputStream = new FileOutputStream(imageFile); fileOutputStream.write(byteArray); fileOutputStream.flush(); fileOutputStream.close(); } catch (IOException e) { e.printStackTrace(); }
-
从文件和图片读取数据:
//从文件读取数据 try { FileInputStream fileInputStream = openFileInput("test.txt"); byte[] data = new byte[fileInputStream.available()]; fileInputStream.read(data); fileInputStream.close(); String text = new String(data); } catch (IOException e) { e.printStackTrace(); } //从图片读取数据 try { Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getPath()); } catch (Exception e) { e.printStackTrace(); }
以上是Android写一个存储文件和图片的方法。需要注意的是,对于图片的存储,在使用完后要记得进行释放,以免占用内存过高。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/154790.html