字符流写数据的5种方式
字符流写数据,案例1
一次写一个字符
package demo3;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
/**
* Created with IntelliJ IDEA.
*
* @Author: 从南到北
* @Date: 12/20/2021/15:09
* @Description:
*/
public class OutputStreamWriterDemo {
public static void main(String[] args) throws IOException {
//字符流写数据不能直接写进文件中,会先放到缓存区中,最终需要通过字节流写,需要用flush()刷新流
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("SocketXml\\src\\student.owl"));
osw.write(97); //写一个字符
osw.flush(); //刷新流
osw.write(98);
osw.flush();
osw.write(99);
osw.write("\n字符流,输出流,写数据\n");
osw.write("字符流,输出流,写数据");
osw.close();
}
}
字符流写数据,案例2
OutputStreamWriter
剩余的四种方法
package demo3;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
public class OutputStreamWriterDemo2 {
public static void main(String[] args) throws IOException {
//字符流写数据不能直接写进文件中,会先放到缓存区中,最终需要通过字节流写,需要用flush()刷新流
//OutputStreamWriter(OutputStream out):创建一个使用默认字符编码的OutputStreamWriter
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("SocketXml\\src\\student.owl"));
//方法二:void write(char[] cbuf):写入一个字符数组
char[] chs = {'a', 'b', 'c', 'd', 'e'};
// osw.write(chs);
//方法三:void write(char[] cbuf, int off, int len):写入字符数组的一部分
// osw.write(chs, 0, chs.length);
// osw.write(chs, 1, 3);
//方法四:void write(String str):写一个字符串
// osw.write("abcde");
//方法五:void write(String str, int off, int len):写一个字符串的一部分
// osw.write("abcde", 0, "abcde".length());
osw.write("abcde", 1, 3);
//释放资源
osw.close();
//Exception in thread "main" java.io.IOException: Stream closed
// osw.write(100);
}
}
字符流读数据的2种方式
InputStreamReader
package demo3;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputStreamReaderDemo {
public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("SocketXml\\src\\student.owl"));
// 第一种方式:
// int read():一次读一个字符数据
int ch;
while((ch=isr.read())!=-1){
System.out.print((char)ch);
}
isr.close();
//第二种方式:
// int read(char[] cbuf):一次读一个字符数组数据
// char[] chs=new char[1024];
// int len;
// while((len =isr.read(chs))!=-1){
// System.out.println(new String(chs,0,len));
// }
isr.close();
}
}
之后,如果还想提高效率,就得用字符缓冲流了,字符缓冲流不会进行任何读写,只是提供一个容器
关于字符缓冲流的教程
参考下一篇博客: