• 9

A PHP Error was encountered

Severity: Notice

Message: Undefined index: userid

Filename: views/question.php

Line Number: 191


File: /home/prodcxja/public_html/questions/application/views/question.php
Line: 191
Function: _error_handler

File: /home/prodcxja/public_html/questions/application/controllers/Questions.php
Line: 433
Function: view

File: /home/prodcxja/public_html/questions/index.php
Line: 315
Function: require_once

name Punditsdkoslkdosdkoskdo

Load a file from external storage to Inputstream

i have a video file in my external directory. how can i load it to inputstream variable. For the time being i am reading file in the res/raw folder but i want to read it from the sdcard. also i dont know about the name of the file but its path will be recieved through intent. check the following code

public class SonicTest extends Activity
VideoView videoView;
String uri;
InputStream soundFile;
File file;
public void onCreate(Bundle savedInstanceState) 


public void play(View view)
    new Thread(new Runnable() 
        public void run()
            float speed= (float) 1.0;
            float pitch= (float) 1.5;
            float rate= (float) 1.0;
            uri= Environment.getExternalStorageDirectory().toString();
            AndroidAudioDevice device = new AndroidAudioDevice(22050, 1);
            Sonic sonic = new Sonic(22050, 1);
            byte samples[] = new byte[4096];
            byte modifiedSamples[] = new byte[2048];
            InputStream soundFile = null;

    //soundFile = getContentResolver().openInputStream(Uri.parse(uri));
    Log.i("testing","check if SoundFile is correct "+soundFile);

            int bytesRead;

            if(soundFile != null) {
                do {
                    try {
                        bytesRead = soundFile.read(samples, 0, samples.length);
                    } catch (IOException e) {
                    if(bytesRead > 0) {
                        sonic.putBytes(samples, bytesRead);
                    } else {
                    int available = sonic.availableBytes(); 
                    if(available > 0) {
                        if(modifiedSamples.length < available) {
                            modifiedSamples = new byte[available*2];
                        sonic.receiveBytes(modifiedSamples, available);
                        device.writeSamples(modifiedSamples, available);
                } while(bytesRead > 0);
    } ).start();
      • 2
    • All three answers fail to understand what a URI is and that they aren't always a file path. If you had the file path you'd have figured it out yourself, but the posted answers just don't answer the actual question.


File file = new File(Uri.toString());
FileInputStream fileInputStream = new FileInputStream(file);

Then you can read from the stream.

  • 81
Reply Report
    • Well the question is entitled "Load a file from external storage". I think assuming the incoming uri is a file is safe in that case.
      • 1
    • well thanks its working. but i cant here anything there is too much noise. Any idea why is it like this?
String fileName = "OfflineMap/maps.xml";
String path = Environment.getExternalStorageDirectory()+"/"+fileName;
File file = new File(path);
FileInputStream fileInputStream = new FileInputStream(file);
  • 10
Reply Report

Here is a working code, you can InputStream with a storage file:

       File sdcard = Environment.getExternalStorageDirectory();
       File file = new File(sdcard,"Demo.xml");
       InputStream fileInputStream = new FileInputStream(file);
  • 0
Reply Report