Tuesday, September 13, 2011

Java - Split Files : By Lines & Size



package main.java.concepts;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class FileSplit {


public static void main(String[] args) throws IOException {
FileSplit f = new FileSplit();

String path = "/Users/ashishsharma/Desktop/splitdir/TestSplit";

f.split(path, 300);
}

// split [OPTION] [INPUT [PREFIX]]

// it creates file-parts suffixed by aa ab ac, etc

// split -l 300 /Desktop/mydir/TestSplit.txt TestSplitPart_
// split -b 50M filename part

// to join the files back
// cat xaa xab xac > filename



public void split(String filePath, int splitByLines) throws IOException {

File f = new File(filePath);
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);

String NEWLINE = System.getProperty("line.separator");

String line = null;
StringBuilder sb = new StringBuilder();
int lineCount = 0;
int fileCount = 0;
while((line = br.readLine()) != null) {
sb.append(line).append(NEWLINE);
lineCount++;
if(lineCount >= splitByLines) {
write(sb.toString(), filePath + "_" + ++fileCount );

lineCount = 0;
sb = null;
sb = new StringBuilder();
br = null;
br = new BufferedReader(fr);
}
}
}

public void write(String text, String filePath) throws IOException {
File f = new File(filePath);
FileWriter writer = new FileWriter(f);
writer.write(text);
writer.close();
}

}


// with bytes
class FileSplitter {

public static void main(String args[]) throws Exception {
FileInputStream fis = new FileInputStream(args[0]);
int size = 1024;
byte buffer[] = new byte[size];

int count = 0;
while (true) {
int i = fis.read(buffer, 0, size);
if (i == -1)
break;

String filename = args[1] + count;
FileOutputStream fos = new FileOutputStream(filename);
fos.write(buffer, 0, i);
fos.flush();
fos.close();

++count;
}
}
}

2 comments:


  1. cái gì đó.

    Nét mặt Vương Lâm vẫn thản nhiên, nói một cách bâng quơ:
    học kế toán thực hành
    Chung cư imperia garden

    tiếng anh cho người đi làm
    khoá học kế toán excel
    học kế toán tại tphcm
    dịch vụ kế toán trọn gói
    diamond bay resort
    chung cư hoà bình green city
    five star garden
    học kế toán tại hải phòng
    trung tâm kế toán tại hoàng mai

    học kế toán tại bắc giang
    học kế toán tại thanh xuân

    - Nếu ngươi có thể làm cho Chu Tử Hồng tới đây, ta sẽ trả lại bản mệnh tinh huyết cho người.

    Hai mắt Dương Hùng lập tức đỏ lên, hơi thở trở nên gấp gáp. Một lúc sau, hắn nhỏ giọng nói:

    - Chủ nhân nói có thật không?

    Vương Lâm nhíu mày nhưng vẫn gật đầu. Dương Hùng không nói tiếng nào, lấy ra một cái ngọc giản, áp vào trán, nói cái gì đó. Sau khi, ngọc giản

    lóe lên vài đạo ánh sáng, Dương Hùng liền tung nó lên trên không, ngọc

    giản liền biến mất.

    Sau khoảng một nén nhang, từ xa có tiếng phi kiếm lướt gió vọng đến.

    Ngay sau đó, một nữ tử có bờ môi chín mọng từ trên cao hạ xuống. Người

    đó chính là Chu Tử Hồng.

    Nàng thu hổi phi kiếm, hơi nhíu mày, đang định mở miệng thì chợt phát

    hiện ra Vương Lâm đang đứng bên cạnh Dương Hùng. Nét mặt nàng lập tức

    ReplyDelete
  2. This worked perfect for me! Thanks

    ReplyDelete