`
勤业思行
  • 浏览: 82085 次
  • 性别: Icon_minigender_1
  • 来自: 贵阳
社区版块
存档分类
最新评论

Java IO操作和将字符串解析为数值数组

    博客分类:
  • j2se
阅读更多

今天对K_means聚类算法用Java进行实现了一下,在这过程中使用了Java的文件操作,好久没用流了,用起来没那么快速了。下面我就Java的文件操作的几个常见问题附上实例进行说明,这几个问题主要是将内容写入文件、将文件读出和将由数字和相应的分隔符组成的文件读出为相应的数值数组。

一、通过流和Buffer的方式将文本内容写入新建的一个文件中:

package K_means;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
class TestWriteD {
	public static void main(String[] args) {
		boolean b = updateFile();
		System.out.println("write D successed!---"+b);
	}
	@SuppressWarnings("finally")
	public static boolean updateFile(){
       boolean blg = false;
       try {
              BufferedWriter bw = new BufferedWriter(new FileWriter("D.txt"));
              StringBuilder sb = new StringBuilder("");
                for(int i=0;i<100;i++){
                sb.append(Math.random());
                sb.append(",");
                sb.append(Math.random());
                sb.append(",");
                sb.append(Math.random());
                sb.append(";");
                }
                
		  String a = sb.toString();
          byte[] b = (a).getBytes();
            // 写入文件,还可以用其他方法如:write(String str)
              bw.write(a, 0, b.length);
                bw.close();
                blg = true;
         } catch (IOException e) {
               e.printStackTrace();
               }
        finally{
        return blg;
        }
   }
}

 

二、文件读出到一个字符串:

public static String readFile(String File) throws IOException{
	  FileInputStream inputstream = new FileInputStream(File); 
	     StringBuffer buffer = new StringBuffer(); 
	     String line;
	     double[] D = new double[100];
	     BufferedReader bufferreader = new BufferedReader(new InputStreamReader(inputstream)); 
	     while(bufferreader.ready()){
	     line = bufferreader.readLine();
	     buffer.append(line);
	     buffer.append(";");
	     }
	     inputstream.close();
	     String Dstr =buffer.toString();
	   
	     return Dstr;
  }

 

三、将由数值和相应的分隔符组成的字符串解析为数值数组。这里由于我使用的是多维数据,所以需解析为二维数组。

 public static double[][] split(String D){
	  double aa[][] =new double[100][3];
	  String[][] ss =new String[100][3];
	  String[] s =new String[100];
	  s = D.split(";");
	  for(int i=0;i<100;i++){
		  ss[i] = s[i].split(",");
	  }
	  int i=0;int j=0;
	  for(String[] a : ss){
		  j=0;
		  for(String b :a){
			  aa[i][j] =Double.parseDouble(b);
			  j++;
		  }
		  i++;
	  }
	  
	  return aa;
  }

 

2
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics