0

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

           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」で実行されているservlet/コードが、リクエストがブラウザからのものであるかどうかを実際にチェックしてから、データを送信する可能性はありますか。

みんな、ありがとう 。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());
       }
4

1 に答える 1

0

HttpClient libを試しましたか?以前、サイトから一連の試験を自動的にダウンロードするために使用しました。

于 2012-04-25T19:52:48.157 に答える