大家一般在java中都怎么来创建一个通道,并且用来存储一些数据啊~

大家一般在java中都怎么来创建一个通道,并且用来存储一些数据啊~,第1张

给你一个简单的文件通道示例

public class ChannelTest{

public static void main(String[] args){

File f=new File("XXXX.txt")//后面要创建一个读通道,所以文件最好事先已存在

FileInputStream fis=new FileInputStream(f)

FileChannel fc=fis.getChannel()//获得文件读入流通道

//现在可以用通道读取文件了

ByteBuffer buf=ByteBuffer.allocate(1024)//定义一个缓冲区,用来存放通道读取的数据

byte[] b=new byte[buf.capacity()]//定义一个数组用来存放缓冲里面的数据,好像不能直接访问缓冲区里面的数据

long n=0/侍昌/判断标志

while(true){

n=fc.read(b)

if(n==-1)//-1说明已经到达文件流末尾

break

//输出读取的数据

buf.flip()

buf.get(b,0,buf.limit())//将缓冲区里的实际数据长度赋给数组

System.out.println(new String(b,0,b.length))

/仔谈蠢/必须念陪清空缓冲区,否则读不进来

buf.clear()

}

//关闭流

fis.close()

fc.close()

}

}

我希望从本地和远程复制文件,文件都很大洞颤,10G级的,如何快速的复制?看网上有尘颤扰人说使用管道到管道,这确实比其他的快,不知道fastcopy是怎样实现的 本地远程复制大文件啊,而且还是10G这么大的。你看看迅雷啊,他是多部分一起传的。Java传输文件就是一般的文件 *** 作啊,你可以模仿迅雷,开多个线程下载,每个线程记录下载部分的开始和结束索引,一起下到远程去。至于效率有多高,Java我还真不敢说,要不迅雷,快车这种工具怎么不用Java来开发。用FileChannel的transferTo(long position, long count, WritableByteChannel target)方法试试用FileChannel的transferTo(long position, long count, WritableByteChannel target)方法试试public static void main(String[] args)throws Exception{FileInputStream fileIn=new FileInputStream("d:/JavaTests/TestFileChannel.txt")FileOutputStream fileOut=new FileOutputStream("d:/JavaTests/TestFileOutputStreamCopyTime.txt")int ilong l=System.currentTimeMillis()while((i=fileIn.read())!=-1){fileOut.write(i)}System.out.println("Take time:"+(System.currentTimeMillis()-l)+"ms")//516msfileIn.close()本地远程复制大文件啊,而且还是10G这么大的。你看看迅雷啊,他是多部分一起传的。Java传输文件就是一般的文件 *** 作啊,你可以模仿迅雷,开多个线程下载,每个线程记录下载部分的开始和结束索引,一起下到远派旦程去。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12203181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存