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. TUXEDO错误解决方案

    错误1: root@tfjus:/opt/tuxedo/simpapp# buildclient -f simpcl.c -o simpcl simpcl.c: In function 'main': ...

  2. 【转】Eclipse Java注释模板设置详解

    Eclipse Java注释模板设置详解   设置注释模板的入口: Window->Preference->Java->Code Style->Code Template 然后 ...

  3. git push提示或错误

    当 git 和 gerrit 一起使用的时候,你创建了一个 tag,现在需要 push 到远程仓库,当你没有权限的时候,会出现如下提示: $ git push origin v20150203 Tot ...

  4. Android 怎样使用API

    本文针对Android开发如何使用API文档进行一些经验分享. 1.为什么需要掌握API的使用. 也许你需要完成一个功能时很多时候你在网上google一番,因为很可能找到有用的代码片段,甚至不用关心具 ...

  5. Android平台调用WebService详解

    上篇文章已经对Web Service及其相关知识进行了介绍(Android开发之WebService介绍 ),相信有的朋友已经忍耐不住想试试在Android应用中调用Web Service.本文将通过 ...

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

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

  7. RPi 2B Documentation

    /********************************************************************** * RPi 2B Documentation * 声明: ...

  8. chrome 远程调试(转)

    http://www.tuicool.com/articles/ZJfeAzi 由于 appspot.com被墙,一般调试不成功. 随着智能手机的普及,移动设备的浏览器功能越来越强大,我们用手机上网时 ...

  9. python - 回溯继承树 - 自己实现

    # -*- coding: utf-8 -*- class test(object): pass class test1(test): pass class test2(test1): pass pr ...

  10. Oracle AWR报告自动生成并ftp脚本

    脚本主要由以下几个部分组成: awr.sql 用来在sqlplus 中执行的脚本,该脚本从网上直接找的. awr.sh 用来调用sqlplus来生成awr报告. ftp.sh 用来打包压缩每天生成的a ...