java常见的IO字节流/字符流操作

InputStream和OutputStream字节流操作File文件

File file = new File("C://Users//fchen//Desktop//EPL4398046700991_大报文.txt");
InputStream inputStream = new FileInputStream(file);
byte[] bytes = new byte[2048];
StringBuffer sb = new StringBuffer();
int len = 0;
while ((len = inputStream.read(bytes)) != -1){
    sb.append(new String(bytes, 0, len));
}
System.out.println(sb.toString());
inputStream.close();


OutputStream outputStream = new FileOutputStream("C://Users//fchen//Desktop//中报文.txt");

IOUtils.write(sb.toString().getBytes(), outputStream);
outputStream.flush();
outputStream.close();

BufferedInputStream和BufferedOutputStream字节流操作File文件(推荐)

File file = new File("C://Users//fchen//Desktop//EPL4398046700991_大报文.txt");
InputStream inputStream = new BufferedInputStream(new FileInputStream(file));
byte[] bytes = new byte[2048];
StringBuffer sb = new StringBuffer();
int len = 0;
while ((len = inputStream.read(bytes)) != -1){
    sb.append(new String(bytes, 0, len));
}
System.out.println(sb.toString());
inputStream.close();


OutputStream outputStream = new BufferedOutputStream(new FileOutputStream("C://Users//fchen//Desktop//中报文.txt"));

IOUtils.write(sb.toString().getBytes(), outputStream);
outputStream.flush();
outputStream.close();

InputStreamReader和outputStreamWriter字符流操作File

File file = new File("C://Users//fchen//Desktop//EPL4398046700991_大报文.txt");
InputStreamReader inputStreamReader = new InputStreamReader(new FileInputStream(file), "UTF-8");
char[] chars = new char[2048];
int len = 0;
StringBuffer sb = new StringBuffer();
while ((len = inputStreamReader.read(chars)) != -1) {
    sb.append(new String(chars, 0, len));
}
System.out.println(sb.toString());
inputStreamReader.close();


OutputStreamWriter outputStreamWriter = new OutputStreamWriter(new FileOutputStream("C://Users//fchen//Desktop//1报文.txt"), "utf-8");
outputStreamWriter.write(sb.toString().toCharArray());
outputStreamWriter.flush();
outputStreamWriter.close();

BufferedReader和BufferedWriter字符流操作File(推荐)

File file = new File("C://Users//fchen//Desktop//EPL4398046700991_大报文.txt");
BufferedReader inputStreamReader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
char[] chars = new char[2048];
int len = 0;
StringBuffer sb = new StringBuffer();
while ((len = inputStreamReader.read(chars)) != -1) {
    sb.append(new String(chars, 0, len));
}
System.out.println(sb.toString());
inputStreamReader.close();


BufferedWriter outputStreamWriter = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C://Users//fchen//Desktop//1报文.txt"), "utf-8"));
IOUtils.write(sb.toString().toCharArray(), outputStreamWriter);
//outputStreamWriter.write(sb.toString().toCharArray());
outputStreamWriter.flush();
outputStreamWriter.close();

Java IO 的一般使用原则 :

一、按数据来源(去向)分类:

  • 1 、是文件: FileInputStream, FileOutputStream, ( 字节流 )FileReader,
    FileWriter( 字符 )
  • 2 、是 byte[] : ByteArrayInputStream, ByteArrayOutputStream( 字节流 )
  • 3 、是 Char[]: CharArrayReader, CharArrayWriter( 字符流 )
  • 4 、是 String: StringBufferInputStream, StringBufferOuputStream ( 字节流
    )StringReader, StringWriter( 字符流 )
  • 5 、网络数据流: InputStream, OutputStream,( 字节流 ) Reader, Writer( 字符流 )

二、按是否格式化输出分:

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

三、按是否要缓冲分:

  • 1 、要缓冲: BufferedInputStream, BufferedOutputStream,( 字节流 )
    BufferedReader, BufferedWriter( 字符流 )

四、按数据格式分:

  • 1 、二进制格式(只要不能确定是纯文本的) : InputStream, OutputStream 及其所有带 Stream 结束的子类
  • 2 、纯文本格式(含纯英文与汉字或其他编码方式); Reader, Writer 及其所有带 Reader, Writer 的子类

五、按输入输出分:

  • 1 、输入: Reader, InputStream 类型的子类
  • 2 、输出: Writer, OutputStream 类型的子类

六、特殊需要:

  • 1 、从 Stream 到 Reader,Writer 的转换类: InputStreamReader,
    OutputStreamWriter
  • 2 、对象输入输出: ObjectInputStream, ObjectOutputStream
  • 3 、进程间通信: PipeInputStream, PipeOutputStream, PipeReader, PipeWriter
  • 4 、合并输入: SequenceInputStream
  • 5 、更特殊的需要: PushbackInputStream, PushbackReader,
    LineNumberInputStream, LineNumberReader
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值