zoukankan      html  css  js  c++  java
  • 文件的输出与载入之java操作


    一、前言

    学习java没多久,关键是没怎么系统学过。都是看别人的代码来学习的。今天就把一直以来让我头痛的java  IO 的一些基本操作来记录下来,加深记忆。


    二、java导入文件到内存中


    首先放一个完整的加载函数(这里我的返回值是定义的一个稀疏矩阵类)

    </pre><p><pre name="code" class="java">public SMatrix Load(String file, String delimeter){
    		
    		
    		Map<ArrayList<Integer>,Integer> triples = new HashMap<ArrayList<Integer>,Integer>();
    		
    		try{
    			File f = new File(file);
    			FileReader fr = new FileReader(f);
    			BufferedReader br = new BufferedReader(fr);
    			
    			String line;
    			
    			while((line = br.readLine()) != null){
    				String[] str = line.trim().split(delimeter);
    				
    				ArrayList<Integer> s = new ArrayList<Integer>();
    				for(int i = 0;i < str.length - 1; i++){
    					s.add(Integer.parseInt(str[i]));
    				}
    				
    				triples.put(s, Integer.parseInt(str[str.length - 1]));
    				
    			}
    			
    			
    			br.close();
    			fr.close();
    			
    		}catch(IOException e){
    			e.printStackTrace();
    		}
    		SMatrix sm = new SMatrix(triples);
    		return sm;
    	}

    
    解析:所以基本的步骤是:
    

    try{
    			
    			File f = new File(file);//Step1:利用文件的路径file,创建文件类
    			FileReader fr = new FileReader(f);//Step2:创建文件读入类
    			BufferedReader br = new BufferedReader(fr);//Step3:创建读入的缓存类
    			
    			String line;
    			
    			while((line = br.readLine()) != null){//循环读入文件的每一行
    				String[] str = line.trim().split(delimeter);//将每一行按字符串delimeter分割成一个字符串数组
    				
    				XXXXXXXXX;//TODO:接下来就将得到的字符串数组按照你构造的对象来赋值等等。这里面要注意字符串到整型或Double的转化等。
    				
    			}
    			
    			
    			br.close();//关闭缓存读入
    			fr.close();//关闭文件读入
    			
    		}catch(IOException e){
    			e.printStackTrace();
    		}


    三、java将数据从内存输出到硬盘文件中


    定义输出文件路径:例如,String of = "D:/data/blablabal.txt";

    String outFile = "data/eigenVector.txt";
    		try{
    			File f = new File(outFile);//构造输出文件类
    			FileOutputStream fout = new FileOutputStream(f);//构造一个输出文件流
    <span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre">						</span>fout.write("@RELATION	eigenVector
    ".getBytes());//主要函数就是  write(args),里面的参数要求是byte[]型的。</span>
    			for(int i = n-k;i<n;i++){
    				fout.write(("@ATTRIBUTE	"+i + "	REAL
    ").getBytes());
    			}
    			fout.write("@DATA
    ".getBytes());
    			if(k <= n){
    				for(int i = 0;i < m;i++){
    					for(int j = n-k;j<n;j++){
    						Double temp = new Double(eigVector.getArray()[i][j]);
    						String tem = temp.toString();
    						fout.write((tem + "	").getBytes());
    						
    					}
    					fout.write(("
    ").getBytes());
    				}
    			}
    		}
    		catch(IOException e){
    			e.printStackTrace();
    		}

    比如你想写一段文字:“I am a student,and I come from China”

    fout.write(("I am a student,and I come from China").getBytes());

    相应的输出一个table键为:

    fout.write(("	").getBytes());

    输出换行:

    fout.write(("
    ").getBytes());
    </pre><pre name="code" class="java">等等。


  • 相关阅读:
    从另一个角度看奋斗史——01.小人之为
    出差!出差!!又是烦人的出差!!!奋斗史无奈暂缓更新~
    出差!出差!!又是烦人的出差!!!奋斗史无奈暂缓更新~
    从另一个角度看奋斗史——01.小人之为
    《那些年啊,那些事——一个程序员的奋斗史》——124
    出差!出差!!又是烦人的出差!!!奋斗史无奈暂缓更新~
    《那些年啊,那些事——一个程序员的奋斗史》——123
    《那些年啊,那些事——一个程序员的奋斗史》——123
    《那些年啊,那些事——一个程序员的奋斗史》——124
    TSINGSEE研发的RTMP视频推流网关是什么?如何使用?
  • 原文地址:https://www.cnblogs.com/wenbaoli/p/5655751.html
Copyright © 2011-2022 走看看