JAVA实验报告五
1.利用BufferedReader、BufferedWriter等流类的相关方法,编程实现如下功能:
(1)把字符串“C”、“C++”、“Java”分三行写入文本文件A.txt;
(2)从A.txt中读出字符串,分行输出;
(3)编写main方法,测试上述代码的功能。
2.利用文件流的相关操作,编程实现如下功能:
(1)输出C:\Windows\System32\drivers\etc目录下的文件数目;
(2)统计并输出每个文件拥有文本的行数;
(3)编写main方法,测试上述代码的功能。
算法设计思想与算法实现步骤
1、新建Example5_1类,类中建立main函数,函数体中分别创建三个方法question1_1();question1_2();question2();
2、在question1_1中,首先定义三个字符串数组,将题目中的值赋给各数组,先创建一个文件A.txt,然后用FileOutputStream输出流对A.txt文件写入题目要我们写入的内容,并关闭流,若成功,则输出success,失败则输出error;
3、在question1_2中,先创建File类对象file,然后用FileReader通过向BufferReader传递一个Reader子类的对象来创建一个BufferReader对象,定义字符串S为空,然后inTwo流调用readLine()方法读取A.txt,并且进行分行输出,关闭inOne和inTwo流;若失败则输出error。
4、在question2中,定义int型count,字符串filester并各自赋值,创建File类对象file,创建File类数组str用来存放file调用listFile()返回的文件对象,然后对str中的每个对象调用isFile()方法判断是否是文本文件,并计数输出;
在外层使用for循环对每个文本文件遍历行数,在内层创建FileReader类的对象和BufferReader类的对象,并设置行数n,分别读每个文本文件计算行数。并输出文件总数,以及每个文件的路径及行数。
package 实验报告5;
import java.io.*;
public class Example5_1 {
public static void main(String[] args) {
question1_1();
question1_2();
question2();
}
private static void question1_1() {
byte[] a="C\r\n".getBytes(),b="C++\r\n".getBytes(),c="Java".getBytes();
try {
FileOutputStream out=new FileOutputStream("F:\\JAVA\\实验报告\\实验报告5\\A.txt");
out.write(a);
out.write(b);
out.write(c);
System.out.println("success");
out.close();
}
catch(Exception e) {
System.out.println("error");
}
}
private static void question1_2() {
File file=new File("F:\\JAVA\\实验报告\\实验报告5\\A.txt");
try {
FileReader inOne=new FileReader(file);
BufferedReader inTwo=new BufferedReader(inOne);
String s=null;
int h=1;
while((s=inTwo.readLine())!=null) {
System.out.print(s);
if(h<3) {
System.out.println("");
}
h++;
}
System.out.println("");
inOne.close();
inTwo.close();
}
catch(IOException e) {
System.out.println("error");
}
}
private static void question2() {
try {
int count=0;
String filestr="C:\\Windows\\System32\\drivers\\etc";
File file=new File(filestr);
File[] listfile=file.listFiles();
for(int i=0;i<listfile.length;i++) {
if(!listfile[i].isDirectory()) {
String temp=listfile[i].toString().substring(7,listfile[i].toString().length()) ;
System.out.println("temp=》"+temp);
System.out.println("文件"+count+"——path="+listfile[i]);
int n=0;
FileReader inOne=new FileReader(listfile[i]);
BufferedReader inTwo=new BufferedReader(inOne);
while(inTwo.readLine()!=null) {
n++;
}
count++;
int m=i+1;
System.out.println("*******************************************");
System.out.println("文件"+m+":文本行数:"+n+"行");
inOne.close();
inTwo.close();
}
}
System.out.println("共有"+count+"个文件");
}
catch(IOException e) {
System.out.println("Error");
}
}
}