Retrieve a Text File by Column

Question

Java Read Text Column function is similar to ReadLine().

I have a text file containing vector information by pin. It looks like this:

PHP Code:

xxxxxxxxxxxxxxxxxxxx

pppppppppppppppppppp

iiiiiiiiiiiiiiiiiiii

nnnnnnnnnnnnnnnnnnnn

12345689111111111122

012345678901

                  

                  

                  

                  

Count PatAdr

(Main) (Main)

1   0 1000000000000010XXXX

2   0 1000000000000010XXXX

3   0 1000000000000010XXXX

4   0 1000000000000010XXXX

5   0 1000000000000010XXXX

6   0 1000000000000010XXXX

7   0 1000000000000010XXXX

8   0 1000000000000010XXXX

9   0 1000000000000010XXXX

10  0 1000000000000010XXXX

11  0 1000000000000010XXXX

12  0 1000000000000010XXXX

13  0 1000000000000010XXXX

14  0 1000000000000010XXXX

15  0 1000000000000010XXXX

16  0 1000000000000010XXXX

...

 

I want to extract the information column by column, and would like to be able to write or store each pin by line such as:

xpin1 11111...

xpin2 10000...

xpin3 10000...

 

Basically, what I am looking for is exactly the Java readLine() function described here:

http://java.sun.com/javase/6/docs/ap...redReader.html

But instead of reading a text file line-by-line, I want to read it column by column. Is there any way or function of doing this?

 

Answer

The computation involves union and rearrangement of members of a set. It’s simple to perform set-oriented operations in Java though the code is zigzag. It’s also easy to do it in R or Python, but both can’t be integrated by a Java main application. You can handle it in SPL (Structured Process Language) and call the result set from the Java main application. (About Java invocation of SPL scripts, see How to Call an SPL Script in Java)

A

1

=file("source.txt").read@n()

2

=A1.to(2,6)

3

=A1.to(14,)

4

=A2.regex("(.*)   (.*)";a,b).(b)

5

=A4.new(mid(~,1,1),mid(~,2,1),mid(~,3,1),mid(~,4,1),mid(~,5,1),mid(~,6,1),mid(~,7,1),mid(~,8,1),mid(~,9,1),mid(~,10,1),mid(~,11,1),mid(~,12,1),mid(~,13,1),mid(~,14,1),mid(~,15,1),mid(~,16,1),mid(~,17,1),mid(~,18,1),mid(~,19,1),mid(~,20,1))

6

=A3.regex("(.*)   (.*)";a,b).(b)

7

=A6.new(mid(~,1,1),mid(~,2,1),mid(~,3,1),mid(~,4,1),mid(~,5,1),mid(~,6,1),mid(~,7,1),mid(~,8,1),mid(~,9,1),mid(~,10,1),mid(~,11,1),mid(~,12,1),mid(~,13,1),mid(~,14,1),mid(~,15,1),mid(~,16,1),mid(~,17,1),mid(~,18,1),mid(~,19,1),mid(~,20,1))

8

=A5|A7

9

=A8.fno().(A8.field(~).concat())

 

A1: Read in each line of source.txt as a string and return them as a sequence.

undefined

A2: Get members from the 2nd one to the 6th one to generate a new sequence.

undefined

A3: Get members after the 14th (inclusive) one to generate a new sequence.

undefined

A4: Get desired data by matching members in A2 with a regular expression.

undefined

A5: Split A4’s sequence into a 2D table of the following structure.

undefined

A6: Get desired data by matching members in A3 with a regular expression.

undefined

A7: Split A6’s sequence into a 2D table of the following structure.

undefined

A8: Union A5’s 2D table and A7’s together.

undefined

A9: Join up values in each column into a string to make it a row.

undefined