最近老师给我们留了一个JAVA小实验,让键盘输入一些字符,然后写到一个自己建的文件里面,并且在显示器上显示文件里面的数据,要求在一个类里面实现。

    在做实验的过程中有一些思想我觉得很有用,为了避免以后碰到同样的问题时,可以查找,特此留下此比篇博文。这是我第一次写博文,(*^__^*) 嘻嘻……!实验源代码:

import java.io.*;


public class StreamTest{

public static void main(String args[]) throws IOException{

File outputFile = new File("a.txt");//创建文件

FileWriter out = new FileWriter(outputFile);//创建文件输出流

int c = 0;

String s=null;

while(c != '#'){//当输入的字符为'#'时,结束输入

try{

c = (int) System.in.read();//键盘输入字符

}catch(IOException e){//捕获IO异常

System.err.println(e);

}

out.write(c);//将输入的字符写入文件

}

out.close();//关闭文件输出流



LineNumberReader in = new LineNumberReader(new FileReader("a.txt"));

int c1 = 0;

int sum = 0;

do{

try{

s = in.readLine();//整行读入字符

System.out.println(s);//在显示器上输出字符串

}catch(Exception e1){

System.err.println("The IOException is:"+e1);

}

}while(s != null);

while(c1 != -1){

try{

c1 = in.read();

sum++;

}catch(IOException e1){}

}

System.out.println("the number of char is:"+sum);

System.out.println("the number of line is:"+in.getLineNumber());

in.close();

}

}


    起初我定义的变量 c 是char型,然后键盘输入后无法写进文件,我仔细查找字符文件流的write()方法,才知道write()方法里面的参数是int型,改过之后可以写入数据。


    在文件写入数据需要输出的时候,我发现总是输出null,后来仔细看了代码之后发现我把输出流的关闭和输入流的关闭都写在了方法的最后,这样导致在把数据输入文件后没有关闭流,直接读数据,相当于文件里面还是空的。在把out.close()方法写在输入流前面之后,文件里面的数据就能在显示器上显示了。