android - 如何使用输入流读取器从android内部存储器加载文件

标签 android inputstream

我的应用程序要求将文本保存(用户选择)到内部存储器中,然后我想要一些类似于最喜欢的功能,用户点击一个按钮,最喜欢的 Activity 开始加载保存在内存中的文件(内部)。在我的程序中有多个文本,我使用随机生成器将文件保存为“fav1”“fav2”等。其中整数部分是随机生成的。问题是现在我不知道如何提供我的文件名,以便检索文件并将其显示在 TextView 中。

public void load(String name){


    try {

BufferedReader inputReader = new BufferedReader(new InputStreamReader(openFileInput(filename)));

        String inputString;

        StringBuffer stringBuffer = new StringBuffer();                

        while ((inputString = inputReader.readLine()) != null) {

            stringBuffer.append(inputString + "\n");

        }

        show.setText(stringBuffer.toString());

        } catch (IOException e) {

        e.printStackTrace();

        }

所以你建议我如何检索文件,任何人的帮助都会让我感到沮丧。

最佳答案

您可以通过以下代码轻松完成; 正如您所说,它从内部存储的文件中读取。

private String readFromFile(String fname) {

    String ret = "";

    try {
        InputStream inputStream = openFileInput(fname+".txt");

        if ( inputStream != null ) {
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
            String receiveString = "";
            StringBuilder stringBuilder = new StringBuilder();

            while ( (receiveString = bufferedReader.readLine()) != null ) {
                stringBuilder.append(receiveString);
            }

            show.setText(stringBuilder.toString());                

            inputStream.close();

        }
    }

编辑 从路径中读取包含路径分隔符

File myFile = new File(fname+".txt"); // path contains full path to the file including file name
            FileInputStream fIn = new FileInputStream(myFile);
            BufferedReader myReader = new BufferedReader(
                    new InputStreamReader(fIn));
            String receiveString = "";
            StringBuilder stringBuilder = new StringBuilder();

            while ((receiveString = myReader.readLine()) != null) {
                stringBuilder.append(receiveString);
            }
            show.setText(stringBuilder.toString());    
            myReader.close();

编辑 2

列出特定目录中的文件并按名称选择所需的文件。

File directory = new File(Environment.getExternalStorageDirectory()+"/sample");

 // check the existance of the parent directory
 if (directory.exists()) { 

 // get the list of files from the directory and keep it in an array of type File.
                    File[] fileList = directory.listFiles(); 

                for (File file : fileList) {

  //compares with filename: you can change this to your required file!
                        if (file.getName().equals("sam2.txt")) { 

  // method to read and show the text in text view
                            loadFile(file); 



                        }

                    }

最后是loadFile()方法的定义:

private void loadFile(File file) {
                // TODO Auto-generated method stub
                   FileInputStream fIn;
                    try {
                        fIn = new FileInputStream(file);
                        BufferedReader myReader = new BufferedReader(
                                new InputStreamReader(fIn));
                        String receiveString = "";
                        StringBuilder stringBuilder = new StringBuilder();

                        while ((receiveString = myReader.readLine()) != null) {
                            stringBuilder.append(receiveString);
                        }
                        show.setText(stringBuilder.toString());    
                        myReader.close();
                    } catch (FileNotFoundException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                }

关于android - 如何使用输入流读取器从android内部存储器加载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27578022/

相关文章:

java - HttpURLConnection返回的InputStream中的数据在读取之前存储在哪里?

java - 使用套接字来处理分块数据

java - 如何在android中为字符串应用字幕

java - 在HttpURLConnection中getErrorStream返回的InputStream中获取服务器发送来的有用数据

android - kotlin lambda 表达式作为可选参数

java - Android - 动态微调器

performance - Erlang:以有效的方式从输入流中读取

java - 当 jar 文件从 URL 作为 InputStream 打开时,JarEntry.getSize() 返回 -1

Android:选项卡布局的优缺点

Android - RadioGroup 的第一个按钮在 clearCheck() 和旋转后变得不可选择