如何从内部存储 – Android应用程序中读取文件内容

我是一个与Android的新手。 已经在位置data/data/myapp/files/hello.txt创build了一个文件; 这个文件的内容是“你好”。 我如何阅读文件的内容?

Solutions Collecting From Web of "如何从内部存储 – Android应用程序中读取文件内容"

看看这个如何在android中使用存储http://developer.android.com/guide/topics/data/data-storage.html#filesInternal

要从内部存储读取数据,您需要使用应用程序文件夹并从这里读取内容

 String yourFilePath = context.getFilesDir() + "/" + "hello.txt"; File yourFile = new File( yourFilePath ); 

你也可以使用这种方法

  FileInputStream fis = context.openFileInput("hello.txt", Context.MODE_PRIVATE); InputStreamReader isr = new InputStreamReader(fis); BufferedReader bufferedReader = new BufferedReader(isr); StringBuilder sb = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { sb.append(line); } 

以string完整版本读取文件(处理exception,使用UTF-8,处理新行):

 // Calling: /* Context context = getApplicationContext(); String filename = "log.txt"; String str = read_file(context, filename); */ public String read_file(Context context, String filename) { try { FileInputStream fis = context.openFileInput(filename); InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); BufferedReader bufferedReader = new BufferedReader(isr); StringBuilder sb = new StringBuilder(); String line; while ((line = bufferedReader.readLine()) != null) { sb.append(line).append("\n"); } return sb.toString(); } catch (FileNotFoundException e) { return ""; } catch (UnsupportedEncodingException e) { return ""; } catch (IOException e) { return ""; } } 

注意:你不需要打扰只有文件名的文件path。

在文件path中调用以下参数作为参数:

 private String getFileContent(String targetFilePath){ File file = new File(targetFilePath); try { fileInputStream = new FileInputStream(file); } } catch (FileNotFoundException e) { // TODO Auto-generated catch block Log.e("",""+e.printStackTrace()); } StringBuilder sb; while(fileInputStream.available() > 0) { if(null== sb) sb = new StringBuilder(); sb.append((char)fileInputStream.read()); } String fileContent; if(null!=sb){ fileContent= sb.toString(); // This is your fileContent in String. } try { fileInputStream.close(); } catch(Exception e){ // TODO Auto-generated catch block Log.e("",""+e.printStackTrace()); } return fileContent; } 

从内部存储器读取文件:

调用openFileInput()并将其传递给要读取的文件的名称。 这将返回一个FileInputStream。 用read()从文件中读取字节。 然后用close()closuresstream。

码::

 StringBuilder sb = new StringBuilder(); try{ BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); String line = null; while ((line = reader.readLine()) != null) { sb.append(line).append("\n"); } is.close(); } catch(OutOfMemoryError om){ om.printStackTrace(); } catch(Exception ex){ ex.printStackTrace(); } String result = sb.toString(); 
  String path = Environment.getExternalStorageDirectory().toString(); Log.d("Files", "Path: " + path); File f = new File(path); File file[] = f.listFiles(); Log.d("Files", "Size: " + file.length); for (int i = 0; i < file.length; i++) { //here populate your listview Log.d("Files", "FileName:" + file[i].getName()); } 

对于其他寻找答案,为什么一个文件是不可读的,尤其是在SD卡上,请先写这个文件。注意MODE_WORLD_READABLE

 try { FileOutputStream fos = Main.this.openFileOutput("exported_data.csv", MODE_WORLD_READABLE); fos.write(csv.getBytes()); fos.close(); File file = Main.this.getFileStreamPath("exported_data.csv"); return file.getAbsolutePath(); } catch (Exception e) { e.printStackTrace(); return null; }