这片较之前那篇比较详细。
写:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
public class GG {
public static void main(String[] args) throws FileNotFoundException {
GG xpp[]=new GG[100];//声明GG类的对象
String name,s1,s2,s3,s4;//姓名,物理,化学,数学,总分
double grade1,grade2,grade3,grade4;//物理成绩,化学成绩。。。
OutputStream os=new FileOutputStream("E:\\xxx.txt",true);//文件的输出流。。。输出流是用来写的
PrintWriter pw=new PrintWriter(os);
pw.append("姓名"+" "+"数学"+" "+"物理"+" "+"化学");//此处加入这一串东西。
pw.println();//转到下一行
pw.write("张三"+" "+"100"+" "+"33"+" "+"98");
pw.println();
pw.println("很6"+" "+"96"+" "+"100"+" "+"92");
pw.write("哈哈哈"+" "+"89"+" "+"100"+" "+"9999");//在添加时可以用append,write,print...但是要排版,下一行时加一个println比较简单
pw.close();//记住一定要关闭,因为我不关闭的话什么都没有
/*到此为止我已经写入了这些信息,运行一下便可发现E:\\xxx.txt这个文件里有了上边的东西
OutputStream os=new FileOutputStream("E:\\xxx.txt",true)
此处会发现我加了一个true,就是可以累加。比如我程序运行了三遍,那么发现文件里有三份了。
如果不加,则每次运行都会先清空,再执行。各有利弊。
*/
}
}
2.读:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.Scanner;
public class GG2 {
/*这个GG2的作用就类似于c++里的struct的作用,便于排序才用的。里面的对象就是横行的元素种类。姓名+数学+物理+化学*/
private String name;
private double a,b,c,zong;
private GG2(String a,double b,double c,double d)
{
name=a;
this.a=b;
this.b=c;
this.c=d;
zong=this.a+this.b+this.c;
}
public static void main(String[] args) throws Exception {
String name,s1,s2,s3,s4;
GG2 lala[]=new GG2[100];
File f1=new File("E:\\xxx.txt");
Scanner sc=new Scanner(f1);//目的是读取f1里的内容
int cj1,cj2,cj3,zcj;
int count=1;
s1=sc.next();s2=sc.next();s3=sc.next();s4=sc.next();//提前读完这一行里的东西(姓名+数学+物理+化学)
/*继而读取下面的有成绩的行数*/
while(sc.hasNext())
{
name=sc.next();
cj1=sc.nextInt();
cj2=sc.nextInt();
cj3=sc.nextInt();
zcj=cj1+cj2+cj3;//在这一步中把总成绩算出来,便于之后的排序
lala[count]=new GG2(name,cj1,cj2,cj3);//将这个利用构造函数存入lala对象
count++;//count的作用是用来计数,看有多少条学生的记录,每读一遍自增一
}
GG2 zanshi;//这个对象的作用就是暂时的用于交换的。就像ab交换,需要c...接下来双重循环就是冒泡排序(按总成绩从高到低)
for(int i=1;i<count-1;i++)
{
for(int j=1;j<=count-i-1;j++)
{
if(lala[j].zong<lala[j+1].zong)
{
zanshi=lala[j];
lala[j]=lala[j+1];
lala[j+1]=zanshi;
}
}
}//到这里怕好序了,接下来就是将排序结果显示出来。。。重复写的过程
//OutputStream os=new FileOutputStream("E:\\xpp.txt",true);
OutputStream os=new FileOutputStream("E:\\hahak.txt",true);//我新建了一个,专门用来写排序后的
PrintWriter pw=new PrintWriter(os);
for(int i=1;i<count;i++)
{
pw.println(lala[i].name+" "+lala[i].a+" "+lala[i].b+" "+lala[i].c+" "+lala[i].zong);
}
pw.close();//一定要关掉!!
}
}
3.copy
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class GG3 {
public static void main(String[] args) throws Exception {
File f1=new File("E:\\xxx.txt");
File f2=new File("E:\\copy.txt");
FileInputStream fis=new FileInputStream(f1);//要copy的文件
FileOutputStream fos=new FileOutputStream(f2);
InputStreamReader cin=new InputStreamReader(fis);
OutputStreamWriter cout=new OutputStreamWriter(fos);
int is;
while((is=cin.read())!=-1)//注意括号,不能缺
cout.write(is);
cin.close();
cout.close();
/*大概靠背吧。。。。*/
}
}