android本地文件读取和保存字符串
Androidstudio将字符串写入本地的操作方法

Androidstudio将字符串写⼊本地的操作⽅法File 类的操作:1.⾸先需要添加相关权限:<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>注意6.0以上需要动态申请:private void checkPermission(){if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {//6.0以上int permission = ActivityCompat.checkSelfPermission(getApplication(), Manifest.permission.RECEIVE_SMS);int permission1 = ActivityCompat.checkSelfPermission(getApplication(), Manifest.permission.WRITE_EXTERNAL_STORAGE);if(permission != PackageManager.PERMISSION_GRANTED && permission1 != PackageManager.PERMISSION_GRANTED) {Log.e(TAG,"没有获取权限,请申请");// 申请⼀个(或多个)权限,并提供⽤于回调返回的获取码(⽤户定义)if (ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.RECEIVE_SMS) && ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {//这⾥可以写个对话框之类的项向⽤户解释为什么要申请权限,并在对话框的确认键后续再次申请权限 Log.e(TAG,"提⽰");ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.RECEIVE_SMS,Manifest.permission.WRITE_EXTERNAL_STORAGE}, CODE_READ_SMS);} else {//申请权限,字符串数组内是⼀个或多个要申请的权限,1是申请权限结果的返回参数,在onRequestPermissionsResult可以得知申请结果Log.e(TAG,"您已禁⽌");Toast.makeText(MainActivity.this,"没有获取读取⼿机权限,请到应⽤中⼼⼿动打开该权限",Toast.LENGTH_SHORT).show();}}else{Log.e(TAG,"获取到了权限");}}else{Log.e(TAG,"获取到了权限");}}@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);if(requestCode == CODE_READ_SMS){if(grantResults[0] == PackageManager.PERMISSION_GRANTED) {Log.e(TAG,"获取到了权限");} else{// 没有获取到权限,做特殊处理Log.e(TAG,"没有获取到权限");Toast.makeText(MainActivity.this,"没有获取读取⼿机权限,请到应⽤中⼼⼿动打开该权限",Toast.LENGTH_SHORT).show();}}}2.saveToFilea)BufferedWriter 追加//保存⽂件到sd卡public void saveToFile(String content) {BufferedWriter out = null;//获取SD卡状态String state = Environment.getExternalStorageState();//判断SD卡是否就绪if (!state.equals(Environment.MEDIA_MOUNTED)) {Toast.makeText(this, "请检查SD卡", Toast.LENGTH_SHORT).show();return;}//取得SD卡根⽬录File file = Environment.getExternalStorageDirectory();try {Log.e(TAG, "======SD卡根⽬录:" + file.getCanonicalPath());if(file.exists()){LOG.e(TAG, "file.getCanonicalPath() == " + file.getCanonicalPath());}/*输出流的构造参数1:可以是File对象也可以是⽂件路径输出流的构造参数2:默认为False=>覆盖内容; true=>追加内容*/out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file.getCanonicalPath() + "/readMsg.txt",true)));out.newLine();out.write(content);Toast.makeText(this, "保存成功", Toast.LENGTH_SHORT).show();} catch (IOException e) {e.printStackTrace();} finally {if (out != null) {try {out.close();} catch (IOException e) {e.printStackTrace();}}}}b)FileWriter追加/*** 使⽤FileWriter进⾏⽂本内容的追加* @param file* @param content*/private void addTxtToFileWrite(File file, String content){FileWriter writer = null;try {//FileWriter(file, true),第⼆个参数为true是追加内容,false是覆盖writer = new FileWriter(file, true);writer.write("\r\n");//换⾏writer.write(content);} catch (IOException e) {e.printStackTrace();} finally {try {if(writer != null){writer.close();}} catch (IOException e) {e.printStackTrace();}}}}3.readFromFile()//从SD卡读取⽂件public String readFromFile() {//读的时候要⽤字符流万⼀⾥⾯有中⽂BufferedReader reader = null;FileInputStream fis;StringBuilder sbd = new StringBuilder();String state = Environment.getExternalStorageState();if (!state.equals(Environment.MEDIA_MOUNTED)) {Toast.makeText(this, "SD卡未就绪", Toast.LENGTH_SHORT).show(); return "";}File root = Environment.getExternalStorageDirectory();try {fis = new FileInputStream(root + "/readMsg.txt");reader = new BufferedReader(new InputStreamReader(fis));String row;while ((row = reader.readLine()) != null) {sbd.append(row);}} catch (FileNotFoundException e) {Toast.makeText(this, "⽂件不存在", Toast.LENGTH_SHORT).show(); //e.printStackTrace();} catch (IOException e) {e.printStackTrace();} finally {if (reader != null) {try {reader.close();} catch (IOException e) {e.printStackTrace();}}}return sbd.toString();}4.removeFromFile()//删除SD卡⽂件public void removeFromFile() {String state = Environment.getExternalStorageState();if (!state.equals(Environment.MEDIA_MOUNTED)) {Toast.makeText(this, "SD卡未就绪", Toast.LENGTH_SHORT).show();return;}//取得SD卡根⽬录File root = Environment.getExternalStorageDirectory();File myFile=new File(root+"/sd.txt");//File myFile=new File(root,"sd.txt");if (myFile.exists()) {myFile.delete();Toast.makeText(this,"⽂件已删除",Toast.LENGTH_SHORT).show();}else {Toast.makeText(this,"⽂件不存在",Toast.LENGTH_SHORT).show();}}}总结以上所述是⼩编给⼤家介绍的Android studio 将字符串写⼊本地的操作⽅法,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
android txt读写

e.printStackTrace();
}
return res;
}
六、 写, 读sdcard目录上的文件,要用FileOutputStream, 不能用openFileOutput
//写在/mnt/sdcard/目录下面的文件
}
}
//-------------------------------------------------------
//读文件在./data/data/com.tt/files/下面
public String readFileData(String fileName){
}catch(Exception e){
e.printStackTrace();
}
myTextView.setText(res);//把得到的内容显示在TextView上
二、 从asset中获取文件并读取数据(资源文件只能读不能写)
fin.read(buffer);
res = EncodingUtils.getString(buffer, "UTF-8");
fin.close();
}catch(Exception e){
e.printStackTrace();
fin.read(buffer);
res = EncodingUtils.getString(buffer, "UTF-8");
fin.close();
}
catch(Exception e){
e.printStackTrace();
}
return res;
}
注: openFileOutput是在raw里编译过的,FileOutputStream是任何文件都可以
android开发 getstring方法(一)

