我有一个文件,里面全是双精度的数据,而且这些数据以矩阵的形式在文件中排布,现在我想把这些数据的行和列倒换一下,意思就是矩阵的转置,下面是举的一个小例子,
比如我现在有一个数字文件里面的数据如下:
11 12 13 14
21 22 23 34
31 32 33 34
41 42 43 44
我想处理后的结果应该是这样的
11 21 31 41
12 22 32 42
13 23 33 43
14 24 34 44
我不知道怎么去实现,下面是我的代码,每次得到的是一竖列的数字,因为我想每次重新读取之后放入文件中去,但不知道怎么定位第一行文件.谢谢大家.
由于文件太大,不能全部读入内存中处理,只能一行行的读取.我的代码如下:
/**
*
*/
import java.io.*;
import java.util.*;
/**
* @author *
*/
public class Transpose {
public static int size=0;
public static int halfsize=0;
public static int number=0;
/**
* @param args
*/
public static void DoTranspose(String s)throws Exception{
File tran_s=new File("tran2_"+s);
FileReader re=new FileReader(s);
BufferedReader buffer=new BufferedReader(re);
PrintWriter out=new PrintWriter(new FileWriter(tran_s));
FileReader re2=new FileReader(tran_s);
//BufferedReader buffer2=new BufferedReader(re2);
LineNumberReader lineread=new LineNumberReader(re2);
String temp,temp2;
while(((temp=buffer.readLine())!=null)){
number++;
temp2=lineread.readLine();
String tarray[]=temp.split("[\\s]+");
size=tarray.length;
//halfsize=(int)size/2;
System.out.println(size);
//System.out.println(halfsize);
if(temp2==null){
for(int i=0;i<size;i++){
out.print(tarray+" ");
out.print("\r\n");
//System.out.print(temp2);
}
}
else{
lineread.setLineNumber(1);
temp2=lineread.readLine();
for(int i=0;i<size;i++){
out.print(temp2+" "+tarray+" ");
out.print("\r\n");
}
}
}
out.flush();
out.close();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try{DoTranspose("a.txt");}
catch(Exception e){e.printStackTrace();}}
}
比如我现在有一个数字文件里面的数据如下:
11 12 13 14
21 22 23 34
31 32 33 34
41 42 43 44
我想处理后的结果应该是这样的
11 21 31 41
12 22 32 42
13 23 33 43
14 24 34 44
我不知道怎么去实现,下面是我的代码,每次得到的是一竖列的数字,因为我想每次重新读取之后放入文件中去,但不知道怎么定位第一行文件.谢谢大家.
由于文件太大,不能全部读入内存中处理,只能一行行的读取.我的代码如下:
/**
*
*/
import java.io.*;
import java.util.*;
/**
* @author *
*/
public class Transpose {
public static int size=0;
public static int halfsize=0;
public static int number=0;
/**
* @param args
*/
public static void DoTranspose(String s)throws Exception{
File tran_s=new File("tran2_"+s);
FileReader re=new FileReader(s);
BufferedReader buffer=new BufferedReader(re);
PrintWriter out=new PrintWriter(new FileWriter(tran_s));
FileReader re2=new FileReader(tran_s);
//BufferedReader buffer2=new BufferedReader(re2);
LineNumberReader lineread=new LineNumberReader(re2);
String temp,temp2;
while(((temp=buffer.readLine())!=null)){
number++;
temp2=lineread.readLine();
String tarray[]=temp.split("[\\s]+");
size=tarray.length;
//halfsize=(int)size/2;
System.out.println(size);
//System.out.println(halfsize);
if(temp2==null){
for(int i=0;i<size;i++){
out.print(tarray+" ");
out.print("\r\n");
//System.out.print(temp2);
}
}
else{
lineread.setLineNumber(1);
temp2=lineread.readLine();
for(int i=0;i<size;i++){
out.print(temp2+" "+tarray+" ");
out.print("\r\n");
}
}
}
out.flush();
out.close();
}
public static void main(String[] args) {
// TODO Auto-generated method stub
try{DoTranspose("a.txt");}
catch(Exception e){e.printStackTrace();}}
}
package csdn;import java.io.*;/**
* @author *
*/
public class Transpose {
public static int size = 0; public static int halfsize = 0; public static int number = 0; /**
* @param args
*/
public static void DoTranspose(String s) throws Exception {
FileReader re = new FileReader(s);
BufferedReader buffer = new BufferedReader(re);
File tran_s = new File("src/csdn/tran2_a.txt");
PrintWriter out = new PrintWriter(new FileWriter(tran_s));
FileReader re2 = new FileReader(tran_s);
LineNumberReader lineread = new LineNumberReader(re2);
String temp=buffer.readLine(), temp2;
String[] result = null;
while (temp != null) {
String tarray[] = temp.split("\\s+");
temp=buffer.readLine();
size = tarray.length;
if (number == 0) {
for (int i = 0; i < size; i++) {
out.write(tarray[i] + " ");
out.write("\r\n");
}
} else {
lineread.setLineNumber(1);
result = new String[size];
for (int i = 0; i < size; i++) {
temp2 = lineread.readLine();
System.out.println(lineread.getLineNumber()-1+"----"+number+":"+temp2);
out.write(temp2 + " " + tarray[i] + " ");
out.write("\r\n");
result[i] = temp2 + " " + tarray[i];
} }
number++;
out.flush();
}
out = new PrintWriter(new FileWriter(tran_s,false));
for (int i = 0; i < size; i++) {
out.write(result[i]);
out.write("\r\n");
}
out.flush();
out.close(); } public static void main(String[] args) {
// TODO Auto-generated method stub
try {
DoTranspose("src/csdn/a.txt");
} catch (Exception e) {
System.out.println(e.toString());
} }
}