`

android之File

 
阅读更多

1:Fileservice

package cn.itcast.service;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

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

public class FileService {
	private Context context;
	
	public FileService(Context context) {
		this.context = context;
	}
	/**
	 * 以私有文件保存内容
	 * @param filename 文件名称
	 * @param content 文件内容
	 * @throws Exception
	 */
	public void saveToSDCard(String filename, String content) throws Exception{
		File file = new File(Environment.getExternalStorageDirectory(), filename);
		FileOutputStream outStream = new FileOutputStream(file);
		outStream.write(content.getBytes());
		outStream.close();
	}
	
	/**
	 * 以私有文件保存内容
	 * @param filename 文件名称
	 * @param content 文件内容
	 * @throws Exception
	 */
	public void save(String filename, String content) throws Exception{
		FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_PRIVATE);
		outStream.write(content.getBytes());
		outStream.close();
	}
	/**
	 * 以追加方式保存内容
	 * @param filename 文件名称
	 * @param content 文件内容
	 * @throws Exception
	 */
	public void saveAppend(String filename, String content) throws Exception{// ctrl+shift+y / x
		FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_APPEND);
		outStream.write(content.getBytes());
		outStream.close();
	}
	/**
	 * 保存内容,注:允许其他应用从该文件中读取内容
	 * @param filename 文件名称
	 * @param content 文件内容
	 * @throws Exception
	 */
	public void saveReadable(String filename, String content) throws Exception{
		FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_WORLD_READABLE);
		outStream.write(content.getBytes());
		outStream.close();
	}
	/**
	 * 保存内容,注:允许其他应用往该文件写入内容
	 * @param filename 文件名称
	 * @param content 文件内容
	 * @throws Exception
	 */
	public void saveWriteable(String filename, String content) throws Exception{
		FileOutputStream outStream = context.openFileOutput(filename, Context.MODE_WORLD_WRITEABLE);
		outStream.write(content.getBytes());
		outStream.close();
	}
	/**
	 * 保存内容,注:允许其他应用对该文件读和写
	 * @param filename 文件名称
	 * @param content 文件内容
	 * @throws Exception
	 */
	public void saveRW(String filename, String content) throws Exception{
		FileOutputStream outStream = context.openFileOutput(filename, 
				Context.MODE_WORLD_READABLE+ Context.MODE_WORLD_WRITEABLE);
		outStream.write(content.getBytes());
		outStream.close();
	}
	/**
	 * 读取文件内容
	 * @param filename 文件名称
	 * @return
	 * @throws Exception
	 */
	public String readFile(String filename) throws Exception{
		FileInputStream inStream = context.openFileInput(filename);
		byte[] buffer = new byte[1024];
		int len = 0;
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		while( (len = inStream.read(buffer))!= -1){
			outStream.write(buffer, 0, len);
		}
		byte[] data = outStream.toByteArray();//得到文件的二进制数据
		outStream.close();
		inStream.close();
		return new String(data);
	}
}

 2:FileServiceTest

 

package cn.itcast.file;

import cn.itcast.service.FileService;
import android.test.AndroidTestCase;
import android.util.Log;

public class FileServiceTest extends AndroidTestCase {
	private static final String TAG = "FileServiceTest";

	public void testSave() throws Throwable{
		FileService service = new FileService(this.getContext());
		service.save("itcast.txt", "www.itcast.cn");
	}
	
	public void testReadFile() throws Throwable{
		FileService service = new FileService(this.getContext());
		String result = service.readFile("www.txt");
		Log.i(TAG, result);
	}
	
	public void testSaveAppend() throws Throwable{
		FileService service = new FileService(this.getContext());
		service.saveAppend("append.txt", ",www.csdn.cn");
	}
	
	public void testSaveReadable() throws Throwable{
		FileService service = new FileService(this.getContext());
		service.saveReadable("readable.txt", "www.sohu.com");
	}
	
	public void testSaveWriteable() throws Throwable{
		FileService service = new FileService(this.getContext());
		service.saveWriteable("writeable.txt", "www.sina.com.cn");
	}
	
	public void testSaveRW() throws Throwable{
		FileService service = new FileService(this.getContext());
		service.saveRW("rw.txt", "www.joyo.com");
	}
}

 

3:AceessOtherAppFileTest

package cn.itcast.other;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import android.test.AndroidTestCase;
import android.util.Log;

public class AceessOtherAppFileTest extends AndroidTestCase {
	private static final String TAG = "AceessOtherAppFileTest";
	//文件没有发现
	public void testAccessOtherAppFile() throws Throwable{
		String path = "/data/data/cn.itcast.file/files/www.txt";
		File file = new File(path);
		FileInputStream inStream = new FileInputStream(file);
		byte[] buffer = new byte[1024];
		int len = 0;
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		while( (len = inStream.read(buffer))!= -1){
			outStream.write(buffer, 0, len);
		}
		byte[] data = outStream.toByteArray();//得到文件的二进制数据
		outStream.close();
		inStream.close();
		Log.i(TAG, new String(data));
	}
	
	
	public void testAccessOtherAppReadable() throws Throwable{
		String path = "/data/data/cn.itcast.file/files/readable.txt";
		File file = new File(path);
		FileInputStream inStream = new FileInputStream(file);
		byte[] buffer = new byte[1024];
		int len = 0;
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		while( (len = inStream.read(buffer))!= -1){
			outStream.write(buffer, 0, len);
		}
		byte[] data = outStream.toByteArray();//得到文件的二进制数据
		outStream.close();
		inStream.close();
		Log.i(TAG, new String(data));
	}
	
	public void testWriteOtherAppReadable() throws Throwable{
		String path = "/data/data/cn.itcast.file/files/readable.txt";
		File file = new File(path);
		FileOutputStream outStream = new FileOutputStream(file);
		outStream.write("xxxx".getBytes());
		outStream.close();
	}
	
	public void testWriteOtherAppWriteable() throws Throwable{
		String path = "/data/data/cn.itcast.file/files/writeable.txt";
		File file = new File(path);
		FileOutputStream outStream = new FileOutputStream(file);
		outStream.write("liming".getBytes());
		outStream.close();
	}
	
	public void testAccessOtherAppWriteable() throws Throwable{
		String path = "/data/data/cn.itcast.file/files/writeable.txt";
		File file = new File(path);
		FileInputStream inStream = new FileInputStream(file);
		byte[] buffer = new byte[1024];
		int len = 0;
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		while( (len = inStream.read(buffer))!= -1){
			outStream.write(buffer, 0, len);
		}
		byte[] data = outStream.toByteArray();//得到文件的二进制数据
		outStream.close();
		inStream.close();
		Log.i(TAG, new String(data));
	}
	
	public void testWriteOtherAppRW() throws Throwable{
		String path = "/data/data/cn.itcast.file/files/rw.txt";
		File file = new File(path);
		FileOutputStream outStream = new FileOutputStream(file);
		outStream.write("liming".getBytes());
		outStream.close();
	}
	
	public void testAccessOtherAppRW() throws Throwable{
		String path = "/data/data/cn.itcast.file/files/rw.txt";
		File file = new File(path);
		FileInputStream inStream = new FileInputStream(file);
		byte[] buffer = new byte[1024];
		int len = 0;
		ByteArrayOutputStream outStream = new ByteArrayOutputStream();
		while( (len = inStream.read(buffer))!= -1){
			outStream.write(buffer, 0, len);
		}
		byte[] data = outStream.toByteArray();//得到文件的二进制数据
		outStream.close();
		inStream.close();
		Log.i(TAG, new String(data));
	}
}

 

4:MainActivity:SD卡读取

package cn.itcast.file;

import cn.itcast.service.FileService;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {
	private static final String TAG = "MainActivity";
    private FileService fileService;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
     
        fileService = new FileService(this);
        
        Button button = (Button) this.findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				EditText filenameText = (EditText) findViewById(R.id.filename);
				EditText contentText = (EditText) findViewById(R.id.filecontent);
				String filename = filenameText.getText().toString();
				String content = contentText.getText().toString();
				try {
					//判断sdcard是否存在于手机上,并且可以进行读写访问
					if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
						fileService.saveToSDCard(filename, content);
						Toast.makeText(MainActivity.this, R.string.success, 1).show();
					}else{
						Toast.makeText(MainActivity.this, R.string.sdcarderror, 1).show();
					}
				} catch (Exception e) {
					Log.e(TAG, e.toString());
					Toast.makeText(MainActivity.this, R.string.error, 1).show();
				}
			}
		});
    }
}

注意:如果想获得应用程序所在目录下面的file文件夹路径可通过:this.getFilesDir(),若果想获得cache文件夹路可通过: this.getCacheDir().

分享到:
评论

相关推荐

    Android File Transfer for MAC 下载

    《Android File Transfer for MAC:连接安卓与苹果的桥梁》 在数字时代,设备间的文件传输变得日益重要。作为两大主流操作系统,Android和iOS在许多场景下需要进行数据交互。特别是对于Mac用户来说,如何在不借助第...

    new file()创建不出文件 解决 Android无法创建File问题

    Android 无法创建File文件 ,在上传图片的时候报错,提示file文件夹未空或在手机清空缓存删除文件夹后 文件夹无法创建 使用file.mkdirs()方法 返回一直是false 提供的功法可以直接解决该问题

    AndroidFileTransfer.dmg

    Mac查看Android文件(AndroidFileTransfer.dmg) Android File Transfer Browse and transfer files between your Mac computer and your Android device. DOWNLOAD NOW Supports macOS 10.7 and higher. By ...

    android webview input=file 失效解决方案

    android:name="androidx.core.content.FileProvider" android:authorities="your.package.name.fileprovider" android:exported="false" android:grantUriPermissions="true"> android:name="android.support...

    一行代码完成Android 7 FileProvider适配

    一行代码完成Android 7 FileProvider适配Demo 通过FileProvider7这个类完成uri的获取即可,例如: FileProvider7.getUriForFile FileProvider7.setIntentDataAndType FileProvider7.setIntentData

    AndroidFileTransfer.zip

    《AndroidFileTransfer:Mac用户连接安卓手机的必备工具》 在数字时代,数据传输成为日常生活中不可或缺的一部分。尤其是在iOS和Android两大操作系统并存的情况下,如何方便地在Mac电脑与安卓设备之间进行文件交换...

    【AndroidFile】Mac & Android 文件互传

    Open AndroidFileTransfer.dmg. Drag Android File Transfer to Applications. Use the USB cable that came with your Android device and connect it to your Mac. Double click Android File Transfer. Browse ...

    MAC AndroidFileTransfer.zip

    标题中的"MAC AndroidFileTransfer.zip"表明这是一个专为Mac用户设计的工具,用于与Android设备进行文件传输。在描述中提到的"MAC查看安卓手机文件的软件"进一步确认了这个压缩包包含的软件是一个帮助Mac用户方便地...

    Android-Android-FileBrowser-FilePicker一个Android文件浏览和选择控件

    **Android-FileBrowser-FilePicker** 是一个专为Android平台设计的文件浏览和选择组件,它为开发者提供了方便的文件操作功能,使用户能够在应用程序中浏览、选择和管理本地文件。这个控件对于那些需要集成文件操作...

    Android-SelectFile一个android图片选择器

    【Android-SelectFile一个android图片选择器】 在Android应用开发中,用户经常需要选择图片进行上传、编辑或显示。为了方便这一操作,开发者通常会创建一个图片选择器组件。"Android-SelectFile"是一个专为Android...

    Android中File类的定义与常用方法.pdf

    在Android开发中,`File`类是用于处理文件和目录的核心工具,它是Java `java.io.File`类的一个实例。这个类提供了与操作系统无关的方式来...理解和熟练使用`File`类,是成为一名合格的Android开发者的基础技能之一。

    Android File Transfer

    **Android File Transfer** 是一款专为Mac OS设计的实用工具,允许用户方便地在他们的苹果电脑上浏览和管理Android设备上的文件。这款软件解决了在 macOS 系统中与Android设备进行文件交换时的兼容性问题,使得数据...

    Android-android-file-transfer-linux.zip

    Android-android-file-transfer-linux.zip,Android Linux文件传输,安卓系统是谷歌在2008年设计和制造的。操作系统主要写在爪哇,C和C 的核心组件。它是在linux内核之上构建的,具有安全性优势。

    Android File Transfer For Mac

    **Android File Transfer for Mac** 是一个专为苹果Mac用户设计的工具,旨在方便他们与Android设备之间进行文件传输。在移动应用的测试和开发过程中,这个工具尤其有用,因为它允许开发者快速地在Mac电脑和Android...

    Android中与File有关的权限.pdf

    在Android系统中,File类是进行文件操作的核心类,它提供了丰富的API来创建、读取、写入、删除以及管理文件和目录。Android文件权限管理是应用开发中至关重要的一个环节,因为它涉及到用户数据的隐私和安全。以下是...

    Android中使用File文件进行数据存储

    Android提供了多种数据存储方式,其中包括使用File类进行文件存储。本教程将深入探讨如何在Android中利用File类进行数据操作,包括创建、读取、修改和删除文件,以及文件路径的处理。 1. **基本概念** - **File类*...

    最新Android File Transfer for MAC 下载

    Android File Transfer是一款专为Mac用户设计的工具,它允许用户在Mac电脑上轻松地与Android设备进行文件交换。这款软件解决了苹果操作系统与Android系统之间在数据传输上的兼容性问题,使得用户无需借助其他复杂的...

    Android FileManager文件管理器源码

    《深入解析Android FileManager文件管理器源码》 在Android系统中,文件管理器是一个至关重要的组件,它允许用户浏览、操作、创建、删除以及管理设备上的文件和目录。本篇文章将详细探讨一个基于Android的文件管理...

    FileManager_android_

    《Android FileManager 文件浏览器(管理器)源码解析》 在Android平台上,文件管理器是用户与设备存储空间交互的重要工具,它允许用户查看、创建、删除、移动和复制文件及目录。本篇将深入探讨一个名为"File...

    Android的File案例

    在Android开发中,`File`类是用于操作文件和目录的基本工具。它是Java.io.File类的一个子类,因此,Android中的`File`类继承了Java的文件操作功能,并且针对移动设备进行了适当的优化。让我们深入了解一下`File`类在...

Global site tag (gtag.js) - Google Analytics