第十篇-如何实现写入数据到相应文件,以及读取相应文件的数据

Posted smart-zihan

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十篇-如何实现写入数据到相应文件,以及读取相应文件的数据相关的知识,希望对你有一定的参考价值。

三个文件:

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:ignore="MissingDefaultResource">

    <!--<TextView-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content"-->
        <!--android:text="Hello World!"-->
        <!--app:layout_constraintBottom_toBottomOf="parent"-->
        <!--app:layout_constraintLeft_toLeftOf="parent"-->
        <!--app:layout_constraintRight_toRightOf="parent"-->
        <!--app:layout_constraintTop_toTopOf="parent" />-->

    <EditText
        android:id="@+id/editText2"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="8dp"
        android:layout_marginTop="8dp"
        android:text="CreateFile"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
    />

</android.support.constraint.ConstraintLayout>

  AndroidMainfest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="com.example.aimee.editor">
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <!--<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

  MainActivity.java

package com.example.aimee.editor;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Build;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;

//public class MainActivity extends AppCompatActivity{
//    TextView textView;//声明为全局变量
////    @Override
//    public void onCreate(Bundle savedInstanceState){
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main1);
//        final Button button1=(Button)findViewById(R.id.myButton1);
//        final Button button2=(Button)findViewById(R.id.myButton2);
//        final Button button3=(Button)findViewById(R.id.myButton3);
//        /*因为上面定义的Button对象被另外一个程序(setOnCLickListener)引用,需将该对象声明为常量,否则编译失败.*/
//        textView=(TextView)findViewById(R.id.myTextView);
//        Context context=this.getBaseContext();
//        final Drawable red_Drawable=ContextCompat.getDrawable(context,R.drawable.RED);
//        final Drawable blue_Drawable=ContextCompat.getDrawable(context,R.drawable.BULE);
//        final Drawable yellow_Drawable=ContextCompat.getDrawable(context,R.drawable.YELLOW);
//
//        button1.setOnClickListener(new View.OnClickListener(){
//            public void onClick(View v){
//                String str="You have clicked"+button1.getText().toString();
//                textView.setText(str);
//                if(textView.getBackground()!=red_Drawable)
//                    textView.setBackground(red_Drawable);
//            }
//        });
//
//        button2.setOnClickListener(new View.OnClickListener(){
//            public void onClick(View v){
//                String str="You have clicked"+button2.getText().toString();
//                textView.setText(str);
//                if(textView.getBackground()!=blue_Drawable)
//                    textView.setBackground(blue_Drawable);
//            }
//        });
//
//        button3.setOnClickListener(new View.OnClickListener(){
//            public void onClick(View v){
//                String str="You have clicked"+button3.getText().toString();
//                textView.setText(str);
//                if(textView.getBackground()!=yellow_Drawable)
//                    textView.setBackground(yellow_Drawable);
//            }
//        });
//    }
//
//    public boolean onKeyDown(int keyCode, KeyEvent event){
//        CharSequence charseq="You have pressed";
//        charseq=charseq+"a key!";
//        textView.setText(charseq);
//        return super.onKeyDown(keyCode,event);
//    }
//
//    public boolean onKeyUp(int keyCode,KeyEvent event){
//        CharSequence charseq="Change your color here!";
//        textView.setText(charseq);
//        textView.setBackgroundColor(Color.WHITE);
//        return super.onKeyDown(keyCode,event);
//    }
//}





