首页 技术 正文
技术 2022年11月23日
0 收藏 687 点赞 3,822 浏览 2100 个字

一、前言

学习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">等等。
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,951
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,477
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,290
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,107
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,739
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,773