文件,,读写copy

这片较之前那篇比较详细。

写:

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();
		/*大概靠背吧。。。。*/
		
		
		

	}

}





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值