影片下载

时间:2014-01-20 13:44:48

标签: java

我尝试下载youtube视频(使用与keepvid相同的链接)。我得到的文件比通过浏览器下载的文件大4kB,无法播放。任何人都可以告诉我为什么,我做错了什么? 此外,当我逐行打印两个文件时,它们显示相同的数据。我用于下载的代码如下。 感谢。

            try {
          URL hr= new URL("link");
           URLConnection conn= hr.openConnection();
           conn.setRequestProperty("Uzer-Agent", "Mozilla/5.0");
           conn.connect();


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

           File file=new File("video.flv");
           PrintWriter pw=new PrintWriter(new FileWriter(file));

           String line="";

           while((line=br.readLine())!=null){

               System.out.println(line);

               pw.println(line);

               }

           pw.close();
              } catch (Exception e){}

2 个答案:

答案 0 :(得分:0)

您无法使用flv等读取二进制文件(如readLine()),就好像它们是文本文件一样。您必须分别使用read()write()中未格式化的InputStreamOutputStream方法。

答案 1 :(得分:0)

是的,虽然阅读可能br.readLine()完成(不确定,我会用br.read( char[ 4096 ], off, len )阅读,但用pw.println撰写肯定是错误的,因为它在每行的末尾添加了一个换行符 - 你不想在二进制文件中看到它。

我会说它像

char[] buff = new char[ 4096 ];
int offset = 0;
while( -1 != br.read( buff, offset, 4096 ) ){
  pw.write( buff );
  offset += 4096;
}

您也可以在此处使用输入/输出流,因为您不需要进行字符转换。