美文网首页
android 数据持久化之一 文件操作

android 数据持久化之一 文件操作

作者: 5e30a667061c | 来源:发表于2018-06-01 16:04 被阅读0次

    1,操作字符串存储到文件中

    Context 类提供了一个openFileoutput() 方法,可以用于数据存储到指定的文件中,这个方法接收两个参数,第一个是文件名,第二个是文件的操作模式,主要有两种模式可选,MODE_PRIVATE 和MODE_APPEND ,其中MDOE_PRIVATE是默认的操作模式,表示指定同样的文件名时,所有的内容都会覆盖原来的内容,而APPEND则表示如果该文件已存在,就往文件里追加内容,不存在就创建新文件。下面举例:

     /**
         * 字符串存到文件中
         */
        private void saveFile()
        {
            String fileData = "fileData to save here";
            FileOutputStream fileOutputStream = null;
            BufferedWriter bufferedWriter = null  ;
            try
            {
                fileOutputStream = openFileOutput("fileData",MODE_PRIVATE);
                bufferedWriter = new BufferedWriter(new OutputStreamWriter(fileOutputStream));
                bufferedWriter.write(fileData);
    
            }catch (IOException e)
            {
               e.printStackTrace();
            }finally {
                try
                {
                    if(bufferedWriter != null)
                    {
                        bufferedWriter.close();
                    }
                }catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
    
    

    从文件中读取数据:

    /**
         * 从文件读取数据
         * @return
         */
        private String getFileData()
        {
            StringBuffer stringBuffer = new StringBuffer();
            FileInputStream fileInputStream;
            BufferedReader bufferedReader = null ;
            try
            {
                fileInputStream = openFileInput("fileData");
                bufferedReader = new BufferedReader(new InputStreamReader(fileInputStream));
                String line ;
                while((line = bufferedReader.readLine())!=null)
                {
                    stringBuffer.append(line);
                }
            }catch (IOException e)
            {
                e.printStackTrace();
            }finally {
                try
                {
                if(bufferedReader != null)
                {
                    bufferedReader.close();
                }
                }catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
    
    
            return stringBuffer.toString() ;
        }
    

    2,操作对象存储到文件中

    字符串保存到文件中的操作很少,更多的还是保存对象,
    这里先创建一个对象Person

    /**
     * 这个对象必须序列化
     */
    
    public class Person implements Serializable {
    
        String name;
        int age;
        public Person(int age ,String name)
        {
            this.age = age;
            this.name = name;
        }
    
        @Override
        public String toString() {
            return "name==="+this.name+"::::age===="+age;
        }
    }
    

    保存对象到文件:

    /**
         * 保存对象到文件
         * @param person
         */
        private void saveObj2File(Person person)
        {
            ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
            ObjectOutputStream objectOutputStream = null;
            FileOutputStream fileOutputStream = null;
            try {
                 objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
                objectOutputStream.writeObject(person);
                byte[] output = byteArrayOutputStream.toByteArray();
                 fileOutputStream = openFileOutput("objData",MODE_PRIVATE);
                 fileOutputStream.write(output);
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try
                {
                    if(objectOutputStream != null)
                    {
                        objectOutputStream.close();
                    }
                    if(fileOutputStream != null)
                    {
                        fileOutputStream.close();
                    }
                }catch (IOException e)
                {
                    e.printStackTrace();
                }
            }
        }
    
    

    从文件中取出对象:

     /**
         * 从文件中取出对象
         * @return
         */
        private Person getObj()
        {
            Person person = null ;
            FileInputStream fileInputStream = null;
            try
            {
               /* File file = new File(this.getFilesDir(), "objData");
                FileInputStream in = new FileInputStream(file);*/
                fileInputStream = openFileInput("objData");
                ObjectInputStream oin = new ObjectInputStream(fileInputStream);
                person = (Person)oin.readObject();
            }catch (Exception e)
            {
                e.printStackTrace();
            }finally {
              /*  try {
                    fileInputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }*/
            }
           return person ;
        }
    
    

    对于一些简单的数据,文件操作是可行的。

    相关文章

      网友评论

          本文标题:android 数据持久化之一 文件操作

          本文链接:https://www.haomeiwen.com/subject/jtdksftx.html