android保存文件到SD卡,无卡时自动保存到手机 和读出文件

    	<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"></uses-permission> 
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>  
    <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>



public void save(String filecontent)  //位于/data/data/<package name>/files 
    {
		//Time t = new Time(); // or Time t=new Time("GMT+8"); 加上Time Zone资料。
		//t.setToNow(); // 取得系统时间。
		//String filename=String.format("%04d-%02d-%02d.txt", t.year,t.month+1,t.monthDay);
		String filename="视力记录表.txt";
        try {
            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
            	File f2 = new File(Environment.getExternalStorageDirectory()+"/日期视力/");
            	f2.mkdir();
            	//Toast.makeText(this,"卡"+f2.toString()+"/"+filename,Toast.LENGTH_SHORT).show();
            	//执行存储sdcard方法
            
            	File f = new File(f2,filename);
            	FileOutputStream out = new FileOutputStream(f,true);
            	out.write(filecontent.getBytes("UTF-8"));
            }
            else{
            	//存储到手机中,或提示
            	Toast.makeText(this,"无卡,保存到手机"+getFilesDir().toString()+"/"+filename,Toast.LENGTH_SHORT).show();
            	   FileOutputStream outStream=this.openFileOutput(filename,Context.MODE_APPEND); //模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
                   outStream.write(filecontent.getBytes("UTF-8"));
                   outStream.close();
            }
            
        } catch (FileNotFoundException e) {
            return;
        }
        catch (IOException e){
            return ;
        }   
    }


package com.example.fileread2;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;


