My favorites | Sign in
Project Home Downloads Wiki Issues Source
Search
for
Examples  
Updated Feb 4, 2010 by a.melan...@gmail.com

Here you'll find some examples on using jtextfileparse.

Example 1

Objective: parse a text file, check if the rows have all the expected number of fields and create a new text file with a subset of rows and fields with a different field separator:

The original text file

row1	one	two	three	four	five	six	seven	eight	nine	ten
row2	one	two	three	four	five	six	seven	eight	nine	ten
row3	one	two	three	four	five	six	seven	eight	nine	ten
row4	one	two	three	four	five	six	seven	eight	nine	ten
row5	one	two	three	four	five	six	seven	eight	nine	ten
row6	one	two	three	four	five	six	seven	eight	nine	ten
row7	one	two	three	four	five	six	seven	eight	nine	ten
row8	one	two	three	four	five	six	seven	eight	nine	ten
row9	one	two	three	four	five	six	seven	eight	nine	ten
row10	one	two	three	four	five	six	seven	eight	nine	ten

The code

import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Iterator;

import net.melandri.jtextfileparser.beans.Row;
import net.melandri.jtextfileparser.beans.TextFile;
import net.melandri.jtextfileparser.filters.TextFileFilter;

public class Test {

	public static void main(String[] args) { 
	    
	    try {
	      
	      TextFile file = new TextFile("mytextfile.txt","C:\\Temp\\","\t");
	      
	      ArrayList wrongRows = file.checkRowsLength(11);
	      
	      if (wrongRows.size() == 0){
	    	  
	    	  TextFileFilter filter = new TextFileFilter();
	    	  filter.setFileName("mytextfilecopy.txt");
	    	  filter.setFilePath("C:\\Temp\\");
	    	  filter.setRows(new int[]{0,1,2,3,4,5});
	    	  filter.setFields(new int[]{2,5,7});
	    	  filter.setSeparator("*");

	    	  file.write(filter);
	        
	      }else{
	        
	        Iterator it = wrongRows.iterator();
	        
	        while (it.hasNext()){
	          
	          Row thisRow = (Row)it.next();
	          
	          System.out.println("Row " + thisRow.getNumber() + " has " + thisRow.getFields().length + " fields");
	        }
	      }
	      
	    } catch (FileNotFoundException e) {
	      e.printStackTrace();
	    }

	}

}

The output

The code above will generate a new text file like this

two*five*seven
two*five*seven
two*five*seven
two*five*seven
two*five*seven
two*five*seven

Example 2

Objective: parse a text file and generate an html report including every row but only fields 0,5,6 and 9.

The original text file

row1	one	two	three	four	five	six	seven	eight	nine	ten
row2	one	two	three	four	five	six	seven	eight	nine	ten
row3	one	two	three	four	five	six	seven	eight	nine	ten
row4	one	two	three	four	five	six	seven	eight	nine	ten
row5	one	two	three	four	five	six	seven	eight	nine	ten
row6	one	two	three	four	five	six	seven	eight	nine	ten
row7	one	two	three	four	five	six	seven	eight	nine	ten
row8	one	two	three	four	five	six	seven	eight	nine	ten
row9	one	two	three	four	five	six	seven	eight	nine	ten
row10	one	two	three	four	five	six	seven	eight	nine	ten

The code

import java.io.FileNotFoundException;

import net.melandri.jtextfileparser.beans.TextFile;
import net.melandri.jtextfileparser.filters.HTMLFileFilter;

public class Test {

  public static void main(String[] args) { 

    try {
			
      TextFile file = new TextFile("test.txt","C:\\Temp","\t",false);

      HTMLFileFilter filter = new HTMLFileFilter();

      filter.setFilePath("C:\\Temp");
      filter.setFileName("filtered.html");
      filter.setPageTitle("My report");
      filter.setFields(new int[]{0,5,6,9});

      file.write(filter);
			
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } 
  }
}

The output

The code above will generate an HTML file like this:

<!DOCTYPE html
     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "DTD/xhtml1-transitional.dtd">
<html>
<head>
	<title>My report</title>