//
//public class MainActivity extends AppCompatActivity {
//    private EditText file_name;//定义输入文件名的文本框
//    private EditText file_content;//定义输入文件内容的文本框
//    private Button read_button;//定义读取文件的按钮
//    private Button save_button;//定义保存文件的按钮
//    public static int LONGTIME=Toast.LENGTH_LONG;//定义Toast消息显示的时间
//
////    @Override
//    public void onCreate(Bundle savedInstanceState) {
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main1);//使用activity_main初始化程序界面
//        read_button=(Button)findViewById(R.id.read_file);
//        save_button=(Button)findViewById(R.id.save_file);
//        file_name=(EditText)findViewById(R.id.file_name);
//        file_content=(EditText)findViewById(R.id.file_content);
//        /*获取xml定义的控件对象read_button、save_button、file_name和file_content*/
//
//        save_button.setOnClickListener(new View.OnClickListener() {
////            @Override
//            public void onClick(View view) {
//                String str_file_name=file_name.getText().toString();//获取保存的文件名
//                if(str_file_name=="") {
//                    Toast.makeText(getApplicationContext(), "文件名为空", LONGTIME).show();
//                } else{
//                    String str_file_content=file_content.getText().toString();//获取file_content的内容
//                    try{
//                        save(str_file_name,str_file_content);//保存内容str_file_content到文件str_file_name
//                        Toast.makeText(getApplicationContext(), "保存成功", LONGTIME).show();
//                    }
//                    catch (Exception e){
//                        Toast.makeText(getApplicationContext(),"保存失败",LONGTIME).show();
//                    }
//                    /*若保存成功,则显示保存成功的Toast消息,否则程序抛出异常,显示保存失败的Toast消息*/
//                }
//            }
//        });
//        /*注册save_button单击事件监听器。当单击该按钮时,保存当前编辑的文件*/
//
//        read_button.setOnClickListener(new View.OnClickListener() {
////            @Override
//            public void onClick(View view) {
//                String str_file_name=file_name.getText().toString();//获取读取的文件名
//                if(str_file_name=="")//判断是否指定文件名
//                    Toast.makeText(getApplicationContext(), "文件名为空", LONGTIME).show();
//                else{
//                    try{
//                        String str_fiel_content=read(str_file_name);//读取文件str_file_name内容
//                        file_content.setText(str_fiel_content);
//                    }
//                    catch (Exception e){
//                        Toast.makeText(getApplicationContext(),"failed",LONGTIME).show();
//                    }
//                    /*若保存成功,则显示保存成功的Toast消息,否则程序抛出异常,显示保存失败的Toast消息*/
//                }
//            }
//        });
//    }
//    /*注册read_button单击事件监听器。当单击该按钮时,根据文件名读取内容*/
//
//    public void save(String file,String fileContent) throws Exception{
//        //Context类提供了系统核心操作借口,它是Activity的父类
//        FileOutputStream fileOutputStream=openFileOutput(file, Context.MODE_PRIVATE);
//        //以MODE_PRIVATE模式获取指定文件的文件输出流
//        fileOutputStream.write(fileContent.getBytes());//将fileContent写入文件
//    }
//    /*方法save负责将指定的内容(fileContent)写入到文件*/
//
//    public String read(String file) throws Exception{
//        byte[] buf=new byte[1024];
//        int size=0;
//        FileInputStream fileInputStream=openFileInput(file);//获取指定文件的文件输入流
//        ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
//        //生成字节数据输入流对象,该对象实现按字节读取内容
//        while((size=fileInputStream.read(buf))>0){
//            byteArrayOutputStream.write(buf,0,size);
//        }
//        /*若fileInputStream有数据,则将其写入ByteArrayOutputStream对象byteArrayOutputStream中*/
//        return byteArrayOutputStream.toString();
//    }
//    /*方法read负责读取指定的文件*/
//}