import android.support.v7.app.ActionBarActivity;
import android.text.format.Time;
import android.content.Context;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class MainActivity extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        save("12\r\n1234");
        Button btnLine=(Button)findViewById(R.id.button1);
        Button btnAll=(Button)findViewById(R.id.button2);
        final TextView dis = (TextView) findViewById(R.id.tv); // 得到数据显示句柄
        btnLine.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				dis.setText(readFirstLine());
			}
		});
        btnAll.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				dis.setText(readAll());
			}
		});

    }
	public void save(String filecontent)  //位于/data/data/<package name>/files 
    {
		//Time t = new Time(); // or Time t=new Time("GMT+8"); 加上Time Zone资料。
		//t.setToNow(); // 取得系统时间。
		//String filename=String.format("%04d-%02d-%02d.txt", t.year,t.month+1,t.monthDay);
		String filename="视力记录表.txt";
		  try {
	            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
	            	File f2 = new File(Environment.getExternalStorageDirectory()+"/test/");
            	f2.mkdir();
            	//Toast.makeText(this,"卡"+f2.toString()+"/"+filename,Toast.LENGTH_SHORT).show();
            	//执行存储sdcard方法
            
            	File f = new File(f2,filename);
            	FileOutputStream out = new FileOutputStream(f,true);
            	out.write(filecontent.getBytes("UTF-8"));
            }
            else{
            	//存储到手机中,或提示
            	Toast.makeText(this,"无卡,保存到手机"+getFilesDir().toString()+"/"+filename,Toast.LENGTH_SHORT).show();
            	   FileOutputStream outStream=this.openFileOutput(filename,Context.MODE_APPEND); //模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
                   outStream.write(filecontent.getBytes("UTF-8"));
                   outStream.close();
            }
            
        } catch (FileNotFoundException e) {
            return;
        }
        catch (IOException e){
            return ;
        }   
    }
    public String readAll()
    {
    	StringBuffer sb = new StringBuffer();
    	String filename="test.txt";
		  try {
	            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
	            	File f2 = new File(Environment.getExternalStorageDirectory()+"/test/");
               
          	File f = new File(f2,filename);
        	BufferedReader br = new BufferedReader(new FileReader(f));
			String readline = "";
			
			while ((readline = br.readLine()) != null) {
			//	System.out.println("readline:" + readline);
				Log.d("chenhao", "chenhao"+"readline:" + readline);	
				sb.append(readline);
			}
			br.close();
          }
          else{
          	//存储到手机中,或提示
          	Toast.makeText(this,"无卡"+getFilesDir().toString()+"/"+filename,Toast.LENGTH_SHORT).show();
          }
          
      } catch (FileNotFoundException e) {
          return "";
      }
      catch (IOException e){
          return "";
      } 
		  
			return "读取成功:" + sb.toString();
	            	
    }
    public String readFirstLine()
    {  	
    	StringBuffer sb = new StringBuffer();
    	String filename="test.txt";
		  try {
	            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
	            	File f2 = new File(Environment.getExternalStorageDirectory()+"/test/");
               
          	File f = new File(f2,filename);
        	BufferedReader br = new BufferedReader(new FileReader(f));
			String readline = "";
			readline = br.readLine();
		//	while ((readline = br.readLine()) != null) {
			//	System.out.println("readline:" + readline);
				Log.d("chenhao", "chenhao"+"readline:" + readline);	
				sb.append(readline);
		//	}
			br.close();
          }
          else{
          	//存储到手机中,或提示
          	Toast.makeText(this,"无卡"+getFilesDir().toString()+"/"+filename,Toast.LENGTH_SHORT).show();
          }
          
      } catch (FileNotFoundException e) {
          return "没有找到文件";
      }
      catch (IOException e){
          return "IO异常";
      } 
			return "首行读取成功:" + sb.toString();
    	
    }


    @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;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    
 	/**
 	 * 判断SDCard是否存在 [当没有外挂SD卡时,内置ROM也被识别为存在sd卡]
 	 * 
 	 * @return
 	 */
 	public static boolean isSdCardExist() {
 		return Environment.getExternalStorageState().equals(
 				Environment.MEDIA_MOUNTED);
 	}
 	/**
 	 * 获取SD卡根目录路径
 	 * 
 	 * @return
 	 */
 	public static String getSdCardPath() {
 		boolean exist = isSdCardExist();
 		String sdpath = "";
 		if (exist) {
 			sdpath = Environment.getExternalStorageDirectory()
 					.getAbsolutePath();
 		} else {
 			sdpath = "不适用";
 		}
 		return sdpath;

 	}
 	/**
 	 * 获取默认的文件路径
 	 * 
 	 * @return
 	 */
 	public static String getDefaultFilePath() {
 		String filepath = "";
 		File file = new File(Environment.getExternalStorageDirectory(),
 				"test.txt");
 		if (file.exists()) {
 			filepath = file.getAbsolutePath();
 		} else {
 			filepath = "不适用";
 		}
 		return filepath;
 	}
 	/*
 	public void readFileFS()  //使用FileInputStream读取文件
 	{
         try {
     		File file = new File(Environment.getExternalStorageDirectory(),
     				"test.txt");
             FileInputStream is = new FileInputStream(file);
           
 			byte[] b = new byte[is.available()];
             is.read(b);
             String result = new String(b);
             System.out.println("读取成功:"+result);
         } catch (Exception e) {
         	e.printStackTrace();
         }
 	}
 	*/
 	public void readFileBR() //使用BufferReader读取文件
 	{
 		try {
 			File file = new File(Environment.getExternalStorageDirectory(),
 					"test.txt");
 			BufferedReader br = new BufferedReader(new FileReader(file));
 			String readline = "";
 			StringBuffer sb = new StringBuffer();
 			while ((readline = br.readLine()) != null) {
 				System.out.println("readline:" + readline);
 				sb.append(readline);
 			}
 			br.close();
 			System.out.println("读取成功:" + sb.toString());
 		} catch (Exception e) {
 			e.printStackTrace();
 		}
 	}
}

保存到手机

1.清空

	    	SharedPreferences.Editor sharedata = getSharedPreferences("Add", 0).edit();
			sharedata.clear();
			sharedata.commit();	 

2.保存

		SharedPreferences.Editor sharedata = getSharedPreferences("Add", 0).edit();
					sharedata.putString(String.valueOf(0),_device.getName());
					sharedata.putString(String.valueOf(1),_device.getAddress());
					sharedata.commit();	 

3.读取

		// 读取设置数据
		SharedPreferences sharedata1 = getSharedPreferences("Add", 0);
		String stringName = sharedata1.getString(String.valueOf(0), null);
		String stringAdd = sharedata1.getString(String.valueOf(1), null);








  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄人软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值