一、实验目的
1、了解流、输入/输出流的概念。
2、掌握常见的输入/输出流类及其主要方法。
3、掌握用I/O流实现文件读/写的方法。
二、实验内容
1.编写程序将从键盘上输入的一行内容写入到文件copyfile.txt中,文件的保存位置自己确定。
package OOP.work.Test7;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;
/*编写程序将从键盘上输入的一行内容写入到文件copyfile.txt中,文件的保存位置自己确定*/
public class T1 {
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
String s=scanner.nextLine();
try{
FileOutputStream fin=new FileOutputStream("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\work\\Test7\\copyfile.txt");//该路径 放在自己能找大的位置
fin.write(s.getBytes(StandardCharsets.UTF_8));
fin.close();
}catch (FileNotFoundException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2. 选择一个含有中文注释的.java文件,使用FileInputStream和FileReader分别读取文件,并把内容显示在控制台上。然后使用FileOutputStream和FileWriter将文件分别将文件复制到另一个文件copyfile1.txt和 copyfile2.txt中,文件的保存位置自己确定。
package OOP.work.Test7;
import java.io.*;
/*
选择一个含有中文注释的.java文件,
使用FileInputStream和FileReader分别读取文件,
并把内容显示在控制台上。
然后使用FileOutputStream和FileWriter
分别将文件复制到另一个文件copyfile1.txt和 copyfile2.txt中,
文件的保存位置自己确定。
*/
public class T2 {
public static void main(String[] args) {
int ch,rh;
System.out.println("FileInputStream 读取文件");
//FileInputStream 读取java文件
try{
FileInputStream fis=new FileInputStream("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\Self\\Z12_InputOutput\\RandomFile.java");
FileOutputStream fos=new FileOutputStream("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\work\\Test7\\copyfile1.txt");
while ((ch=fis.read())!=-1)//当n不等于-1,则代表未到末尾
fos.write(ch);
System.out.println(fos);
fis.close();
}catch (FileNotFoundException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("-----------------------------------------------------------------------------------------------");
System.out.println("FileReader 读取文件");
//FileReader 读取文件
try{
FileReader fr=new FileReader("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\Self\\Z12_InputOutput\\RandomFile.java");
FileWriter fw=new FileWriter("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\work\\Test7\\copyfile2.txt");
while ((rh=fr.read())!=-1)//当n不等于-1,则代表未到末尾
fw.write(rh);
fw.flush();//!!!!记得刷新一下,不然copyfile2文本,会得不到这些文字
System.out.println(fw);
fr.close();
}catch (FileNotFoundException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3.利用上机6中第3题 的Book类,创建10个相应的对象,写入到文件book2.dat中;再从文件book2.dat中读出copy到文件book3.dat中。
package OOP.work.Test7;
import OOP.work.Test6.T2.Book;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
/*
利用上机6中第3题 的Book类,
创建10个相应的对象,写入到文件book2.dat中;
再从文件book2.dat中读出copy到文件book3.dat中
*/
public class T3 {
public static void main(String[] args) throws IOException {
Book book1=new Book("01","java","一一");
Book book2=new Book("02","java1","一1一");
Book book3=new Book("03","java2","一22一");
Book book4=new Book("04","java3","一3一");
Book book5=new Book("05","java4","一4一");
Book book6=new Book("06","java5","一5一");
Book book7=new Book("07","java6","一6一");
Book book8=new Book("08","java7","一7一");
Book book9=new Book("09","java8","一88一");
Book book10=new Book("10","jav9a","一9一");
try{
FileOutputStream fout=new FileOutputStream("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\work\\Test7\\BOOK2.dat");
FileInputStream fin=new FileInputStream("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\work\\Test7\\BOOK2.dat");
ObjectOutputStream oout=new ObjectOutputStream(fout);
oout.writeObject(book1);
oout.writeObject(book2);
oout.writeObject(book3);
oout.writeObject(book4);
oout.writeObject(book5);
oout.writeObject(book6);
oout.writeObject(book7);
oout.writeObject(book8);
oout.writeObject(book9);
oout.writeObject(book10);
ObjectInputStream oin=new ObjectInputStream(fin);
FileOutputStream fout1=new FileOutputStream("D:\\ALL-ma\\KeDa\\JAVA\\src\\OOP\\work\\Test7\\BOOK3.dat");
ObjectOutputStream oout1=new ObjectOutputStream(fout1);
while (fin.available()>0){
book1 =(Book)oin.readObject();
System.out.println(book1.toString());
oout1.writeObject(book1);
}
oout.close();
oin.close();
oout1.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException eo){
eo.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}