龙空技术网

初识java—(五十二)转换流与缓冲流

IT研究僧 105

前言:

现时朋友们对“java 字符转整数”可能比较关心,咱们都想要了解一些“java 字符转整数”的相关文章。那么小编也在网络上收集了一些关于“java 字符转整数””的相关文章,希望同学们能喜欢,你们一起来了解一下吧!

转换流: InputStreamReader、OutputStreamWriter

输入/输出体系中提供了两个转换流InputStreamReader和OutputStreamWriter,这两个转换流用于实现将字节流转换成字符流,其中InputStreamReader将字节输入流转换成字符输入流,OutputStreamWriter将字节输出流转换成字符输出流。

但是没有把字符流转换成字节流的转换流。因为字符流和字节流的区别:字节流比字符流的使用范围更广,但字符流比字节流操作方便。如果有一个流已经是字符流了,也就是说,是一个用起来更方便的流,为什么要转换成字节流呢?反之,如果现在有一个字节流,但可以确定这个字节流的内容是文本内容,那么把它转换成字符流来处理就会更方便一些,所以Java只提供了将字节流转换成字符流的转换流,没有提供将字符流转换成字节流的转换流。

缓冲流:BufferedReader和BufferedWriter

BufferedReader和BufferedWriter类各拥有8192字符的缓冲区。当BufferedReader在读取文本文件时,会先尽量从文件中读入字符数据并置入缓冲区,而之后若使用read()方法,会先从缓冲区中进行读取。如果缓冲区数据不足,才会再从文件中读取,使用BufferedWriter时,写入的数据并不会先输出到目的地,而是先存储至缓冲区中。如果缓冲区中的数据满了,才会一次对目的地进行写出。如果要在缓冲区中数据未满的情况下将数据写入到目的地,需要使用flush()方法,将数据刷新一下。

举例1:

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

//System.in返回的是一个字节流的是对象,将字节流转换成一个字符流

InputStreamReader isr = new InputStreamReader(System.in);

//是否还有一种更好的流来处理字符流,答案是肯定的:缓冲流

BufferedReader br = new BufferedReader(isr);

//缓冲流可以将文本中的字符信息按一行来进行处理,即读取一行,写入一行,

//而不再需要定义一个数组来存放读取内容,读取内容时以换行符为标志,如果没有读取到换行符则程序阻塞,一直读取到换行符为止。

String line = null;//将所有信息写入到文件中去。后边的这个true代表着你是要追加进去,而不是替换BufferedWriter writer = new BufferedWriter(new FileWriter(new File("./abc/aa.txt"),true));while((line=br.readLine()) != null){if("exit".equals(line)){//停止写入,退出System.exit(1);}writer.write(line);//写入一行writer.newLine();//开辟新的一行//将内容从缓存中刷新出去,写入到目的地。writer.flush();}writer.close();br.close();}

举例2:

做下面这个题目 。第一行与第二行的和给三行,第二行与第三行的和给第四行,依次类推。

1+2=3 2+3 =5 3+5=8….

public static void main(String[] args){BufferedReader br = new BufferedReader(new FileReader(“./Sum.txt”));int num 1= Integer.parseInt(br.readLine().trim());int num 2= Integer.parseInt(br.readLine().trim());br.close();BufferedWriter bw = new BufferedWriter(new FileWriter(“./Sum.txt”,true));int result = 0;for(int i=0;i<5;i++){bw.newLine();result = num1+num2;bw.write(String.valueOf(result));num1 = num2;num2 = result;}bw.close();}
11.9打印流:PrintStream和PrintWriter

PrintStream的构造函数:

Ø public PrintStream(File file)

创建具有指定文件新打印流。

Ø public void print(Object obj)

这个方法功能是非常强大的,它可以输出任何对象,而不必另加说明。此外print()方法有许多重载形式,即有多种参数。它们是字符串(String)、字符数组(char[])、字符(char)、整数(int)、长整数(long)、浮点数(float)、双精度浮点数(double)、布尔值(boolean)。

public void println(Object obj)

此方法同上,区别在于打印之后追加一个换行符。

举例1:

public static void main(String[] args) throws Exception {//如果文件不存在,则将文件直接创建PrintStream ps = new PrintStream(new File("./abc/bb.txt"));//如果我想写入的内容是apend方式,我应该选择使用哪种的构造方法咧?//PrintStream ps = new PrintStream(new FileOutputStream(“./123.txt”,true));//看下面这两个方法的区别是什么?ps.write(97);ps.print(97);ps.close();}

PrintWriter是与字节流相对应的字符流。PrintWriter用于大多数输出,比PrintStream更为合适。建议新开发的代码使用PrintWriter类。 PrintWriter类与PrintStream类的方法是对应的。

举例2:

public static void main(String[] args) throws Exception {PrintWriter writer = new PrintWriter(new File("./abc/bb.txt"));writer.print("新的内容");writer.close();}

由于PrintStream类的输出功能非常强大,通常如果需要输出文本内容,都应该装饰输出流包装成PrintStram后进行输出。

标签: #java 字符转整数 #java字符替换成换行符