另外参考文章:http://www.ibm.com/developerworks/cn/java/j-lo-javaio/

一. File类

file.createNewFile();file.delete();file.list();file.listFiles();file.isFile();file.isDirectory();file.mkdirs();

删除目录下所有文件:

public void deleteAllFiles(File file) {

  if (file.isFile() || file.list().length == 0) {

    file.delete();

  } else {

    File[] delFiles = file.listFiles();

    for (File delFile : delFiles) {

      deleteAllFiles(delFile);

      delFile.delete();

    }

  }

}

二. 流

流从结构上分为字节流(以字节为处理单位,可以处理二进制数据)和字符流(以字符为处理单位,无法处理二进制数据),它们的底层都是以字节流的方式来实现的

字节流的输入输出流基础是InputStream和OutputStream

字符流的输入输出流基础是Reader和Writer

InputStreamReader是字节流到字符流的桥梁。用于读文件,把文件中的字节读成字符。

OutputStreamWriter是字符流到字节流的桥梁。用于写文件,把字符以字节的形式写入文件。

Java.io体系结构:http://353588249-qq-com.iteye.com/blog/780343

读数据的流程:
open a stream
while more information
read information
close the stream

try {
  InputStream is = new FileInputStream(filePath + "//abc.txt");
  byte[] buff = new byte[200];

  try {
    // 标识每次实际读了多少字节
    int length;
    while (-1 != (length = is.read(buff, 0, 200))) {
      String str = new String(buff, 0, length);
      System.out.println(str);
    }
    is.close();
  } catch (Exception e) {
    e.printStackTrace();
  }
} catch (FileNotFoundException e) {
  e.printStackTrace();
}

写数据的流程
open a stream
while more information
write information
close the stream

String content = "hello world";
// flag用于标识是否在文件内容后再添加内容还是覆盖原有内容,flag=true不覆盖,否则覆盖
OutputStream os = new FileOutputStream(filePath + "//abc.txt", boolean flag);
os.write(content.getBytes());
os.close();

OutputStream os = new FileOutputStream("file.txt");

Writer writer = new OutputStreamWriter(os);

BufferedWriter bw = new BufferedWriter(writer);

bw.write("www.baidu.com");

bw.write("\n");

bw.write("www.qq.com");

bw.close();

InputStream is = new FileInputStream("file.txt");

Reader r = new InputStreamReader(is);

BufferedReader br = new BufferedReader(r);

String str = br.readLine();

while (null != str) {

  System.out.println(str);

  str = br.readLine();

}

br.close();

FileReader = new InputStreamReader(FileInputStream);

FileWriter = new OutputStreamWriter(FileOutputStream);

Serializable

package io;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.Serializable;

public class SerializableTest {

  public static void main(String[] args) throws Exception {
    Person p1 = new Person(10, "person1", 1.5);
    Person p2 = new Person(20, "person2", 1.6);
    Person p3 = new Person(30, "person3", 1.7);

    OutputStream os = new FileOutputStream("person.dat");
    ObjectOutputStream oos = new ObjectOutputStream(os);
    oos.writeObject(p1);
    oos.writeObject(p2);
    oos.writeObject(p3);

    oos.close();

    InputStream is = new FileInputStream("person.dat");
    ObjectInputStream ois = new ObjectInputStream(is);
    Person p;
    for (int i = 0; i < 3; i++) {
      p = (Person) ois.readObject();
      System.out.println(p.name + ", " + p.age + ", " + p.height);
    }

    ois.close();
  }
}

class Person implements Serializable {
  private static final long serialVersionUID = -6460642520310614043L;

  int age;
  String name;
  double height;

  public Person(int age, String name, double height) {
    this.age = age;
    this.name = name;
    this.height = height;
  }
}

Java NIO:参考:http://tutorials.jenkov.com/java-nio/index.html

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;

public class CopyFile {
  public static void main(String[] args) throws Exception {
    String infile = "CopyFile.java";
    String outfile = "CopyFile.txt";
    FileInputStream fin = new FileInputStream(infile);
    FileOutputStream fout = new FileOutputStream(outfile);

    // read data from a channel into a buffer
    FileChannel inChannel = fin.getChannel();
    // write data from a buffer into a channel(Read data out of the Buffer)
    FileChannel outChannel = fout.getChannel();

    ByteBuffer buffer = ByteBuffer.allocate(1024);
    while (true) {
      buffer.clear();
      // read data into buffer
      int r = inChannel.read(buffer);
      if (-1 == r) {
        break;
      }
      buffer.flip();
      // write data from buffer
      outChannel.write(buffer);
    }
    inChannel.close();
    outChannel.close();
    fin.close();
    fout.close();
  }
}

