JAVA实验六文件的输入输出的应用
一、实验目的
1.掌握I/O输入输出流的使用。
2.掌握文件输入输出的使用。
二、实验编程内容
1.使用文件字符输出流将一段文字存入文件,然后使用输入流读取文件中的内容。
2.将字符串加密后写入文件,然后读取该文件,并解密。
3. 参考MSDOS方式下的COPY命令,编写一个应用程序实现文件的复制。使用格式:java Copy 源文件 目标文件,功能是将源文件的内容复制到目标文件。
4. 编写一个应用程序,要求将LinkedList<E>创建的对象写入文件,在读出一个LinkedList<E>节点中的数据。
5. 使用缓冲流读取试题文件,Test.txt如下:,每次显示试题文件中的一道题目。读取到字符“*”时候暂停读取,等待用户从键盘输入答案。用户做完全部题目后,程序给出用户的得分。用户运行结果如图:
(1)北京奥运是什么时间开幕的?
A.2008-08-08B. 2008-08-01
C.2008-10-01D.2008-07-08
********************
(2)下列哪个国家不属于亚洲?
A.沙特 B.印度C.巴西 D.越南
********************
(3)下列哪个国家最爱足球?
A.刚果 B.越南C.老挝 D.巴西
********************
(4)下列哪种动物属于猫科动物?
A.鬣狗 B.犀牛C.大象 D.狮子
********************
7.删除一个文件夹.
1.
package cn.edu.nefu.zhihu; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class IO1 { public static void main(String[] args) throws Exception { File f=new File("d:\\a"); f.mkdir();//建立一个文件夹 File f1=new File("d:\\a\\a.txt"); f1.createNewFile(); //建立一个文件 char a[]="Wecome to BeiJing!".toCharArray(); char b[]=new char[5]; FileWriter out=new FileWriter(f1);//创建文件字符输出流 out.write(a);//写入文件 out.close(); FileReader in=new FileReader(f1);//创建文件字符输入流 int n=0; while((n=in.read(b,0,2))!=-1){ //用字符流读到文件尾 String str=new String(b,0,n); System.out.print(str); } in.close(); } }
2.
package cn.edu.nefu.zhihu; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class IO3 { public static void main(String[] args) throws IOException{ File f=new File("d:\\a\\b.txt"); f.createNewFile(); String s="Welcome to JAVA!"; char a[]=s.toCharArray(); for(int i=0;i<a.length;i++){ a[i]=(char)(a[i]^'a'); } FileWriter out=new FileWriter(f); FileReader in=new FileReader(f); out.write(a); out.close(); int n; while((n=in.read(a,0,2))!=-1){ for(int i=0;i<n;i++){ a[i]=(char)(a[i]^'a'); } String str=new String(a,0,n); System.out.print(str); }System.out.println(); } }
3.
存在相应的路径和相应的文件,并且文件中有内容
package cn.edu.nefu.zhihu; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class IO4 { public static void main(String[] args) throws IOException { File writeFile=new File("D:\\a\\writeFile.txt"); writeFile.createNewFile(); FileReader inOne=new FileReader("D:\\a\\a.txt"); BufferedReader inTwo=new BufferedReader(inOne); FileWriter tofile=new FileWriter("D:\\a\\writeFile.txt"); BufferedWriter out=new BufferedWriter(tofile); String s=null; while((s=inTwo.readLine())!=null){ out.write(s); out.newLine(); } out.flush(); out.close(); tofile.close(); inOne=new FileReader("D:\\a\\writeFile.txt"); inTwo=new BufferedReader(inOne); while((s=inTwo.readLine())!=null){ System.out.println(s); } inOne.close(); inTwo.close(); } }
4.
package cn.edu.nefu.zhihu; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.Iterator; import java.util.LinkedList; public class Test2 { public static void main(String[] args) throws IOException, ClassNotFoundException{ LinkedList<Student> list=new LinkedList<Student>(); Student s1=new Student("Kary",99); Student s2=new Student("Jun",100); Student s3=new Student("Lili",87); list.add(s1); list.add(s2); list.add(s3); FileOutputStream file_out=new FileOutputStream("D:\\a.txt"); ObjectOutputStream object_out=new ObjectOutputStream(file_out); Iterator<Student> iter=list.iterator();//利用迭代器向文件中写入数据 while(iter.hasNext()){ Student it=iter.next(); object_out.writeObject(it); } object_out.close(); FileInputStream file_in=new FileInputStream("D:\\a.txt"); ObjectInputStream object_in=new ObjectInputStream(file_in); int size=list.size();//利用原来链表的规模从文件中读 System.out.println("The Size of List Is: "+size); Student ss; System.out.println("The List is:"); for(int i=0;i<size;i++){ ss=(Student)object_in.readObject(); System.out.println(ss.name+" "+ss.score); } object_in.close(); } }
5.
首先在代码所对应的绝对路径上建立存有相应内容发文件
代码实现:
package cn.edu.nefu.zhihu; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.util.Scanner; public class IO2 { public static void main(String []args){ Scanner inputAnswer=new Scanner(System.in);//键盘输入 int score=0; StringBuffer answer=new StringBuffer(); //用户输入的答案存放在可以更改的缓冲流中 String result="ACDD";//标准答案存放在字符常量区中 try{//其中含有异常,所以要进行try-catch FileReader inOne=new FileReader("d:\\test.txt");//路径的另外两种写法(D:/test.txt)或者(D/text.txt) BufferedReader inTwo=new BufferedReader(inOne); String s=null; while((s=inTwo.readLine())!=null){//读一行能够读到 if(s.startsWith("*")==false) //若不是以*开始的,直接输出题目要求即可 System.out.println(s); else { System.out.println("请输入选择的答案(A,B,C,D):"); String str=inputAnswer.nextLine(); try{ char c=str.charAt(0); answer.append(c); } catch(StringIndexOutOfBoundsException exp){ answer.append("*"); } } } inOne.close(); inTwo.close(); } catch(IOException exp){ } for(int i=0;i<result.length();i++){//匹配答案 if(result.charAt(i)==answer.charAt(i) || result.charAt(i)==answer.charAt(i)-32) score+=25; } System.out.printf("最终得分为:%d\n",score); } }
7.
在有指定路径的前提下,完成先创建后删除的工作
package cn.edu.nefu.zhihu; import java.io.File; import java.io.IOException; public class IO5 { static void dele(File star){ if(star.isFile()){ star.delete(); return; } File[]ll=star.listFiles(); if(star.isDirectory()&&ll.length!=0){ for(int i=0;i<ll.length;i++){ System.out.println(ll[i].getAbsolutePath()); dele(ll[i]); } } ll=star.listFiles(); if(star.isDirectory()&&(ll.length==0)){ System.out.println("文件夹"+star.getName()+"被删除!"); star.delete(); } } public static void main(String[] args) throws IOException{ File a,b,c,d; File div,div1,div2,div3,div4; div=new File("D:\\div"); div.mkdir(); a=new File("D:\\div\\a.txt"); a.createNewFile(); b=new File("D:\\div\\b.txt"); b.createNewFile(); div2=new File("D:\\div\\div2"); div2.mkdir(); c=new File("D:\\div\\div2\\c.txt"); c.createNewFile(); div3=new File("D:\\div\\div2\\div3"); div3.mkdir(); div4=new File("D:\\div\\div2\\div3\\div4"); div4.mkdir(); d=new File("D:\\div\\div2\\div3\\d.txt"); d.createNewFile(); File star=new File("D:\\div"); dele(star); File divk=new File("D:\\abcd"); divk.mkdir();//只删除一个文件夹 divk.delete(); } }