*Java字符流总结:*
/*
名称:reader and writer
说明:这是输入流的抽象基类,它也是个字符流。所谓字符流就是系统会在字节流的基础上按照字符流所对应字节的长度进行提取。即在java中字符用两个字节表示,所以每次系统就会提取两个字节作为一个字符。在这里面用到了inputstreamreader相当于字节流变成字符流的中间的一个桥梁。对于此处的writer不知道为什么不能接收system.out的参数,即不能向屏幕中输出字符。对此不是很理解。
*/
//
package ByteStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
public class J_ReaderAndWirte
{
public void TestReader(Reader reader)
{
try
{
int c ;
char []b =new char[10];
reader.read(b);
System.out.println(b);
reader.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
J_ReadFromConsole re =new J_ReadFromConsole();
re.SCanner();
}
}
/*
* 名称:bufferedreader and bufferedwriter
* 说明:这两个都是字符流中的缓冲流,一般用法是可以用文件字符流作为参数,用于处理文件操作。和以前的一样,它的主要作用还是可以提高效率,避免多次进行I/O操作。同时bufferedreader还提供了readline();bufferedwriter提供了写入newline()方法。
*
*
*/
//////////////////////////
package ByteStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class J_BufferedReaderAndWriter
{
public void TestBufferedReaderAndWriter()
{
try
{
BufferedWriter bufferedWriter= new BufferedWriter(new FileWriter("test.txt"));
bufferedWriter.write("有志者,事竟成!");
bufferedWriter.newLine(); //写入行分割符
bufferedWriter.write("苦心人,天不负!");
bufferedWriter.newLine();
bufferedWriter.close();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
try
{
BufferedReader bufferedReader = new BufferedReader(new FileReader("test.txt"));
String string;
for(string =bufferedReader.readLine();string!=null; string =bufferedReader.readLine())
{
System.out.println(string);
}
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 名称:FilereaderAnd Filewriter
* 说明:此处的filereader是reader的子类,主要用于处理字符流的文件输入。但有点不理解的是在本例中和fileinputstream相比较最后输出的结果是相同的,而且它们循环的次数也是一样的。照理说,不应该filereader每次读出的是两个字,inputstream每次读出的是一个字节,怎么最后num还会是一样的呢???还有待商榷。对于filewriter,这是个文件的输出流,也是个字符流。基本用法和特点和filereader差不多,在此就不在赘述了。
*
*
*/
package ByteStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
public class J_FileReaderAndFileWriter
{
public void TestReader()
{
try
{
FileWriter f_out= new FileWriter("test.txt");
f_out.write("有志者,事竟成");
f_out.close();
FileReader f_in = new FileReader("test.txt");
int i;
int num = 0;
while((i =f_in.read() ) != -1)
{
System.out.print((char)i);
++num;
}
System.out.println("num1:" + num);
f_in.close();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}