java读取url中的txt文件

我涉及到的项目中场景是这样的:要把脑电数据(txt文件)从阿里云oss中解析成json,为了不产生文件冗余,就不下载了。

我之前对输入流输出流什么的,用的不多,不太熟悉。所以这次写完记录一下。网上查了有下载的代码,有解析的代码,就是没有直接读取,不下载的代码。其实就是用connection连接,获得输入流,再用循环的方式读取。

public class Jxtxt {
    public static void main(String[] args) {
        //文件下载
        String photoUrl="你的txt的网络地址";
        String result= saveUrlAs(photoUrl, "GET");
        System.out.println(result);
    }


    public static String saveUrlAs(String url,String method){
        String result;
        StringBuffer resultBuffer=new StringBuffer();

   
        HttpURLConnection conn = null;
        InputStream inputStream = null;
        try
        {
            // 建立链接
            URL httpUrl=new URL(url);
            conn=(HttpURLConnection) httpUrl.openConnection();
            //以Post方式提交表单,默认get方式
            conn.setRequestMethod(method);
            conn.setDoInput(true);
            conn.setDoOutput(true);
            // post方式不能使用缓存
            conn.setUseCaches(false);
            //连接指定的资源
            conn.connect();
            //获取网络输入流
            inputStream=conn.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(inputStream);
            //设定每次读取的字节大小
            byte[] buf = new byte[4096];
            //计算按字节大小读取需要的行数
            int length = bis.read(buf);
            //while循环读取存入resultBuffer
            while(length != -1)
            {
                String str = new String(buf, 0, length);
                resultBuffer.append(str);
            }
            //依次关闭资源
            bis.close();
            inputStream.close();
            conn.disconnect();
        } catch (Exception e)
        {
            e.printStackTrace();
        }
        result=resultBuffer.toString();
        return result;

    }

}

可惜的是,这个东西没用上,因为脑电数据11k左右,太大了。不合适。

之前没了解,今天看源码才了解这里的byte干什么用的。。。。惭愧。

关于为什么用BufferInputStream,这里有一个标准的答案。

InputStream:每次从硬盘读入一个字到中转站, 再写入目的文件(硬盘)

BufferStream:一次读入n个字节到输入缓冲区,接着经中转站一个个写入到输出缓冲区,输入缓冲区为空时再次从硬盘读入批量数据,同理输出缓冲区满了以后再批量写入到目的文件(硬盘)。(https://blog.csdn.net/weixin_42130471/article/details/82914013 原文有错别字)

发布了7 篇原创文章 · 获赞 3 · 访问量 1007
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章