免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1465 | 回复: 1
打印 上一主题 下一主题

急java文件操作问题,有代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-22 13:08 |只看该作者 |倒序浏览
我有一个文件,里面全是双精度的数据,而且这些数据以矩阵的形式在文件中排布,现在我想把这些数据的行和列倒换一下,意思就是矩阵的转置,下面是举的一个小例子,
比如我现在有一个数字文件里面的数据如下:
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();}

}
}

论坛徽章:
0
2 [报告]
发表于 2008-01-22 14:45 |只看该作者
&nbsp;&nbsp;&nbsp;&nbsp;public static void DoTranspose(String srcFile) throws Exception {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String destFile = "tran2_" + srcFile;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FileWriter destWriter = new FileWriter(destFile);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BufferedReader srcReader = new BufferedReader(new FileReader(new File(srcFile)));

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int cols = 0, curCol = 0;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while (true) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String line = srcReader.readLine();

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (line != null) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (cols == 0) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cols = line.split(" ").length;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destWriter.write(line.split(" ")[curCol] + " ");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (cols == curCol + 1) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destWriter.write("\r\n");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;curCol++;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcReader.close();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcReader = new BufferedReader(new FileReader(new File(srcFile)));
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;srcReader.close();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destWriter.close();
&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DoTranspose("a.txt");
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (Exception e) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
&nbsp;&nbsp;&nbsp;&nbsp;}


不规则的矩阵需要另外处理异常。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP