B
Benjamin Trendelkamp-Schroer
Hi,
I want to write a method that can write possibly large matrices of
floating point numbers in scientific notation to human readable ascii
files. I want to be able to specify the formatting of the floating
point numbers usins format strings like "%1.8e" or "%2.5f".
From what I take from the java doc. I can do something like
i) java.io.File file = new java.io.File(pathnameOfMyFile);
java.io.FileWriter fileWriter = new java.io.FileWriter(file);
java.util.Formatter f = new java.util.Formatter(fileWriter);
for(int i ...){
for(int j ...){
f.format("%1.8e", Matrix.getEntry(i,j))
f.format("%s", columnSeparator) //columnSeparator = "
" (for example)
}
f.format("%s", rowSeparator) // rowSeparator="\n" (for example)
}
ii) Use a buffered writer which is adviced as being good practice in
all tutorials since it has a buffered write method. But as far as I
understand Formatter does only use the format method of the Appendable
interface and not the bufered write method. If my Matrix gets very
large (say 10000 rows and columns) I would have to put each row in an
appropriately formatted String o0r StringBuffer, calling the append
method on the StringBuffer through the format method of Formatter many
times and use write to output it to the buffered writer. But this
string would be quite large + I would have to create that string and
the Formatter for each new row (using for example
StringBuffer.toString(), Formatter(StringBuffer)).
I am asking because I am not sure what is the best practice hear. My
favorite solution would be to have a method that I could just pass a
Formatter to so that I could use that formatter object to call other
methods doing the formatting on the level of single entries of my
matrix without the need to create a lot of formatter objects. But on
the other hand I would like to make writing out to files as fast as
possible and do not want to suffer performance penalties from
repeatedly calling an append() method where it would be advisable to
make fewer calls to write with string containing more characters.
I am quite new to Java so I would appreciate any help with that and
ask you to excuse any obvious mistakes and style flaws that I have
made.
I want to write a method that can write possibly large matrices of
floating point numbers in scientific notation to human readable ascii
files. I want to be able to specify the formatting of the floating
point numbers usins format strings like "%1.8e" or "%2.5f".
From what I take from the java doc. I can do something like
i) java.io.File file = new java.io.File(pathnameOfMyFile);
java.io.FileWriter fileWriter = new java.io.FileWriter(file);
java.util.Formatter f = new java.util.Formatter(fileWriter);
for(int i ...){
for(int j ...){
f.format("%1.8e", Matrix.getEntry(i,j))
f.format("%s", columnSeparator) //columnSeparator = "
" (for example)
}
f.format("%s", rowSeparator) // rowSeparator="\n" (for example)
}
ii) Use a buffered writer which is adviced as being good practice in
all tutorials since it has a buffered write method. But as far as I
understand Formatter does only use the format method of the Appendable
interface and not the bufered write method. If my Matrix gets very
large (say 10000 rows and columns) I would have to put each row in an
appropriately formatted String o0r StringBuffer, calling the append
method on the StringBuffer through the format method of Formatter many
times and use write to output it to the buffered writer. But this
string would be quite large + I would have to create that string and
the Formatter for each new row (using for example
StringBuffer.toString(), Formatter(StringBuffer)).
I am asking because I am not sure what is the best practice hear. My
favorite solution would be to have a method that I could just pass a
Formatter to so that I could use that formatter object to call other
methods doing the formatting on the level of single entries of my
matrix without the need to create a lot of formatter objects. But on
the other hand I would like to make writing out to files as fast as
possible and do not want to suffer performance penalties from
repeatedly calling an append() method where it would be advisable to
make fewer calls to write with string containing more characters.
I am quite new to Java so I would appreciate any help with that and
ask you to excuse any obvious mistakes and style flaws that I have
made.