Java 如何使用Channel和Scala并行下载文件?

Java 如何使用Channel和Scala并行下载文件?,java,scala,download,channel,Java,Scala,Download,Channel,如何使此代码并行下载文件 object Files{ def main(args: Array[String]): Unit ={ System.setProperty("http.proxyHost", "abc"); System.setProperty("http.proxyPort", "8080"); var num = "000" for(x <- 1 to 999){ if(x < 10){ num =

如何使此代码并行下载文件

object Files{
  def main(args: Array[String]): Unit ={

    System.setProperty("http.proxyHost", "abc");
    System.setProperty("http.proxyPort", "8080");

    var num = "000"
    for(x <- 1 to 999){
      if(x < 10){
        num = ("00" + x).toString
      }else if(x < 100 && x > 9){
        num = ("0" + x).toString
      }else{
        num = x.toString
      }
      println(num)
      var  myUrl = new URL("http://www.example.com/1" + num + ".jpg");
      var myUrlStream = myUrl.openStream();
      var myUrlChannel = Channels.newChannel(myUrlStream);

      var destinationChannel = new FileOutputStream("C:\\10"\\ + num + ".jpg").getChannel();
      try{
        destinationChannel.transferFrom(myUrlChannel, 0, Integer.MAX_VALUE);
      }catch{
        case ioe: IOException => ioe.printStackTrace()
      }
    }
  }
}
对象文件{
def main(参数:数组[字符串]):单位={
set属性(“http.proxyHost”、“abc”);
setProperty(“http.proxyPort”、“8080”);
var num=“000”
对于(x 9){
num=(“0”+x).toString
}否则{
num=x.toString
}
println(num)
var myUrl=新URL(“http://www.example.com/1“+num+”.jpg”);
var myUrlStream=myUrl.openStream();
var myUrlChannel=Channels.newChannel(myUrlStream);
var destinationChannel=new FileOutputStream(“C:\\10”\\\+num+”.jpg”).getChannel();
试一试{
destinationChannel.transferFrom(myUrlChannel,0,整数.MAX_值);
}抓住{
案例ioe:IOException=>ioe.printStackTrace()
}
}
}
}

您可以使用并行集合(注意
par
调用):

<代码>(1到999) if(x<10){ num=(“00”+x).toString }否则如果(x<100&&x>9){ num=(“0”+x).toString }否则{ num=x.toString } println(num) var myUrl=新URL(“http://www.example.com/1“+num+”.jpg”); var myUrlStream=myUrl.openStream(); var myUrlChannel=Channels.newChannel(myUrlStream); var destinationChannel=new FileOutputStream(“C:\\10”\\\+num+”.jpg”).getChannel(); 试一试{ destinationChannel.transferFrom(myUrlChannel,0,整数.MAX_值); }抓住{ 案例ioe:IOException=>ioe.printStackTrace() } }
您可以使用并行集合(注意
par
调用):

<代码>(1到999) if(x<10){ num=(“00”+x).toString }否则如果(x<100&&x>9){ num=(“0”+x).toString }否则{ num=x.toString } println(num) var myUrl=新URL(“http://www.example.com/1“+num+”.jpg”); var myUrlStream=myUrl.openStream(); var myUrlChannel=Channels.newChannel(myUrlStream); var destinationChannel=new FileOutputStream(“C:\\10”\\\+num+”.jpg”).getChannel(); 试一试{ destinationChannel.transferFrom(myUrlChannel,0,整数.MAX_值); }抓住{ 案例ioe:IOException=>ioe.printStackTrace() } }
(1 to 999).par.foreach { x =
  if(x < 10){
    num = ("00" + x).toString
  }else if(x < 100 && x > 9){
    num = ("0" + x).toString
  }else{
    num = x.toString
  }
  println(num)
  var  myUrl = new URL("http://www.example.com/1" + num + ".jpg");
  var myUrlStream = myUrl.openStream();
  var myUrlChannel = Channels.newChannel(myUrlStream);

  var destinationChannel = new FileOutputStream("C:\\10"\\ + num + ".jpg").getChannel();
  try{
    destinationChannel.transferFrom(myUrlChannel, 0, Integer.MAX_VALUE);
  }catch{
    case ioe: IOException => ioe.printStackTrace()
  }
}