第十周课程总结

第十周课程总结

流的分类

1.Java的字节流
   InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。
2.Java的字符流
  Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。
InputStream,OutputStream,Reader,writer都是抽象类。所以不能直接new 

字节流

1、当把数据传到程序中的操作叫输入,用InputStream类。
2、当把数据从程序中传出的操作叫输出,用OutputStream类。

字符流

1、字符输出流:Writer。
2、字符输入流:Reader。

字节-字符转换流

OutputStreamWriter和InputStreamReader
在整个IO包中,实际上就是字节流和字符流,但是除了这两个流之外,还存在一组字节流-字符流的转换类。
•OutputStreamWriter:是Writer的子类,将输出的字符流转换为字节流。即:将一个字节流的输出对象变为字节流的输出对象  
•InputStreamReader:是Reader的子类,将输入的字节流变为字符流,即:将一个字节流的输入对象变为字符流的输入对象。
在构造方法中,如果将append的值设置为true,则表示在文件的末尾追加内容。
文件中换行为:
。

FileInputStream 常用的构造方法主要有如下两种重载形式。

FileInputStream(File file):通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
FileInputStream(String name):通过打开一个到实际文件的链接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。

1 、要格式化输出: PrintStream, PrintWriter

flush(): 刷新缓冲区
close(): 关闭流对象–>先刷新,再关闭

字节流与字符流的区别


字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的。

字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,
说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容。

转换流

OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字节,将字符串按照指定的编码表转成字节,在使用字节流将这些字节写出去。

字节--->字符 : 看不懂的--->看的懂的。  需要读。输入流。 InputStreamReader

字符--->字节 : 看的懂的--->看不懂的。  需要写。输出流。 OutputStreamWriter

内存流

字节数组:
ByteArrayInputStream
ByteArrayOutputStream

字符数组
CharArrayReader
CharArrayWriter


字符串
StringReader
StringWriter

管道流

PipedOutputStream和PipedInputStream分别是管道输出流和管道输入流。这个两个流必须同时使用。

打印流

 一:System类当中的方法: 
System.in;  标准的输入流: 默认是键盘录入
System.out; 标准的输出流: 默认是输出到控制台。 
  
System.setIn(InputStream in); 改变来源。 
System.setOut(PrintStream ps);  


二:PrintStrea PrintStream(File file) 
创建具有指定文件且不带自动行刷新的新打印流。 
PrintStream(File file, String csn)  
  
PrintStream(OutputStream out) ; 
PrintStream(OutputStream out, boolean autoFlush) ;自动刷新。 
 PrintStream(String fileName) 

把奇数位上的小写字符换成大写。

package 二;

import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

public class X {
	public static void main(String[]args)throws Exception{
        File f=new File("d:"+File.separator+"test.txt");
        OutputStream out=null;
        out =new FileOutputStream(f);
        String str="helloworld";
        byte a[]=str.getBytes();
        for(int i=0;i<a.length;i++) {
            if(i%2==0&&a[i]>='a'&&a[i]<='z') {
                a[i]=(byte)(a[i]-32);
            }
        }
        out.write(a);
        out.close();
    }

}

这个难度不大,以为老师已经讲过了,这题我是把老师讲过的输出奇数位上的字符,和把字符换成大写输出两个问题结合到一起了。

这就是我本周的学习内容总结。

原文地址:https://www.cnblogs.com/neir/p/11771753.html