2012-04-25 18 views
0

インターネットURLからcsvファイルをダウンロードします。 私はオンラインで見つけられ、ダウンロードできないすべてのコードを試しました。インターネットURLからファイルをダウンロードできません

  URL google = new URL("myurl"); 
      ReadableByteChannel rbc = Channels.newChannel(google.openStream()); 
      FileOutputStream fos = new FileOutputStream("C://excelsheet.csv"); 
      fos.getChannel().transferFrom(rbc, 0, 1 << 24); 

このコードは、私はこの機能を使用

が動作していない、それはあまりにも機能していません。

public stacvoid saveUrl(String filename, String urlString) throws MalformedURLException, IOException 
    { 
     BufferedInputStream in = null; 
     FileOutputStream fout = null; 
     try 
     { 
       in = new BufferedInputStream(new URL(urlString).openStream()); 
       fout = new FileOutputStream(filename); 

       byte data[] = new byte[1024]; 
       int count; 
       while ((count = in.read(data, 0, 1024)) != -1) 
       { 
         fout.write(data, 0, count); 
       } 
     } 
     finally 
     { 
       if (in != null) 
         in.close(); 
       if (fout != null) 
         fout.close(); 
     } 
    } 

私のURLに簡単な入力ストリームを試しましたが、これもうまくいきません。

  URL oracle = new URL("myurl"); 
      URLConnection yc = oracle.openConnection(); 

     BufferedReader br = new BufferedReader(new InputStreamReader(
              yc.getInputStream())); 

ここでmyurlの代わりに他のURLを入力すると、bufferedreaderはデータを取得します。 ブラウザにmyurlと入力すると、csvファイルを保存またはダウンロードするためのポップアップが表示されます。 "myurl"で問題が発生していない

"myurl"で実行されているサーブレット/コードが、実際にリクエストがブラウザから送信されているかどうかを確認してからデータを送信する可能性はありますか?

ありがとうございました。使用されたhttpclientと私のために働く。 csvファイルをダウンロードし、ローカルに保存してからそれを読み取り、すべてのトークンを解析するコードを入手します。

 HttpClient httpclient = new DefaultHttpClient(); 
     HttpGet httpget = new HttpGet("your url to download"); 
     HttpResponse response = httpclient.execute(httpget); 

      System.out.println(response.getProtocolVersion()); 
      System.out.println(response.getStatusLine().getStatusCode()); 
      System.out.println(response.getStatusLine().getReasonPhrase()); 
      System.out.println(response.getStatusLine().toString()); 
      HttpEntity entity = response.getEntity(); 
      if (entity != null) { 
       FileOutputStream fos = new java.io.FileOutputStream("C://excelsheet.csv"); 
       entity.writeTo(fos); 
       fos.close(); 
      } 

      //create BufferedReader to read csv file 
     BufferedReader br = new BufferedReader(new FileReader("C://excelsheet.csv")); 
     String strLine = ""; 
     StringTokenizer st = null; 
     int lineNumber = 0, tokenNumber = 0; 
     while((strLine = br.readLine()) != null) 
           { 
             lineNumber++; 

             //break comma separated line using "," 
             st = new StringTokenizer(strLine, ","); 

             while(st.hasMoreTokens()) 
             { 
               //display csv values 
               tokenNumber++; 
               System.out.println("Line # " + lineNumber + 
                   ", Token # " + tokenNumber 
                   + ", Token : "+ st.nextToken()); 
             } 

             //reset token number 
             tokenNumber = 0; 

           } 
     } 
     catch (Exception e) { 
      System.out.println("insdie the catch part"); 
      System.out.println(e.toString()); 
     } 
+0

ウェブサイトにログインしていない場合は、ブラウザを使用してファイルにアクセスできますか? –

+0

'Channels'で動作しないものは、例外がありますか? Cドライブのルートへの書き込みアクセス権がない可能性があります。 – tenorsax

+0

メタアドバイス:あなたの質問に「働いていない」と出てくるすべてのものを、1.それが何をしているのか、そして2.何を期待しているのかで説明してください。 –

答えて

0

HttpClient libを試しましたか? サイトから自動的に一連の試験をダウンロードするために、いつか使ったことがあります。

+0

はいブラウザを使用していますが、ログインすることなくファイルにアクセスできますが、時間がかかります。 – Rpant

+0

はい、うまくいきます。試験をダウンロードする私のアプリは:[PCI Downloader](http://www.davidfeitosa.com/p/downloads.html)です。不幸なことに、私はソースコードを失ったが、それでも動作する。 –

+0

私はApacheのコモンズFileUtils.copyURLToFile(oracle、f)を試しました。これはあまりにも – Rpant

関連する問題