android开发 getstring方法(一)Android开发GetString方法详解1. 概述在Android开发中,GetString方法是常用的一个API,用于获取资源文件中的字符串。
本文将详细介绍Android开发中GetString方法的各种用法。
2. 使用GetString方法的常规方式在Android中,通过GetString方法可以直接获取字符串资源。
具体的代码如下:String str = getString(R.string.my_string);上述代码中的R.string.my_string代表了一个在res/values/strings.xml中定义的字符串资源。
3. GetString方法的参数类型GetString方法可以接受不同类型的参数,下面将介绍常见的几种参数类型。
3.1 字符串资源参数可以直接传入一个字符串资源的ID作为GetString方法的参数。
例如:String str = getString(R.string.my_string);3.2 字符串格式化参数GetString方法还支持字符串格式化功能,可以将参数嵌入到字符串中。
具体做法是在Strings.xml中定义一个带有占位符的字符串,然后通过GetString方法进行格式化。
例如:<string name="welcome_message">Welcome, %s!</string>在代码中使用格式化的GetString方法:String name = "John";String welcomeMessage = getString(R.string.welcome_messa ge, name);3.3 数字参数GetString方法还可以接受数字参数,将数字转换为字符串。
例如:int number = 123;String numberString = getString(R.string.number, number);在Strings.xml中定义字符串格式:<string name="number">The number is %d</string>4. GetString方法的返回值GetString方法的返回值是一个字符串,可以直接使用。
android读写文件权限流程

