文件的输出与载入之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\teigenVector\n".getBytes());//主要函数就是  write(args),里面的参数要求是byte[]型的。</span>
			for(int i = n-k;i<n;i++){
				fout.write(("@ATTRIBUTE\t"+i + "\tREAL\n").getBytes());
			}
			fout.write("@DATA\n".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 + "\t").getBytes());
						
					}
					fout.write(("\n").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(("\t").getBytes());

输出换行:

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值