实验四学习日记
- 1. 编程实现:使用Java语言提供的的输入、输出处理功能将一个文本文件的内容按行读出,每读出一行就顺序添加行号,并输出到控制台。从控制台输入文件名称。
- 2.(选做)使用RandomAccessFile流将一个文本文件倒置读出。
- 3. 分别使用带缓冲区的字节流和字符流拷贝一个文本文件的内容。要求: (1) 使用FileInputStream、FileOutputStream和FileReader、FileWriter分别拷贝;(2) 使用字节流时,定义一个1024长度的字节数组,使用字符流时,使用BufferedReader和BufferedWriter。
- 4.利用面向对象的设计思想,创建学生类,学生信息包括:学号、姓名、出生日期。编写程序实现下列功能:(1) 把表4-1中的学生信息写入到文件中,要求每个学生信息的学号、姓名、出生日期之间用逗号隔开,其对应的文本文件中的信息格式如图4-1所示
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();
}
}