package FileT.Day4;
/**
* @author CCQ
* 构造方法有两个参数,一个是字节流对象,一个是字符串类型的编码格式。可以只写字节流对象
*
* void close()
* 关闭该流并释放与之关联的所有资源。
* String getEncoding()
* 返回此流使用的字符编码的名称。
* int read()
* 读取单个字符。
* int read(char[] cbuf, int offset, int length)
* 将字符读入数组中的某一部分。
* boolean ready()
* 判断此流是否已经准备好用于读取。
*/
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputStreamReadTest {
public static void main(String[] args) throws IOException {
InputStreamReader isr =new InputStreamReader(new FileInputStream("fox.txt"));
System.out.println(isr.getEncoding());
System.out.println(isr.ready());
int ch;
while ((ch =isr.read())!=-1){
System.out.print((char)ch);
}
int len;
char[] chars =new char[1024];
while ((len =isr.read(chars))!=-1){
System.out.println(new String(chars,0,len));
}
isr.close();
}
}
package FileT.Day4;
/**
* @author CCQ
* 构造方法有两个参数,一个是字节流对象,一个是字符串类型的编码格式。可以只写字节流对象
*
* void close()
* 关闭此流,但要先刷新它。
* void flush()
* 刷新该流的缓冲。
* String getEncoding()
* 返回此流使用的字符编码的名称。
* void write(char[] cbuf, int off, int len)
* 写入字符数组的某一部分。
* void write(int c)
* 写入单个字符。
* void write(String str, int off, int len)
* 写入字符串的某一部分。
*/
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class OutputStreamWriterTest {
public static void main(String[] args) throws IOException {
OutputStreamWriter osw =new OutputStreamWriter(new FileOutputStream("fox.txt"));
System.out.println(osw.getEncoding());
osw.write('c');
osw.write(new char[]{'a','b','c','d'});
osw.write("大傻逼");
osw.flush();
osw.write("你是大傻逼吗",0,5);
osw.close();
}
}
字符流的编码:
package FileT.Day4;
/**
* 字符流的编码
*/
import java.io.*;
public class InOutStreamRWTest {
public static void main(String[] args) throws IOException {
OutputStreamWriter os =new OutputStreamWriter(new FileOutputStream("fox.txt"));
os.write("朱雀");
os.write("终麦");
os.close();
OutputStreamWriter os2 =new OutputStreamWriter(new FileOutputStream("fox.txt"),"GBK");
os2.write("C国");
os2.write("愚蠢");
os2.close();
InputStreamReader is =new InputStreamReader(new FileInputStream("fox.txt"),"GBK");
int ch;
while ((ch =is.read())!=-1){
System.out.println((char)ch);
}
is.close();
InputStreamReader is1 =new InputStreamReader(new FileInputStream("fox.txt"),"GBK");
char[] chars =new char[1024];
int len;
while ((len =is1.read(chars,0,chars.length))!=-1){
System.out.println(new String(chars,0,len));
}
}
}
小demo:
package FileT.Day4;
/**
* 字符流不能像字节流那样什么文件都可以复制
* 例如音像音频什么的都不能
* 以下例子是失败的,因为传输的是图片
*/
import java.io.*;
public class Copydemo {
public static void main(String[] args) throws IOException {
InputStreamReader isr =new InputStreamReader(new FileInputStream("D:\\picture\\捕获1.PNG"));
OutputStreamWriter osw =new OutputStreamWriter(new FileOutputStream("D:\\picture\\J.PNG"));
char[] chars =new char[1024];
int len;
while ((len =isr.read(chars,0,chars.length))!=-1){
osw.write(chars,0,len);
}
isr.close();
osw.close();
}
}