- 论坛徽章:
- 0
|
我有一个文件,里面全是双精度的数据,而且这些数据以矩阵的形式在文件中排布,现在我想把这些数据的行和列倒换一下,意思就是矩阵的转置,下面是举的一个小例子,
比如我现在有一个数字文件里面的数据如下:
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();}
}
} |
|