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