多线程读取文件
来源:互联网 发布:淘宝店铺购买可以吗 编辑:程序博客网 时间:2024/06/03 14:52
- 利用多线程读取文件,并写到另外一个文件
ReadWriteFile类,继承Runnable
package com.chbai.entity;/*** * ReadWriteFile * * author: chbai */import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;public class ReadWriteFile implements Runnable{private String source;private String dest;private int threadnum;private int buflen = 1024 * 1024;public ReadWriteFile(String source,String dest,int threadnum){this.source = source;this.dest = dest;this.threadnum = threadnum;}@Overridepublic void run() {int id = Integer.valueOf(Thread.currentThread().getName());byte buffer[] = new byte[buflen];try {RandomAccessFile reader = new RandomAccessFile(source, "r");RandomAccessFile writer = new RandomAccessFile(dest, "rw");long alone = reader.length() % threadnum == 0 ? reader.length()/ threadnum : ((int) (Math.ceil((double) reader.length()/ threadnum)));long begin = id * alone; reader.seek(begin);writer.seek(begin);long end = (begin + alone) > reader.length() ? reader.length() : (begin + alone);while (begin < end) {int len = 0;if (begin + buflen < end) {len = reader.read(buffer);} else {len = reader.read(buffer, 0, (int) (end - begin));}writer.write(buffer, 0, len);begin += len;}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
BatchReadWriteFile类
package com.chbai.entity;public class BatchReadWriteFile {private int threadnum;private String source;private String dest;private final static int THREAD_NUM = 5;public BatchReadWriteFile(String source, String dest, int threadnum){this.source = source;this.dest = dest;this.threadnum = (threadnum < 1) ? THREAD_NUM : threadnum;}public BatchReadWriteFile(String source, String dest){this.source = source;this.dest = dest;this.threadnum = THREAD_NUM;}public void begin(){for(int i = 0 ; i < threadnum; i++ ){Thread thread = new Thread(new ReadWriteFile(source,dest,threadnum));thread.setName(i+"");thread.start();}}}
BatchReadWriteFileTest类
package com.chbai.test;import com.chbai.entity.BatchReadWriteFile;public class BatchReadWriteFileTest {public static void main(String[] args) {BatchReadWriteFile batch = new BatchReadWriteFile("D:\\RUNNING.txt","D:\\RUNNING2.txt");batch.begin();}}
ReadWriteFile类,继承Runnable
package com.chbai.entity;/*** * ReadWriteFile * * author: chbai */import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;public class ReadWriteFile implements Runnable{private String source;private String dest;private int threadnum;private int buflen = 1024 * 1024;public ReadWriteFile(String source,String dest,int threadnum){this.source = source;this.dest = dest;this.threadnum = threadnum;}@Overridepublic void run() {int id = Integer.valueOf(Thread.currentThread().getName());byte buffer[] = new byte[buflen];try {RandomAccessFile reader = new RandomAccessFile(source, "r");RandomAccessFile writer = new RandomAccessFile(dest, "rw");long alone = reader.length() % threadnum == 0 ? reader.length()/ threadnum : ((int) (Math.ceil((double) reader.length()/ threadnum)));long begin = id * alone; reader.seek(begin);writer.seek(begin);long end = (begin + alone) > reader.length() ? reader.length() : (begin + alone);while (begin < end) {int len = 0;if (begin + buflen < end) {len = reader.read(buffer);} else {len = reader.read(buffer, 0, (int) (end - begin));}writer.write(buffer, 0, len);begin += len;}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
BatchReadWriteFile类
package com.chbai.entity;public class BatchReadWriteFile {private int threadnum;private String source;private String dest;private final static int THREAD_NUM = 5;public BatchReadWriteFile(String source, String dest, int threadnum){this.source = source;this.dest = dest;this.threadnum = (threadnum < 1) ? THREAD_NUM : threadnum;}public BatchReadWriteFile(String source, String dest){this.source = source;this.dest = dest;this.threadnum = THREAD_NUM;}public void begin(){for(int i = 0 ; i < threadnum; i++ ){Thread thread = new Thread(new ReadWriteFile(source,dest,threadnum));thread.setName(i+"");thread.start();}}}
BatchReadWriteFileTest类
package com.chbai.test;import com.chbai.entity.BatchReadWriteFile;public class BatchReadWriteFileTest {public static void main(String[] args) {BatchReadWriteFile batch = new BatchReadWriteFile("D:\\RUNNING.txt","D:\\RUNNING2.txt");batch.begin();}}
- python多线程读取文件
- 多线程读取文件File
- 多线程读取文件
- 多线程读取文件
- C#多线程读取文件
- C#多线程读取文件
- java多线程读取大文件
- python多线程读取同一个文件
- java多线程读取一个文件
- Python 多线程分块读取文件
- Java 多线程读取一个文件
- 文件上传-队列多线程读取文件内容
- java多线程同时读取一个文件
- java多线程同时读取一个文件
- JAVA使用多线程读取超大文件
- JAVA使用多线程读取超大文件
- java多线程批量读取文件(一)
- 单线程与多线程读取文件
- 欧拉函数
- Android SQLite 文件的导入导出
- hdu 1215
- Linux驱动编程(一)
- How to use Struts Framework
- 多线程读取文件
- 关系数据库正规化定义Defining Normal Forms
- zoj2851
- 一列值变成逗号分隔的一行值
- Android中ListView通过loadMore按钮或者下拉到底部加载数据
- Pthread_Mutex_t Vs Pthread_Spinlock_t (转载)
- 注意js中的Boolean
- How to ask for promotion and salary raise in this appraisal
- 自定义checkBox