Java IO (5) - 总结

0. 目录

  1. FileInputStream
  2. FileOutputStream
  3. FileReader
  4. FileWriter
  5. BufferedReader
  6. BufferedWriter
  7. InputStreamReader
  8. OutStreamWriter

1. FileInputStream

FileInputStream主要用来读取二进制数据,当然,也能读取文本文件。在读取文本文件时,通常用做InputStreamReader的输入。

	public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("d:/1234.txt");
byte[] b = new byte[100];
fis.read(b);
System.out.println(new String(b));
fis.close();
}

2. FileOutputStream

同FileInputStream一样,通常用来写二进制文件。

	public static void main(String[] args) throws IOException {
FileOutputStream fos = new FileOutputStream("d:/1234.txt", true);
String s = "今天是周五";
fos.write(s.getBytes());
fos.close();
}

3. FileReader

FileReader用来直接读取文件,其编码集是系统默认编码集,会出现乱码问题。

	public static void main(String[] args) throws IOException {
FileReader fr = new FileReader("d://1234.txt");
char[] cbuf = new char[100];
fr.read(cbuf);
System.out.println(new String(cbuf));
fr.close();
}

4. FileWriter

FileWriter和FileReader对应,也会出现乱码问题。FileWriter可以追加写。

	public static void main(String[] args) throws IOException {
FileWriter fw = new FileWriter("d:/1234.txt", true);
fw.append("你好");
fw.write("world");
fw.close();
}

5. BufferedReader

BufferedReader能够更有效的读文件,提供了readline这个方法,别的reader是没有的。不过BufferedReader需要传入一个Reader。

	public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new FileReader("d:/1234.txt"));
for (;;) {
String s = br.readLine();
if (s == null || s.equals("")) {
break;
}
System.out.println(s);
}
br.close();
}

6. BufferedWriter

BufferedWriter与BufferedReader对应,提供了writeline方法。BufferedWriter如果要追加写,需要用FileWriter。

	public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new FileWriter("d:/1234.txt",true));
bw.newLine();
bw.write("hahaha");
bw.close();
}

7. InputStreamReader

InputStreamReader用来处理编码问题,也是stream转为reader的桥梁。需要传入一个stream。

	public static void main(String[] args) throws IOException {
InputStreamReader isr = new InputStreamReader(new FileInputStream("d:/1234.txt"),"GBK");//UTF-8是乱码
char[] cbuf = new char[1024];
isr.read(cbuf);
System.out.println(new String(cbuf));
isr.close();
}

8. OutStreamWriter

OutStreamWriter同样处理写文件的乱码,与InputStreamReader对应。

	public static void main(String[] args) throws IOException {
OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(
"d:/1234.txt", true), "GBK");
osw.write("今天放假");
osw.close();
}

Java IO (5) - 总结的更多相关文章

  1. java.IO输入输出流:过滤流:buffer流和data流

    java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? ...

  2. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  3. Java IO之字符流和文件

    前面的博文介绍了字节流,那字符流又是什么流?从字面意思上看,字节流是面向字节的流,字符流是针对unicode编码的字符流,字符的单位一般比字节大,字节可以处理任何数据类型,通常在处理文本文件内容时,字 ...

  4. java Io流向指定文件输入内容

    package com.hp.io; import java.io.*; public class BufferedWriterTest{ public static void main(String ...

  5. java Io文件输入输出流 复制文件

    package com.hp.io; import java.io.FileInputStream; import java.io.FileNotFoundException; import java ...

  6. java Io流更新文件内容

    package com.hp.io; import java.io.FileOutputStream; import java.io.IOException; public class FileOut ...

  7. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  8. java.io.NotSerializableException: test.io.file.Student

    java.io.NotSerializableException: test.io.file.Student    at java.io.ObjectOutputStream.writeObject0 ...

  9. java.io.IOException: mark/reset not supported

    java.io.IOException: mark/reset not supported at java.io.InputStream.reset(InputStream.java:348) at ...

  10. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

随机推荐

  1. Android adb 常用技巧

    1.在命令行管理模拟器设备(AVD) list:列出机器上所有已经安装的Android版本和AVD设备 list avd:列出机器上所有已经安装的AVD设备: list target:列出机器上所有已 ...

  2. Fragment 和 FragmentActivity的使用(二)

      今天继续完成剩下的学习部分,现在项目很多地方使用viewpager来提供滑动,今天记录学习viewpager配合fragment的显示,增加一个CallLogsFragment配合之前SMSLis ...

  3. BootStrap图标

  4. Asp.Net读写XML简单方法

    xml文件 <?xml version="1.0" encoding="utf-8"?> <book> <title>web ...

  5. 浏览器检测是否安装flash插件,若没有安装,则弹出安装提示

    说白了其实就是在html中前途flash的使用代码 <!--    html嵌入flash,检测浏览器是否安装flash插件,并提示安装.-->    <object type=&q ...

  6. [反汇编练习] 160个CrackMe之002

    [反汇编练习] 160个CrackMe之002. 本系列文章的目的是从一个没有任何经验的新手的角度(其实就是我自己),一步步尝试将160个CrackMe全部破解,如果可以,通过任何方式写出一个类似于注 ...

  7. ffmpeg中swscale 的用法

    移植ffmpeg过程中,遇到swscale的用法问题,所以查到这篇文章.文章虽然已经过去很长时间,但是还有颇多可以借鉴之处.谢谢“咕咕鐘". 转自:http://guguclock.blog ...

  8. poj 3260 The Fewest Coins

    // 转载自http://blog.163.com/benz_/blog/static/18684203020115721917109/算法不难看出,就是一个无限背包+多重背包.问题在于背包的范围.设 ...

  9. lnmp脚本

    #!/bin/sh echo "欢迎使用 lnmp 脚本 (fanshengshuai@gmail.com) "; echo "增加资源..."; rpm -i ...

  10. 转载RabbitMQ入门(4)--路由

    路由 (使用Java客户端) 在先前的指南中,我们建立了一个简单的日志系统.我们可以将我们的日志信息广播到多个接收者. 在这部分的指南中,我们将要往其中添加一个功能-让仅仅订阅一个消息的子集成为可能. ...