实验四学习日记

1. 编程实现:使用Java语言提供的的输入、输出处理功能将一个文本文件的内容按行读出,每读出一行就顺序添加行号,并输出到控制台。从控制台输入文件名称。

package src4;
import java.io.*;
public class test1 {
 public static void main(String []args) throws FileNotFoundException, IOException
 { 
     int count=0;
     String str;
  try
  (
    FileReader file =new FileReader("D:/cqj/test1.txt");
    BufferedReader bfr =new BufferedReader(file);  //加入缓冲输入流进行读写
    )
  {
   while((str=bfr.readLine())!=null)        
   {
     count++;
    System.out.println(+count+"行");
    System.out.println(str);
   }
    File file1 = new File("D:/cqj/test1.txt");
    System.out.println("文件的名字" +file1.getName());
  }
 }
}

学到的内容:FileReader类和 BufferedReader的简单应用。

2.(选做)使用RandomAccessFile流将一个文本文件倒置读出。

kage src4;
import java.io.*;
public class test2 {
  public static void main(String []args) throws IOException
  {
   RandomAccessFile file =new RandomAccessFile("D:/cqj/test1.txt","r");
    long len =file.length();
    while(0!=len--)
    {
     file.seek(len);
     char ch =(char)file.read();
     System.out.print(ch);
    }
    file.close();
  }
}

学到的内容:RandomAccessFile类的seek方法设置文件指针位置 然后将其转化成字符读出.

3. 分别使用带缓冲区的字节流和字符流拷贝一个文本文件的内容。要求: (1) 使用FileInputStream、FileOutputStream和FileReader、FileWriter分别拷贝;(2) 使用字节流时,定义一个1024长度的字节数组,使用字符流时,使用BufferedReader和BufferedWriter。

package src4;
import java.io.*;
public class test3 {
 public static void main(String []args) throws IOException
 {
  /*带缓冲区的字节流拷贝一个文本文件
  FileInputStream fin =new FileInputStream("D:/cqj/test3.txt");
  FileOutputStream fout =new FileOutputStream("D:/cqj/test.txt");
  byte buf[] =new byte[2014];   //创建字节数组,作为临时缓冲
  if(fin.read(buf)!=-1)
  {
   fout.write(buf);
  }
  System.out.println("文件复制成功");
  fin.close();
  fout.close();
  */
  
  
  /*带缓冲区的字符流拷贝一个文本文件
  FileReader fin =new FileReader("D:/cqj/test3.txt");
  BufferedReader din=new BufferedReader(fin) ;
  FileWriter fou =new FileWriter("D:/cqj/test.txt");
  BufferedWriter dou =new BufferedWriter(fou);
  char c[]=new char[1024];  //创建字符数组
  din.read(c);
  fou.write(c);
  System.out.println("文件复制成功");
  din.close();
  fou.close();
  fin.close();
  dou.close();
  */
 }
}

学到的内容:利用两种流复制文本内容。

4.利用面向对象的设计思想,创建学生类,学生信息包括:学号、姓名、出生日期。编写程序实现下列功能:(1) 把表4-1中的学生信息写入到文件中,要求每个学生信息的学号、姓名、出生日期之间用逗号隔开,其对应的文本文件中的信息格式如图4-1所示

在这里插入图片描述
(2) 请读出把题(1)所示的文件的内容,并把读到的学生信息保存到List集合(ArrayList或者LinkedList)中,并使用遍历方式输出List集合的内容。

package src4;
import java.io.*;
import java.util.*;
import src.Student;
public class test5 {
  public static void main(String []args) throws IOException
  {
   List<Student> list = new ArrayList<Student>();
   FileReader fi=new FileReader("D:/cqj/test6.txt");
   BufferedReader di=new BufferedReader(fi);
   String str;
   while((str=di.readLine())!=null)
   {
  String ID =str.substring(0, 8);
  String name =str.substring(10,12);
  String birth =str.substring(13, str.length());
  list.add(new Student(ID,name,birth));
   }
   Iterator<Student> iter = list.iterator();
   while(iter.hasNext())
   {
     Student st =iter.next();
     System.out.println("学号:  "+st.id+"姓名:  "+st.name+"   生日:  "+st.birth);
   }
   di.close();
   fi.close();
  }
}
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值