【Java实验】I/O流及文件

Question

  1. 使用文件字符流读取文件,将文件的内容显示在屏幕上。
  2. 写一个复制任意大小文件的程序。
  3. 编写一个Java应用程序,给文件ReadExample.java添加行号拷贝到另一个文件temp.text。
  4. 将TextOne和TextTwo记事本内容进行合并生成targetFile文件。
  5. 使用RandomAccessFile流将一个文本文件倒置读出。
  6. 有一个文件中保存了一个班的考试成绩,包括学生姓名以及语文、英语、数学、科学等课程成绩,请设计程序读取这些成绩,对这些成绩做出统计并存储到另一个文件中。

Answer

Question1

import java.io.FileReader;

public class question1 {

	public static void main(String[] args) {
		try {
			FileReader fr=new FileReader("/Users/apple/eclipse-workspace/test8_11_19/data.txt");
			int b=fr.read();
			while(b!=-1) {
				System.out.print((char) b);
				b = fr.read();
			}
			fr.close();
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}

}

Question2

import java.io.FileReader;
import java.io.FileWriter;

public class question2 {
	public static void main(String[] args) {
		try {
			FileReader fr = new FileReader("/Users/apple/eclipse-workspace/test8_11_19/data.txt");
			FileWriter fw = new FileWriter("textCopy.txt");
			int b = fr.read();
			while (b != -1) {//读取文件,一边输出内容
				fw.write(b);
				b = fr.read();
			}
			fr.close();
			fw.close();
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}
}

Question3

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;

public class question3 {

	public static void main(String[] args) {
		File f = new File("/Users/apple/eclipse-workspace/test8_11_19/temp.txt");
		try {
			BufferedReader br=new BufferedReader(new FileReader("/Users/apple/eclipse-workspace/test8_11_19/src/ReadExample.java"));
			String t=null;
			StringBuffer sb=new StringBuffer();
			int num=1;
			while((t=br.readLine())!=null) {
				t=num+" "+t;
				System.out.println(t);
				num++;
				sb.append(t+"\r\n");
			}
			FileOutputStream fo=new FileOutputStream(f);
			fo.write(sb.toString().getBytes());
		}
		catch(FileNotFoundException e) {
			e.printStackTrace();
		}
		catch (IOException e) {
			e.printStackTrace();
		}
	}

}

Question4

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;

public class question4 {

	public static void main(String[] args) {
		File f=new File("/Users/apple/eclipse-workspace/test8_11_19/targetFile.txt");
		try {
			BufferedReader br1=new BufferedReader(new FileReader("/Users/apple/eclipse-workspace/test8_11_19/TextOne.txt"));
			BufferedReader br2=new BufferedReader(new FileReader("/Users/apple/eclipse-workspace/test8_11_19/TextTwo.txt"));
			String t=null;
			StringBuffer sb=new StringBuffer();
			while((t=br1.readLine())!=null) {
				sb.append(t+"\r\n");
			}
			while((t=br2.readLine())!=null) {
				sb.append(t+"\r\n");
			}
			FileOutputStream fo=new FileOutputStream(f);
			fo.write(sb.toString().getBytes());
		}
		catch(FileNotFoundException e) {
			e.printStackTrace();
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}

}

Question5

import java.io.File;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;

public class question5 {

	public static void main(String[] args) {
		File f=new File("/Users/apple/eclipse-workspace/test8_11_19/targetFile.txt");
		try {
			RandomAccessFile raf=new RandomAccessFile(f,"r");
			StringBuffer sb=new StringBuffer();
			long len=raf.length();
			while(len>0) {
				len--;
				//设置在那个位置发生下一个读取或写入操作
				raf.seek(len);
				int len1 = (char) raf.readByte();
				if(0 <= len1 && len1 <= 128){
					sb.append((char)len1);
				}else{
					len--;
					raf.seek(--len);
					byte[] bytes = new byte[3];
					// bytes被复制为连续3个字节
					raf.readFully(bytes);
					sb.append(new String(bytes));
				}
			}
			System.out.println(sb.toString());
			raf.close();
		}
		catch(FileNotFoundException e) {
			e.printStackTrace();
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}

}

Question6

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Scanner;

public class question6 {

	public static void main(String[] args) {
		File f=new File("/Users/apple/eclipse-workspace/test8_11_19/grade.txt");
		File fout=new File("/Users/apple/eclipse-workspace/test8_11_19/grade_test.txt");
		try {
			Scanner s=new Scanner(f);
			int len=s.nextInt();
			StringBuffer sb=new StringBuffer();
			double []sum= {0,0,0,0,0};
			double []average= {0,0,0,0,0};
			String []name=new String[len];
			int []a=new int[len];
			int []b=new int[len];
			int []c=new int[len];
			int []d=new int[len];
			int []e=new int[len];
			sb.append("name | chinese | english | math | computer | programing"+"\r\n");
			while(s.hasNext()) {
				for(int i=0;i<len;i++) {
					name[i]=s.next();
					a[i]=s.nextInt();
					sum[0]+=a[i];
					b[i]=s.nextInt();
					sum[1]+=b[i];
					c[i]=s.nextInt();
					sum[2]+=c[i];
					d[i]=s.nextInt();
					sum[3]+=d[i];
					e[i]=s.nextInt();
					sum[4]+=e[i];
					sb.append(name[i]+" "+a[i]+" "+b[i]+" "+c[i]+" "+d[i]+" "+e[i]+"\r\n");
				}
			}
			for(int i=0;i<5;i++) {
				average[i]=sum[i]/len;
				sb.append("第"+(i+1)+"门课程"+"sum="+sum[i]+"\r\n");
				sb.append("第"+(i+1)+"门课程"+"average="+average[i]+"\r\n");
			}
			System.out.println(sb.toString());
			FileOutputStream fo=new FileOutputStream(fout);
			fo.write(sb.toString().getBytes());
		}
		catch(FileNotFoundException e) {
			e.printStackTrace();
		}
		catch(Exception e) {
			e.printStackTrace();
		}
	}

}

Tips
需要的文件记得自行建立
Conclusion
基础实验,熟悉I/O流及文件类用法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值