public class MainActivity extends AppCompatActivity{
    private EditText editText2;
    private Button button1;
    private final int REQUESTCODE=101;
    String filePath=Environment.getExternalStorageDirectory().getAbsolutePath()+"/"+"save";
    String fileName="/"+"save.txt";

//    @Override
//    protected void onCreate(Bundle savedInstanceState){
//        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main1);
//        initView();
//    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editText2=(EditText)findViewById(R.id.editText2);
        findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    switch (v.getId()){
                        case R.id.button:
                            Toast.makeText(MainActivity.this,editText2.getText().toString().trim(),Toast.LENGTH_LONG).show();
//                            writeTxtToFile(editText2.getText().toString().trim(),filePath,fileName);
                            readTxtToFile(filePath,fileName);
                            break;
                        default:
                            break;
                    }
//                    create(fileName,filePath);
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        });
    }

    public void create(String fileName,String filePath) throws IOException {
        if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
            int checkSelfPermission=checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
            if(checkSelfPermission==PackageManager.PERMISSION_DENIED){
                requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},REQUESTCODE);
            }
        }
        File file=new File(filePath);
        if(!file.exists()){
            Toast.makeText(MainActivity.this,filePath,Toast.LENGTH_LONG).show();
            boolean isSuccess=file.mkdirs();
            Toast.makeText(MainActivity.this,"文件夹创建成功",Toast.LENGTH_LONG).show();

        }else{
            String file_name=filePath+fileName;
            File f=new File(file_name);
            if(!f.exists()){
                Toast.makeText(MainActivity.this,file_name,Toast.LENGTH_LONG).show();
                f.createNewFile();
                Toast.makeText(MainActivity.this,"文件创建成功",Toast.LENGTH_LONG).show();
            }
            else{
                Toast.makeText(MainActivity.this,"文件已存在",Toast.LENGTH_LONG).show();
            }
        }
    }

    public void writeTxtToFile(String strcontent,String filePath,String fileName) throws IOException {
        Toast.makeText(MainActivity.this,fileName,Toast.LENGTH_LONG).show();
        String strFilePath=filePath+fileName;
        String strContent=strcontent+"
";
        File file=new File(strFilePath);
        RandomAccessFile raf=new RandomAccessFile(file,"rwd");
        raf.seek(file.length());
        raf.write(strContent.getBytes());
        raf.close();
    }

    public void readTxtToFile(String filePath,String fileName) throws IOException {
        String strFilePath=filePath+fileName;
        File file=new File(strFilePath);
        RandomAccessFile raf=new RandomAccessFile(file,"rwd");
        int j=0;
        while(raf.readLine()!=null){
            j=j+1;
        }
        raf.seek(0);
        for (int i=0;i<j;i++){
            Toast.makeText(MainActivity.this, new String(raf.readLine().getBytes("ISO-8859-1"),"utf8"), Toast.LENGTH_LONG).show();
        }
//        Toast.makeText(MainActivity.this,raf.readLine(),Toast.LENGTH_LONG).show();
        raf.close();
    }

//    public File makeFilePath(String filePath,String fileName){
//        File file=null;
//        makeRootDirectory(filePath);
//        try{
//            file=new File(filePath+fileName);
//            if(!file.exists()){
//                file.createNewFile();
//            }
//        } catch (IOException e) {
//            e.printStackTrace();
//        }
//        return file;
//    }
//
//    public static void makeRootDirectory(String filePath){
//        File file=null;
//        try{
//            file=new File(filePath);
//            if(!file.exists()){
//                file.mkdir();
//            }
//        }
//        catch (Exception e){
//            e.printStackTrace();
//        }
//    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults){
        super.onRequestPermissionsResult(requestCode,permissions,grantResults);
        if(requestCode==REQUESTCODE){
            if (permissions[0].equals(Manifest.permission.WRITE_EXTERNAL_STORAGE) && grantResults[0]== PackageManager.PERMISSION_GRANTED){
                Toast.makeText(MainActivity.this,"111",Toast.LENGTH_LONG).show();

            }else {
                Toast.makeText(MainActivity.this,"222",Toast.LENGTH_LONG).show();
            }
        }
    }

}

  

  如果创建文件夹和文件,就打开Create(fileName,filePath)。

如果存入数据,就打开

writeTxtToFile(editText2.getText().toString().trim(),filePath,fileName);

如果读取数据,就打开

readTxtToFile(filePath,fileName);

 

以上是关于第十篇-如何实现写入数据到相应文件,以及读取相应文件的数据的主要内容,如果未能解决你的问题,请参考以下文章

shell基础二十篇

第十篇:顺序容器vector,deque,list的选用规则

c语言中从文件中按行读取字符串,并进行相应操作。

如何在同一循环中“从 .csv 读取并写入 excel”

Flask 第十篇自定义Form组件

消息如何从 ActiveMQ 读取并传递到相应的队列?