如何用Java下载NSE Bhavcopy(NSE市场收盘价)? [英] How to download NSE Bhavcopy (NSE market closing price) in Java?

查看:69
本文介绍了如何用Java下载NSE Bhavcopy(NSE市场收盘价)?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要通过以下Java链接下载文件

I need to download a file from the following link in Java

[ http://www.nseindia.com/content/historical/EQUITIES/2017/OCT/cm30OCT2017bhav.csv.zip][1]

我有用C#编写的代码,可以有人建议使用Java等效代码

I have the code written in C#, can some one suggest Java equivalent code

WebClient webClient = new WebClient();
String accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
String agent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.83 Safari/537.1";
webClient.Headers.Add(HttpRequestHeader.Accept, accept);
webClient.Headers.Add(HttpRequestHeader.UserAgent, agent);
webClient.UseDefaultCredentials = true;
webClient.DownloadFile(source, target);

推荐答案

我自己找到了解决方法

source =" http://www.bseindia.com/download/Bhavcopy/Derivative/bhavcopy07-11-17.zip ";target ="d:\ Market Feeds \ EQD BSE Bhavcopy \"

source = "http://www.bseindia.com/download/Bhavcopy/Derivative/bhavcopy07-11-17.zip"; target = "d:\Market Feeds\EQD BSE Bhavcopy\"

public static void downloadFileHttp(String source, String destination) throws Exception { 

    try{
    Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(ipaddress, port));

    URL oracle = new URL(source);
    URLConnection yc = oracle.openConnection(proxy);

    InputStream in = yc.getInputStream();
    FileOutputStream out = new FileOutputStream(destination + "\\bhavcopy.zip");
    copySource2Dest(in, out, 1024);
    out.close();

    extractFolder(destination + "\\bhavcopy.zip", destination);

    //Path path = FileSystems.getDefault().getPath(destination, "bhavcopy.zip");
    //boolean succ = Files.deleteIfExists(path);

    System.out.println("Download is successfull");
    }
    catch(Exception e){
        System.out.println("Error in downloading : " + e);
    }
}

 public static void copySource2Dest(InputStream input, OutputStream output, int bufferSize)
         throws IOException {
             byte[] buf = new byte[bufferSize];
             int n = input.read(buf);
             while (n >= 0) {
                 output.write(buf, 0, n);
                 n = input.read(buf);
             }
             output.flush();
         }

public static void extractFolder(String zipFile,String extractFolder) 
{
    try
    {
        int BUFFER = 2048;
        File file = new File(zipFile);

        ZipFile zip = new ZipFile(file);
        String newPath = extractFolder;

        new File(newPath).mkdir();
        Enumeration zipFileEntries = zip.entries();

        ZipEntry entry;

        // Process each entry
        while (zipFileEntries.hasMoreElements())
        {
            // grab a zip file entry
            entry = (ZipEntry) zipFileEntries.nextElement();
            String currentEntry = entry.getName();

            File destFile = new File(newPath, currentEntry);
            File destinationParent = destFile.getParentFile();

            // create the parent directory structure if needed
            destinationParent.mkdirs();

            if (!entry.isDirectory())
            {
                BufferedInputStream is = new BufferedInputStream(zip
                .getInputStream(entry));
                int currentByte;
                // establish buffer for writing file
                byte data[] = new byte[BUFFER];

                // write the current file to disk
                FileOutputStream fos = new FileOutputStream(destFile);
                BufferedOutputStream dest = new BufferedOutputStream(fos,
                BUFFER);

                // read and write until last byte is encountered
                while ((currentByte = is.read(data, 0, BUFFER)) != -1) {
                    dest.write(data, 0, currentByte);
                }
                dest.flush();
                dest.close();
                is.close();
            }
        }
        zip.close();
    }
    catch (Exception e){
            System.out.println("ERROR: "+e.getMessage());
    }
}

这篇关于如何用Java下载NSE Bhavcopy(NSE市场收盘价)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