Android读写文件权限流程概述在A nd ro id开发中,应用程序需要获取特定的权限以便能够读取和写入设备上的文件。
本文将介绍An dr oi d中读写文件权限的流程,帮助开发者了解如何正确处理文件访问权限相关的问题。
为什么需要文件权限A n dr oi d系统为了保护用户的隐私和数据安全,对应用程序的文件访问进行了限制。
如果应用程序想要读取或写入设备上的文件,必须首先获取相应的权限。
否则,在没有权限的情况下进行文件操作将会引发安全异常。
文件读取权限步骤1:在A n d r o i dM a n i f e s t.x m l中声明权限要读取设备上的文件,首先需要在应用的清单文件(A nd ro id Ma ni fe st.xm l)中声明文件读取权限。
可以使用以下代码将读取权限添加到清单文件中:<u se s-p e rm is si on an dr oid:na me="an dr oi d.p e rm is si on.R EA D_E X TE RN AL_ S T OR AG E"/>这个权限允许应用程序读取外部存储(如S D卡)上的文件。
步骤2:检查权限在代码中进行文件读取操作前,需要先检查应用是否已经获得了文件读取权限。
可以使用以下代码来检查权限:i f(C on te xt Co mp at.c he ck Se lf Pe rm iss i on(c on te xt,M ani f es t.p e r mi ss io n.RE AD_EX T ER NA L_ST OR AG E)!=Pa ck ag eM an ag er.P ER MI SS I O N_G RA NT ED){//没有读取权限,请求权限}e ls e{//已经有读取权限,进行文件读取操作}步骤3:请求权限如果在步骤2中检查到没有读取权限,应该向用户请求获取该权限。
android读写文件权限流程

android读写文件权限流程
一、 Android读写文件权限介绍
Android SDK提供了文件 I/O 的功能,它使开发人员可以使用简单
的API操作本地文件系统。
在Android 6.0 及更高版本中,对文件I/O,
用户必须显式地获取权限才能继续进行操作。
Android针对本地文件读写,提供了相应的权限控制,主要有类似的
内容:
1、读取外部存储文件权限:
2、写入外部存储文件权限:
二、Android文件读写权限流程
Android读写文件权限的整个流程如下:
1、应用开发者在AndroidManifest文件中声明
“android.permission.READ_EXTERNAL_STORAGE”和
“android.permission.WRITE_EXTERNAL_STORAGE”权限;
2、当用户启动应用的时候,系统会检测应用是否声明了需要申请的
权限;
3、如果声明了需要申请的权限,系统就会向用户发出权限请求提示;
4、用户选择同意或拒绝;
5、如果用户同意,系统会授予该应用相应的权限;
6、如果用户拒绝,应用就无法使用该权限。
三、Android文件读写权限的注意事项
1、在Android 6.0及更高版本中,开发者需要在AndroidManifest 中声明需要申请的权限;
2、在申请权限的时候,要确保用户理解其申请的权限;
3、如果用户拒绝权限,应用就无法使用该权限;。
AndroidFile存储(二):文件读写

AndroidFile存储(⼆):⽂件读写⼀、Android 应⽤常⽤存储路径1.1、常⽤路径/data/data/包名//sdcard/Android/data/包名//sdcard/xxx前两个是应⽤内部存储, 会随着app的卸载⽽⾃动删除, sdcard中其他的⽂件夹不会⾃动删除, 除⾮⽤户⼿动删除, 否则会⼀直存在, 换句话说就是垃圾.Google官⽅建议把数据存储在 /sdcard/Android/data/包名/ 下.1.2、路径获取⽅法前两个应⽤内部存储通过 Context 来获取, 第三个作为外部存储是通过 Environment 类来获取. 注释为返回值.1 a、/data/data/包名/2 context.getFilesDir(); // /data/data/包名/files3 context.getCacheDir(); // /data/data/包名/cache4 b、/sdcard/Android/data/包名/5 context.getExternalFilesDir(); // /sdcard/Android/data/包名/files6 context.getExternalCacheDir(); // /sdcard/Android/data/包名/cache7 c、/sdcard/xxx8 Environment.getExternalStorageDirectory(); //内置sdcard注意, 根据源码⽂档中说明, 获取外部存储时, 有可能会因为各种问题导致获取失败, 建议先使⽤ getExternalStorageState 来判断外部存储状态, 如果已挂载的话再存储.⼆、Android应⽤私有存储⽂件的写⼊与读取使⽤⽂件I/O ⽅法可以直接往⼿机中存储数据,默认情况下这些⽂件不可以被其他的应⽤程序访问。
Android平台⽀持 java平台下的⽂件I/O操作,主要使⽤FileInputStream 和 FileOutputStream 这两个类来实现⽂件的存储与读取。
Android8.0读取内部和外部存储以及外置SDcard的方法

Android8.0读取内部和外部存储以及外置SDcard的⽅法最近碰到询问我这个读取SDcard的问题,很久没有看这部分了,所以⼤致看了⼀下,顺便记录⼀下。
在Android 8.0上做了测试。
⼀般的Android App能读取的存储空间主要有三种:app⾃⼰的私有⽬录,也就是/data/data/《app ⽬录》。
读写这个⽬录不需要单独的权限。
每个app只能读写⾃⼰的⽬录,⽽不能读写其他app的⽬录。
Android通过Seandroid对权限进⾏了管理。
/sdcard。
这个其实是Android⼿机的internal storage。
也就是⼀般你买⼿机的时候,说⼿机是64GB的存储空间,就是说的这个地⽅。
这个地⽅的读写需要申请权限。
READ_EXTERNAL_STORAGE 是读, WRITE_EXTERNAL_STORAGE 是写,有写的权限就⾃动有读的权限。
这个权限是正对整个/sdcard,不区分⼦⽬录,也就是说⼀旦你申请权限你可以对整个/sdcard上的所有⽂件和⽬录有操作权限。
这个权限的管理会显⽰再settings⾥相应的app permission⾥。
外置sdcard这个对应的是你放⼊⼿机sdcard插槽的microSD卡。
有时候也叫removable storage。
Android⾥⽆法通过申请权限来获取读写的权利。
这⼀点和上⾯说的2不同。
因此,如果需要获取写权限,需要⽤户指定特定的⽬录单独授权。
这⾥举个简单的例⼦。
如果外置sdcard的路径是/mnt/extsdcard,然后上⾯有两个⽬录a和b,那么你可以让⽤户授权你写/mnt/extsdcard/a, 但是你还需要让⽤户再单独授权你写/mnt/extsdcard/b,也就是要授权两次。
具体的实现⽅法,就不多说了, google再github上给了个,其中的wiki页⾯有⽐较详细的描述。
特别要说明的是,由于这个没有对应的android permission,所以如果你得到授权以后,对应的⽬录路径不会显⽰再settings 中的app permission。
android文件的写入与读取

在android中的文件放在不同位置,它们的读取方式也有一些不同。
本文对android中对资源文件的读取、数据区文件的读取、SD卡文件的读取及RandomAccessFile的方式和方法进行了整理。
供参考。
一、资源文件的读取:1) 从resource的raw中读取文件数据:String res = "";try{//得到资源中的Raw数据流InputStream in = getResources().openRawResource(R.raw.test);//得到数据的大小int length = in.available();byte [] buffer = new byte[length];//读取数据in.read(buffer);//依test.txt的编码类型选择合适的编码,如果不调整会乱码res = EncodingUtils.getString(buffer, "BIG5");//关闭in.close();}catch(Exception e){e.printStackTrace();}2) 从resource的asset中读取文件数据String fileName = "test.txt"; //文件名字String res="";try{//得到资源中的asset数据流InputStream in = getResources().getAssets().open(fileName);int length = in.available();byte [] buffer = new byte[length];in.read(buffer);in.close();res = EncodingUtils.getString(buffer, "UTF-8");}catch(Exception e){e.printStackTrace();}二、读写/data/data/<应用程序名>目录上的文件://写数据public void writeFile(String fileName,String writestr) throws IOException{try{FileOutputStream fout =openFileOutput(fileName, MODE_PRIVATE); byte [] bytes = writestr.getBytes();fout.write(bytes);fout.close();}catch(Exception e){e.printStackTrace();}}//读数据public String readFile(String fileName) throws IOException{String res="";try{FileInputStream fin = openFileInput(fileName);int length = fin.available();byte [] buffer = new byte[length];fin.read(buffer);res = EncodingUtils.getString(buffer, "UTF-8");fin.close();}catch(Exception e){e.printStackTrace();}return res;}三、读写SD卡中的文件。