perl对大量大文件进行读写

在对大量文件进行读写时,最好将文件存为gz文件,可以节约读写硬盘的时间,硬盘也不会那么卡。

在写gz文件时,最好使用PerlIO::gzip模块。这个模块不用调用gzip命令,减少了程序占用的线程数量,可以有效的降低load。

下面是一个例子。


#! /usr/bin/env perl
use strict;
use warnings;
use List::Util;
use FileHandle;
use PerlIO::gzip;

my %fh;

my @a=(1..100);
for(my $i=1;$i<=100;$i++){
open $fh{$i}, ">:gzip", "x.$i.gz";
#open ($fh{$i},"|gzip > x.$i.gz"); #此行是不推荐的写法
}

for(my $i=0;$i<1e9;$i++){
my @b=List::Util::shuffle @a;
my $x=$b[0];
$fh{$x}->print("@b\n");
}

foreach my $i(keys %fh){
close $fh{$i};
}

perl对大量大文件进行读写,布布扣,bubuko.com

时间: 2024-08-06 03:42:51

perl对大量大文件进行读写的相关文章

windows下Perl如何读取大文件的最后一行(总结)

Perl中读取文件最后一行的方法很多,比如 (1)将文件读入数组,取最后一个元素 open (FILE,"file.txt") or die "$!"; my @arr=<FILE>;; close FILE; my $last=$arr[$#arr]; #$last里就是最后一行的内容了. (2)一行一行读入,到最后一行时输出 open (FILE,"file.txt") or die "$!"; while (

17 大文件的读写

1.大文件的读写方法 2.字符流的使用方法 字符流:读写文件时以字符为基础 字节输入流:Reader  <-----FileReader int read(char [] c,int off,int len) 字节输出流:Writer  <------FileWriter void write(char [] c,int off,int len) class Test { public static void main(String args[]) { //声明输入流引用 FileInputS

java filechannel大文件的读写

java读取大文件 超大文件的几种方法 转自:http://wgslucky.blog.163.com/blog/static/97562532201332324639689/ java 读取一个巨大的文本文件既能保证内存不溢出又能保证性能 2010-09-25 11:18:50|  分类: 默认分类 |字号 订阅 import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.

大文件的读写方法

import java.io.*; class Test{ public static void main(String args[]){ FileInputStream fis = null; FileOutputStream fos = null; try{ fis = new FileInputStream("F:/Android/Java4Android/33/src/a.txt"); //假设每次读取1024字节, byte [] b = new byte[1024]; fo

delphi 大文件的读写 使用 MapviewOffile

unit filemap; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const fileName = 'myTest.txt'; type TForm1 = class(TForm) btnUpper: TButton; btnLower: TButton; txtContent: TMemo; Label1: TLab

java中文件的读写

Java中文件读写操作的作用是什么?回答这个问题时应该先想到的是Java只是一门语言,我们的一种使用工具而已,这样答案就明晰了,就是将外来的各种数据写入到某一个文件中去,用以保存下来:或者从文件中将其数据读取出来,供我们使用.就如下电影过程,从网络资源中下载一部电影保存于你电脑中(写文件),当你想看的时候就用播放器打开(读文件).Java中如何对文件进行读写操作?先理一理,Java中的流分两种,字节流和字符流,其中字节流的两个基类是InputStream和OutputStream;字符流的两个基

java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射

java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果文件超大的话,更快的方式是采用MappedByteBuffer. MappedByteBuffer是java nio引入的文件内存映射方案,读写性能极高.NIO最主要的就是实现了对异步操作的支持.其中一种通过把一个套接字通道(SocketChannel)注册到一个选择器(Selector)中,不时调用后者的选择(select)方法就能返回满足的选择键(SelectionKey

文件流读写、大文件移动 FileStream StreamWriter

文件流读写 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace _09文件流 { class Program { static void Main(string[] args) { //string msg = "飞流直下三千尺"; ////字符串转字节数组 //byte[] buffer = System.Tex

读写文件:每次读入大文件里的一行、读写.CSV文件

读文件: 传统的读法.所有读出,按行处理: fp=open("./ps.txt", "r"); alllines=fp.readlines(); fp.close(); for eachline in alllines: print eachline 推荐读取方法,使用文件迭代器 , 每次仅仅读取和显示一行.读取大文件时应该这样: fp=open("./ps.txt", "r"); for eachline in fp: pr