«

Android Study Day 3 --Android File Read And Write

时间:2024-3-2 17:32     作者:韩俊     分类: Android


Read File

read file by path in “/data/data/appName/appPackageName/files”:
use method openFileInput(String fileName) of class Context.
example:

public String read(String fileName) throws Exception {
        try (FileInputStream input = context.openFileInput(fileName)) {
            StringBuffer stringBuffer=new StringBuffer();
            byte[] buffer=new byte[input.available()];
            for (int i = input.read(buffer); i >0; i=input.read(buffer)) {
                stringBuffer.append(new String(buffer,0,i));
            }
            return stringBuffer.toString();
        } catch (Exception e) {
            throw e;
        }
    }

read file by path in “/resource/raw”:
use method openRawResource(int R.raw.fileId) of class Resources.
example:

InputStream input = context.getResources().openRawResource(R.raw.fileId); 

note raw in file general need use EncodingUtils.getString(String data,String charset) decode,and this directory in single file size max 1MB,and only read can’t write.

read file by path in “/resource/asset”:
use method open(String fileName) of class AssetManager.
example:

InputStream input = context.getResources().getAssets().open(String fileName);

note asset in file general need use EncodingUtils.getString(String data,String charset) decode,and this directory in single file size max 1MB,and only read can’t write.

read file by path in “/mnt/sdcard”(compatible version must use Environment.getExternalStorageDirectory()):
use direct create FileInputStream or direct create RandomAccessFile.
example:

1.
InputStream input =new FileInputStream(Environment.getExternalStorageDirectory()+"/folderPath***/"+fileName);
2.
RandomAccessFile accessFile=new RandomAccessFile(Environment.getExternalStorageDirectory()+"/folderPath***/"+fileName,String accessMode);

note sdcardin file general need use EncodingUtils.getString(String data,String charset) decode,and check SD card whether or not exist.
check SD card whether or not exist code:

if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())){
    SD card exist and can read with write...
}

Write File

write file by path in “/data/data/appName/appPackageName/files”:
use method openFileOutput(String fileName,int writeMode) of class Context.
example:

public void save(String fileName, String fileContent) throws Exception {
        try (FileOutputStream output = context.openFileOutput(fileName,
                Context.MODE_PRIVATE)) {
            output.write(fileContent.getBytes());
        } catch (Exception e) {
            throw e;
        }
    }

write file by path in “/mnt/sdcard”(compatible version must use Environment.getExternalStorageDirectory()):
use direct create FileOuputStream or direct create RandomAccessFile.
example:

1.
OuputStream ouput =new FileOuputStream(Environment.getExternalStorageDirectory()+"/folderPath***/"+fileName);
2.
RandomAccessFile accessFile=new RandomAccessFile(Environment.getExternalStorageDirectory()+"/folderPath***/"+fileName,String accessMode);

note SD card in write file need at AndroidMainfest.xml setting permission.
at AndroidMainfest.xml root node in add code:

<!--create delete file permission-->  
        <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>  
        <!--create write file permission-->  
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

note ‘uses-permission’ tag must appears ‘application’ tag before.

comment may on AVD will throw an exception “open file failed:EACCES (permission denied)”,but never appear at really environment.

标签: android

热门推荐