Как загрузить файл с веб-сайта в [закрытом] C#

Как насчет этого:

import java.util.ArrayList;
import java.util.List;

public class KSmallestPairs {
    public static void main(String[] args) {
        System.out.println(kSmallestPairs(new int[]{1,7,11}, new int[]{2,4,6}, 3));
    }

    public static List<SumPair> kSmallestPairs(int[] leftInts, int[] rightInts, int k) {
        if (k < 1) {
            throw new IllegalArgumentException("k (=" + k + ") must higher than 0!");
        } else if (leftInts.length * rightInts.length < k) {
            throw new IllegalArgumentException("k (=" + k
                    + ") cannot be higher than the length of the cartesian product (="
                    + leftInts.length * rightInts.length + ")");
        }

        final List<SumPair> sumPairs = new ArrayList<>();
        int minLeftIndex = 0;
        int minRightIndex = 0;
        for (int leftIndex = 0, rightIndex = 0;
             leftIndex < leftInts.length
                     && rightIndex < rightInts.length
                     && sumPairs.size() < k; ) {            
            final int leftInt = leftInts[leftIndex];
            final int rightInt = rightInts[rightIndex];
            sumPairs.add(new SumPair(leftInt, rightInt));

            if(leftIndex + 1 < leftInts.length && rightIndex + 1 < rightInts.length) {
                final int nextLeftInt = leftInts[leftIndex + 1];
                final int nextRightInt = rightInts[rightIndex + 1];
                final int sumOfLeftIntAndNextRightInt = leftInt + nextRightInt;
                final int sumOfNextLeftIntAndRightInt = nextLeftInt + rightInt;
                if(sumOfLeftIntAndNextRightInt < sumOfNextLeftIntAndRightInt) {
                    rightIndex++;
                } else {
                    leftIndex++;
                }
            } else if(leftIndex + 1 < leftInts.length) {
                leftIndex++;
                rightIndex = minRightIndex;
                minLeftIndex++;
            } else if(rightIndex + 1 < rightInts.length) {
                leftIndex = minLeftIndex;
                rightIndex++;
                minRightIndex++;
            }
        }
        return sumPairs;
    }

    static class SumPair {
        private final int leftInt;
        private final int rightInt;

        public SumPair(int leftInt, int rightInt) {
            this.leftInt = leftInt;
            this.rightInt = rightInt;
        }

        public int getLeftInt() {
            return leftInt;
        }

        public int getRightInt() {
            return rightInt;
        }

        public int getSum() {
            return leftInt + rightInt;
        }

        @Override
        public String toString() {
            return leftInt + "+" + rightInt + "="+ getSum();
        }
    }
}

Вывод:

[1+2=3, 1+4=5, 1+6=7, 7+2=9]

Он с готовностью находит k наименьшей пары сумм.

62
задан H.B. 30 August 2012 в 22:34
поделиться

3 ответа

С класс WebClient:

using System.Net;
//...
WebClient Client = new WebClient ();
Client.DownloadFile("http://i.stackoverflow.com/Content/Img/stackoverflow-logo-250.png", @"C:\folder\stackoverflowlogo.png");
112
ответ дан CMS 24 November 2019 в 16:31
поделиться

Несомненно, Вы просто используете HttpWebRequest .

, После того как Вы имеете эти HttpWebRequest настроенный, можно сохранить ответный поток в файл StreamWriter (Или BinaryWriter, или TextWriter в зависимости от mimetype.) и у Вас есть файл на Вашем жестком диске.

РЕДАКТИРОВАНИЕ: Забыл приблизительно WebClient. Это работает хорошее, если, пока Вы только не должны использовать GET для получения файла. Если сайт требует Вас к POST информация к нему, необходимо будет использовать HttpWebRequest, таким образом, я оставляю на виду свой ответ.

13
ответ дан Irshad 24 November 2019 в 16:31
поделиться

Используйте WebClient.DownloadFile :

using (WebClient client = new WebClient())
{
    client.DownloadFile("http://csharpindepth.com/Reviews.aspx", 
                        @"c:\Users\Jon\Test\foo.txt");
}
80
ответ дан Jon Skeet 24 November 2019 в 16:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: