title: Android downloading a file getting a FileNotFoundException
body: <pre><code>    else if (v.getId() == R.id.update) {
  
          StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
  
          StrictMode.setThreadPolicy(policy);
  
          try {
              URL url = new URL("http://darkliteempire.gaming.multiplay.co.uk/testdownload.txt");
  
              //create the new connection
  
              HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
  
              //set up some things on the connection
  
              urlConnection.setRequestMethod("GET");
  
              urlConnection.setDoOutput(true);
  
              //and connect!
  
              urlConnection.connect();
  
              //set the path where we want to save the file
  
              //in this case, going to save it on the root directory of the
  
              //sd card.
  
              File SDCardRoot = new File("/sdcard/"+"download/");
  
              //create a new file, specifying the path, and the filename
  
              //which we want to save the file as.
  
              File file = new File(SDCardRoot,"test.txt");
  
              //this will be used to write the downloaded data into the file we created
  
              FileOutputStream fileOutput = new FileOutputStream(file);
  
              //this will be used in reading the data from the internet
  
              InputStream inputStream = urlConnection.getInputStream();
  
              //this is the total size of the file
  
              int totalSize = urlConnection.getContentLength();
  
              //variable to store total downloaded bytes
  
              int downloadedSize = 0;
  
              //create a buffer...
  
              byte[] buffer = new byte[1024];
  
              int bufferLength = 0; //used to store a temporary size of the buffer
  
              //now, read through the input buffer and write the contents to the file
  
              while ( (bufferLength = inputStream.read(buffer)) &gt; 0 ) 
  
              {
  
              //add the data in the buffer to the file in the file output stream (the file on the sd card
  
              fileOutput.write(buffer, 0, bufferLength);
  
              //add up the size so we know how much is downloaded
  
              downloadedSize += bufferLength;
  
              int progress=(int)(downloadedSize*100/totalSize);
  
              //this is where you would do something to report the prgress, like this maybe
  
              //updateProgress(downloadedSize, totalSize);
  
              }
  
              //close the output stream when done
  
              fileOutput.close();
          } catch (MalformedURLException e1) {
              // TODO Auto-generated catch block
              e1.printStackTrace();
          } catch (ProtocolException e1) {
              // TODO Auto-generated catch block
              e1.printStackTrace();
          } catch (FileNotFoundException e1) {
              // TODO Auto-generated catch block
              e1.printStackTrace();
          } catch (IOException e1) {
              // TODO Auto-generated catch block
              e1.printStackTrace();
          }
  </code></pre>
  
  <p>this code keeps coming out with the FileNotFoundException, but the file is there, if you follow the url you can see it.</p>
  
  <p>does it have to be hosted in a specific way? or is it something wrong with the way im getting it</p>
  
  <p>EDIT: this is the logcat message</p>
  
  <pre><code>12-14 22:29:19.890: W/System.err(24557): java.io.FileNotFoundException:     http://darkliteempire.gaming.multiplay.co.uk/testdownload.txt
  12-14 22:29:19.890: W/System.err(24557):    at libcore.net.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:177)
  12-14 22:29:19.890: W/System.err(24557):    at com.MasterZangetsu.kentrocksoc.MainActivity.onClick(MainActivity.java:99)
  12-14 22:29:19.890: W/System.err(24557):    at android.view.View.performClick(View.java:3591)
  12-14 22:29:19.890: W/System.err(24557):    at android.view.View$PerformClick.run(View.java:14263)
  12-14 22:29:19.895: W/System.err(24557):    at android.os.Handler.handleCallback(Handler.java:605)
  12-14 22:29:19.895: W/System.err(24557):    at android.os.Handler.dispatchMessage(Handler.java:92)
  12-14 22:29:19.895: W/System.err(24557):    at android.os.Looper.loop(Looper.java:137)
  12-14 22:29:19.895: W/System.err(24557):    at android.app.ActivityThread.main(ActivityThread.java:4507)
  12-14 22:29:19.895: W/System.err(24557):    at java.lang.reflect.Method.invokeNative(Native Method)
  12-14 22:29:19.895: W/System.err(24557):    at java.lang.reflect.Method.invoke(Method.java:511)
  12-14 22:29:19.895: W/System.err(24557):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
  12-14 22:29:19.895: W/System.err(24557):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
  12-14 22:29:19.895: W/System.err(24557):    at dalvik.system.NativeStart.main(Native Method)
  12-14 22:29:20.170: W/WifiStateTracker(2010): getNetworkInfo : NetworkInfo: type: WIFI[], state: DISCONNECTED/DISCONNECTED, reason: (unspecified), extra: (none), roaming: false, failover: false, isAvailable: false
  </code></pre>