/*
使用FileReader读取文件中的内容
FileReader读取的时候,会使用idea平台默认编码方式去读取,而平台默认的编码是UTF-8
但是我们要读取的文件采用的是gbk编码,此时编码不一致,就产生了乱码。
我们可以想办法指定编码进行读写, 指定编码就可以使用转换流
*/
public class Demo01FileReader {
public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("E:\\就业班代码\\file01.txt");
while (fr.read() != -1) {
System.out.println((char) fr.read());
}
fr.close();//释放资源
}
}
InputStreamReader 是转换流,是字节流向字符的桥梁。
将文件中的内容读取到Java程序中。
所有的数据在文件中保存的都是字节。
如果读取到java程序中,那么我们看到的就是字符
InputStreamReader的作用是可以指定编码进行读取。
其实InputStreamReader本身也不具备读的功能,它的功能查询码表以及转码。
构造方法:
InputStreamReader(InputStream in): 传递一个字节输入流。
并且这个构造方法创建出来的对象会采用默认编码方式进行读取。
InputStreamReader(InputStream in, String charsetName):
还需要传递一个字符串charsetName。这个表示采用哪个编码方式进行读取。
使用步骤:
1. 创建转换流对象,用来读取,并且指定一个编码方式。
2. 调用方法,进行读取。
3. 释放资源
*/
public class Demo02InputStreamReader {
public static void main(String[] args) throws IOException {
readGbk();
}
// InputStreamReader(InputStream in, String charsetName)传递一个字节输入流:还需要传递一个字符串charsetName。这个表示采用哪个编码方式进行读取。
public static void readUtf8() throws IOException {
//创建InputStreamReader 对象,传递一个字节输入流
//创建一个字节输入流对象,传参进转换流
FileInputStream fis = new FileInputStream("file01.txt");
InputStreamReader ir = new InputStreamReader(fis, "utf8");
//调用方法,进行读取
/* while(ir.read()!=-1)//此处不用变量接收的话会丢失{你,今,早做发嘛
{ int len=ir.read();//好你天上头了 空
System.out.print((char) len);//字节码转换为字符
}*/
int len;
while ((len = ir.read()) != -1) {
System.out.print((char) len);
}
}
public class Demo03OutputStreanWriter {
/* OutputStreamWriter也是转换流, 是字符通向字节的桥梁。
OutputStreamWriter可以指定编码进行写入。
构造方法:
OutputStreamWriter(OutputStream out): 使用默认的编码方式进行写入
OutputStreamWriter(OutputStream out, String charsetName): 指定编码方式进行写入。
使用步骤:
1. 创建一个OutputStreamWriter,并且指定一个编码方式
2. 调用write方法,进行写入
3. 释放资源
*/
public static void main(String[] args) throws IOException {
//向文件写入UTF-8编码的数据
//1创建转换输出流对象OutputstreamWriter
//创建输出流对象作为参数传入转换流
FileOutputStream fos = new FileOutputStream("fiel01.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "utf8");
//写入数据
osw.write("中国");
osw.flush();
osw.write(22);
osw.flush();
osw.write(11);
osw.flush();
osw.close();
method();
}
public static void method() throws IOException {
FileOutputStream fos = new FileOutputStream("fiel01.txt");
OutputStreamWriter osw = new OutputStreamWriter(fos, "gbk");
//写入数据
osw.write("中国");
osw.flush();
osw.write(22);
osw.flush();
osw.write(11);
osw.flush();
osw.close();
}
}