java用RandomAccessFile实现多线程下载
2013-08-08 13:55
441 查看
利用RandomAccessFile实现文件的多线程下载,即多线程下载一个文件时,将文件分成几块,每块用不同的线程进行下载。下面是一个利用多线程在写文件时的例子,其中预先分配文件所需要的空间,然后在所分配的空间中进行分块,然后写入:
[java] view plaincopy
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 测试利用多线程进行文件的写操作
*/
public class RandomAccess{
public static void main(String[] args) throws Exception {
// 预分配文件所占的磁盘空间,磁盘中会创建一个指定大小的文件
RandomAccessFile raf = new RandomAccessFile("D://abc.txt", "rw");
raf.setLength(1024*1024); // 预分配 1M 的文件空间
raf.close();
// 所要写入的文件内容
String s1 = "第一个字符串";
String s2 = "第二个字符串";
String s3 = "第三个字符串";
String s4 = "第四个字符串";
String s5 = "第五个字符串";
// 利用多线程同时写入一个文件
new FileWriteThread(1024*1,s1.getBytes()).start(); // 从文件的1024字节之后开始写入数据
new FileWriteThread(1024*2,s2.getBytes()).start(); // 从文件的2048字节之后开始写入数据
new FileWriteThread(1024*3,s3.getBytes()).start(); // 从文件的3072字节之后开始写入数据
new FileWriteThread(1024*4,s4.getBytes()).start(); // 从文件的4096字节之后开始写入数据
new FileWriteThread(1024*5,s5.getBytes()).start(); // 从文件的5120字节之后开始写入数据
}
// 利用线程在文件的指定位置写入指定数据
static class FileWriteThread extends Thread{
private int skip;
private byte[] content;
public FileWriteThread(int skip,byte[] content){
this.skip = skip;
this.content = content;
}
public void run(){
RandomAccessFile raf = null;
try {
raf = new RandomAccessFile("D://abc.txt", "rw");
raf.seek(skip);
raf.write(content);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
raf.close();
} catch (Exception e) {
}
}
}
}
}
阅读(12) | 评论(0) | 转发(0) |
0
上一篇:验证码识别部分代码
下一篇:java 中RandomAccessFile的使用
相关热门文章
pthread线程的终止退出 | 线程...
kthreadd 分析
windows 下找到主线程ID
如何在linux 下c++中类的成员...
线程同步机制(1)---无名信号...
JDK1.6官方下载_JDK6官方下载_...
MyEclipse6.5下载及注册码...
Eclipse+MyEclipse的配置
Eclipse 插件安装、升级和卸载...
最新版SWT Designer 6.0 安装,...
那一台服务器也没5T的存储空间...
公司有5T的数据用于下载,数据...
CACTI监控ESXI中的虚拟机,监...
如何挂载一块以前做过LVM的硬...
做主主同步,只同步个别的几张...
给主人留下些什么吧!~~
评论热议
[java] view plaincopy
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
/**
* 测试利用多线程进行文件的写操作
*/
public class RandomAccess{
public static void main(String[] args) throws Exception {
// 预分配文件所占的磁盘空间,磁盘中会创建一个指定大小的文件
RandomAccessFile raf = new RandomAccessFile("D://abc.txt", "rw");
raf.setLength(1024*1024); // 预分配 1M 的文件空间
raf.close();
// 所要写入的文件内容
String s1 = "第一个字符串";
String s2 = "第二个字符串";
String s3 = "第三个字符串";
String s4 = "第四个字符串";
String s5 = "第五个字符串";
// 利用多线程同时写入一个文件
new FileWriteThread(1024*1,s1.getBytes()).start(); // 从文件的1024字节之后开始写入数据
new FileWriteThread(1024*2,s2.getBytes()).start(); // 从文件的2048字节之后开始写入数据
new FileWriteThread(1024*3,s3.getBytes()).start(); // 从文件的3072字节之后开始写入数据
new FileWriteThread(1024*4,s4.getBytes()).start(); // 从文件的4096字节之后开始写入数据
new FileWriteThread(1024*5,s5.getBytes()).start(); // 从文件的5120字节之后开始写入数据
}
// 利用线程在文件的指定位置写入指定数据
static class FileWriteThread extends Thread{
private int skip;
private byte[] content;
public FileWriteThread(int skip,byte[] content){
this.skip = skip;
this.content = content;
}
public void run(){
RandomAccessFile raf = null;
try {
raf = new RandomAccessFile("D://abc.txt", "rw");
raf.seek(skip);
raf.write(content);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
raf.close();
} catch (Exception e) {
}
}
}
}
}
阅读(12) | 评论(0) | 转发(0) |
0
上一篇:验证码识别部分代码
下一篇:java 中RandomAccessFile的使用
相关热门文章
pthread线程的终止退出 | 线程...
kthreadd 分析
windows 下找到主线程ID
如何在linux 下c++中类的成员...
线程同步机制(1)---无名信号...
JDK1.6官方下载_JDK6官方下载_...
MyEclipse6.5下载及注册码...
Eclipse+MyEclipse的配置
Eclipse 插件安装、升级和卸载...
最新版SWT Designer 6.0 安装,...
那一台服务器也没5T的存储空间...
公司有5T的数据用于下载,数据...
CACTI监控ESXI中的虚拟机,监...
如何挂载一块以前做过LVM的硬...
做主主同步,只同步个别的几张...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- JavaIo——运用RandomAccessFile实现文件的多线程下载
- 【java编程】IO特殊类之RandomAccessFile实现多线程文件下载
- Java--使用多线程下载,断点续传技术原理(RandomAccessFile)
- java网络编程:RandomAccessFile, URLConnection和多线程机制实现了Http下载
- java基础之IO流--使用RandomAccessFile实现数据的分段写入
- Java 实现文件随机读写-RandomAccessFile
- 使用RandomAccessFile实现多线程下载
- Java--使用多线程下载,断点续传技术原理(RandomAccessFile)
- Java学习笔记---实现文件随机读写-RandomAccessFile
- RandomAccessFile可实现数据的分段写入也就是多线程下载
- Java RandomAccessFile 指定位置实现文件读取与写入
- think in java - io - RandomAccessFile
- Java RandomAccessFile用法
- java零碎知识点总结 2:IO 流 --------2 RandomAccessFile
- java的RandomAccessFile的使用详解
- java IO流:RandomAccessFile
- java RandomAccessFile 向文件中写入数据,怎么样不覆盖原来的数据
- Java RandomAccessFile用法
- Java RandomAccessFile用法
- Java IO的RandomAccessFile的使用