<style type="text/css">
	body{font-family: arial, verdana, helvetica; font-size: 12px; padding: 10px; margin: 0;}
	.jtable{width: 100%; border: 1px solid #e1e1e1;border-collapse:collapse}
	tr.even{background: #f1f1f1;}
	td.jtd{padding: 3px;border: 1px solid #e1e1e1;}
	td.num{width: 40px;text-align:right;font-weight: bold;background: #638c9c;color: #FFFFFF;}
</style></head>
<body>
<table id="table_0" cellspacing="0" cellpadding="0" class="jtable">
	<tr id="r0" class="odd">
		<td id="r0_c0" class="jtd r0 c0">row1</td>
		<td id="r0_c1" class="jtd r0 c1">five</td>
		<td id="r0_c2" class="jtd r0 c2">six</td>
		<td id="r0_c3" class="jtd r0 c3">nine</td>
	</tr>
	<tr id="r1" class="even">
		<td id="r1_c0" class="jtd r1 c0">row2</td>
		<td id="r1_c1" class="jtd r1 c1">five</td>
		<td id="r1_c2" class="jtd r1 c2">six</td>
		<td id="r1_c3" class="jtd r1 c3">nine</td>
	</tr>
	<tr id="r2" class="odd">
		<td id="r2_c0" class="jtd r2 c0">row3</td>
		<td id="r2_c1" class="jtd r2 c1">five</td>
		<td id="r2_c2" class="jtd r2 c2">six</td>
		<td id="r2_c3" class="jtd r2 c3">nine</td>
	</tr>
	<tr id="r3" class="even">
		<td id="r3_c0" class="jtd r3 c0">row4</td>
		<td id="r3_c1" class="jtd r3 c1">five</td>
		<td id="r3_c2" class="jtd r3 c2">six</td>
		<td id="r3_c3" class="jtd r3 c3">nine</td>
	</tr>
	<tr id="r4" class="odd">
		<td id="r4_c0" class="jtd r4 c0">row5</td>
		<td id="r4_c1" class="jtd r4 c1">five</td>
		<td id="r4_c2" class="jtd r4 c2">six</td>
		<td id="r4_c3" class="jtd r4 c3">nine</td>
	</tr>
	<tr id="r5" class="even">
		<td id="r5_c0" class="jtd r5 c0">row6</td>
		<td id="r5_c1" class="jtd r5 c1">five</td>
		<td id="r5_c2" class="jtd r5 c2">six</td>
		<td id="r5_c3" class="jtd r5 c3">nine</td>
	</tr>
	<tr id="r6" class="odd">
		<td id="r6_c0" class="jtd r6 c0">row7</td>
		<td id="r6_c1" class="jtd r6 c1">five</td>
		<td id="r6_c2" class="jtd r6 c2">six</td>
		<td id="r6_c3" class="jtd r6 c3">nine</td>
	</tr>
	<tr id="r7" class="even">
		<td id="r7_c0" class="jtd r7 c0">row8</td>
		<td id="r7_c1" class="jtd r7 c1">five</td>
		<td id="r7_c2" class="jtd r7 c2">six</td>
		<td id="r7_c3" class="jtd r7 c3">nine</td>
	</tr>
	<tr id="r8" class="odd">
		<td id="r8_c0" class="jtd r8 c0">row9</td>
		<td id="r8_c1" class="jtd r8 c1">five</td>
		<td id="r8_c2" class="jtd r8 c2">six</td>
		<td id="r8_c3" class="jtd r8 c3">nine</td>
	</tr>
	<tr id="r9" class="even">
		<td id="r9_c0" class="jtd r9 c0">row10</td>
		<td id="r9_c1" class="jtd r9 c1">five</td>
		<td id="r9_c2" class="jtd r9 c2">six</td>
		<td id="r9_c3" class="jtd r9 c3">nine</td>
	</tr>
</table>
</body>
</html>
Comment by 4and...@gmail.com, May 3, 2012

What if I need just, say, "row3" and "row7" ?


Sign in to add a comment
Powered by Google Project Hosting