JavaIO 总结的更多相关文章

  1. JavaIO学习笔记(五)

    JavaIO前期准备 什么是同步 指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪 什么是异步 异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO ...

  2. javaIO系统----再看装饰者模式

    javaIO系统拥有各种各样的类,尤其是每次要进行读写操作时,总会一层套一层的new,以前不明白为什么要这样做,不过学习了适配器模式后,对于这种做法立刻了解了:动态扩展IO的功能,使之符合使用者的习惯 ...

  3. Java学习日记之 Java-IO流

    Java中的IO流在处理上分为字节流和字符流.字节流和字符流的区别 : 1.字节流读取的时候,读到一个字节就返回一个字节:  字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8 ...

  4. javaIO框架小析

    IO即数据读写.数据是应用的中心要素,而数据读写的能力和可扩展性是编程平台的基础支撑. 概念框架 方式: 字节流 Byte 和 字符流 Char 方向: 输入 Input 和 输出 Output : ...

  5. javaIO流实现读写txt文件

    javaIO流实现文件读写 文件写入: InputStreamReader BufferedReader 文件读取: FileOutputStream package javatest.basic22 ...

  6. javaIO操作之字节输出流--OutputStream

    OutputStream /** * <li>输出单个字节:public abstract void write(int b) throws IOException ; * <li& ...

  7. [零] JavaIO入门简介 程序设计语言 为什么需要IO库

     本文旨在引申出来Java IO的概念含义,作为学习JavaIO一个起步的了解知识点 部分内容引自<计算机操作系统第三版>  操作系统的文件管理   "在现代计算机系统中,要用到 ...

  8. [三]JavaIO之IO体系类整体设计思路 流的概念以及四大基础分类

    从本文开始,将正式进入JavaIO的简介 在继续javaIO系列的文章之前 可以过去看一下 本人博客上的设计模式中的 适配器模式和装饰器模式 这会对接下来的阅读大有帮助   本文是从逻辑上介绍整个的J ...

  9. [四] JavaIO之类层次体系结构横向比对

      IO家族类层次体系结构横向匹配   上一篇文章中主要介绍了JavaIO流家族的整体设计思路,简单回顾下 基本逻辑涉及数据源 流的方向,以及流的数据形式这三个部分的组合 按照流的数据形式和流的方向, ...

  10. [七]JavaIO之 PipedInputStream 和 PipedInputStream

    管道简介

随机推荐

  1. Yii2 给iOS App写推送的接口

    public function actionApns() { //手机注册时候返回的设备号,在xcode中输出的,复制过来去掉空格 $deviceToken = '7217a01836349b194b ...

  2. LeetCode第七天

    ==数组 Medium== 40.(162)Find Peak Element JAVA //斜率思想,二分法 class Solution { public int findPeakElement( ...

  3. Photoshop CC 常用快捷方法有哪些?

    Photoshop CC 常用快捷方法有哪些? 属性栏 工具栏 控制面板 绘图区 1. 多个图层如何快速居中? 在 控制面板 中选中多个图层创建 链接图层 在 工具栏 选择 移动工具 在 属性栏 点击 ...

  4. CodeForces-749A

    要求组成n的素数最多,根据n的奇偶讨论:如果n是偶数,直接打印n/2个数字'2'就可以了:如果n是基数,则先打印一个'3',再打印(n-3)/2个数字'2'就可以了. AC代码: #include&l ...

  5. spring oauth2 ,spring security整合oauth2.0 JdbcTokenStore实现 解决url-pattern .do .action

    参考以下两个文章: http://www.cnblogs.com/0201zcr/p/5328847.html http://wwwcomy.iteye.com/blog/2230265 web.xm ...

  6. Redis笔记4-持久化方案

    一:快照模式 默认redis是会以快照的形式将数据持久化到磁盘的(一个二进制文件,dump.rdb,这个文件名字可以指定),在配置文件中的格式是:save N M表示在N秒之内,redis至少发生M次 ...

  7. WireShark过滤解析HTTP/TCP

    过滤器的使用: 可利用“&&”(表示“与”)和“||”(表示“或”)来组合使用多个限制规则, 比如“(http && ip.dst == 64.233.189.104) ...

  8. c#获取文件MD5算法

    //获取文件MD5算法 private static string GetMD5FromFile(string fileName) { try { FileStream file = new File ...

  9. 4.1 PCIe总线的基础知识

    与PCI总线不同,PCIe总线使用端到端的连接方式,在一条PCIe链路的两端只能各连接一个设备,这两个设备互为是数据发送端和数据接收端.PCIe总线除了总线链路外,还具有多个层次,发送端发送数据时将通 ...

  10. Android中Java和JavaScript交互

    Android提供了一个很强大的WebView控件用来处理Web网页,而在网页中,JavaScript又是一个很举足轻重的脚本.本文将介绍如何实现Java代码和Javascript代码的相互调用. 如 ...