IO-转换流

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IO-转换流相关的知识,希望对你有一定的参考价值。

java.net.URL类:类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针
构造方法:
  URL(String spec)根据 String 表示形式创建 URL 对象。
方法:
  openStream():打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。
需求:使用的流获取www.baidu.com的主页源码,并将源码在控制台输出

public class TestInputStreamReader {
    public static void main(String[] args) {
        try {
            URL url = new URL("http://www.baidu.com");
            InputStream ips = url.openStream();//开到此 URL 的连接并返回一个用于从该连接读入的 InputStream
            InputStreamReader isr = new InputStreamReader(ips,"UTF-8"); //将字节流按照指编码转换成一个字符流
            BufferedReader br = new BufferedReader(isr);
            String str;
            while((str=br.readLine())!=null){
                System.out.println(str);
            }
            br.close();
            isr.close();
            ips.close();
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }
}

InputStream:字节输入流
Reader:字符输入流
转换流(处理流)
  InputStreamReader:将InputStream转换为Reader(将字节流转换为字符流),继承了Reader类
  构造函数:
    InputStreamReader(InputStream in) 创建一个使用默认字符集的 InputStreamReader。
    InputStreamReader(InputStream in, Charset cs) 创建使用给定字符集的 InputStreamReader。
  字符集:
    UTF-8,GBK,GB2312....
  常用的方法:
    read() 读取单个字符。
    read(char[] cbuf, int offset, int length) 将字符读入数组中的某一部分。
    close():关闭该流并释放与之关联的所有资源。
BufferedReader:
  readLine();
InputStream--->InputStreamReader--->BufferedReader
OutputStreamWriter:OutputStream---->Writer

public class TestInputStreamReader2 {
    public static void main(String[] args) {
        try {
            InputStream ips = new FileInputStream("D:/aa.txt");//字节输入流
//            InputStreamReader isr = new InputStreamReader(ips);//将字节流转换为字符流
            InputStreamReader isr = new InputStreamReader(ips,"GBK");//将字节流转换为字符流
            BufferedReader br =  new BufferedReader(isr);
            String s;
            while((s=br.readLine())!=null){
                System.out.println(s);
            }
            br.close();
            isr.close();
            ips.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

获取当前开发环境下的编码集

public class TestEncoding {
    public static void main(String[] args) {
        //获取当前开发环境下的编码集
        String str = System.getProperty("file.encoding");
        System.out.println(str);
    }
}

 

以上是关于IO-转换流的主要内容,如果未能解决你的问题,请参考以下文章

IO异常--缓冲流--转换流--序列化流( IO流2 )

Java-IO处理流

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_5_InputStreamReader介绍&代码实现

阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_08 转换流_4_OutputStreamWriter介绍&代码实现

IO流22 - 字符流 - 转换流OutputStreamWrite和InputStreamReader

IO流 写入转换流(写入和读取转换流的区别,考虑方向)