IO流的分类

1、根据数据的流向:

  输入流:用来读数据,如从外界设备读数据到内存中;

  输出流:用来写数据,如从内存输出数据到外界存储设备;

2、根据数据流的格式:

  字节流:一般用于声音或者秃瓢等二进制数据流,如InputStream OutputStream;

  字符流:一般用于处理文本数据如(*.txt),比如InputStreamReader OutputStreamWriter;

3、根据数据流的构造函数区分包装流和原始流:

  包装流:在实例化流的时候需要传入另一个流作为自己构造函数的参数,如

      java.io.Reader reader = new InputStreamReader(new FileInputStream(inputFile), "utf-8");

      BufferedReader reader = new BufferedReader(new FileReader(inputFileName));

  原始流:在实例化流的时候不需要传入另一个流作为自己构造函数的参数,如

      InputStream is= new FileInputStream(inputFile);

1、按字节来读写文件(以字节来读写文件,一般用于读写二进制文件如图片、声音、影音等等)

     /**
* 字节读写文件
* @param inputFileName
* @param outPutFileName
*/
public static void readerAndWriteFileByBytes(String inputFileName,String outPutFileName){
File inputFile = new File(inputFileName);
File outputFile = new File(outPutFileName);
InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(inputFile);
os = new FileOutputStream(outputFile);
byte[] tempBytes = new byte[100];
int byteread = 0;
while((byteread = is.read(tempBytes))!=-1){
os.write(tempBytes, 0, byteread);
}
is.close();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("字节读写文件完成");
}

2、按字符来读写文件(以字符来读取文件,一般用于读写文本或数字类的文件)

 /**
* 按字符读取文件并写出到另一个文件(一次读取一个字符)
* @param inputFileName
* @param outPutFileName
*/
private static void readAndWriteFileByOneChar(String inputFileName,String outPutFileName) {
File inputFile = new File(inputFileName);
File outputFile = new File(outPutFileName);
Reader reader = null;
Writer writer = null;
try {
reader = new InputStreamReader(new FileInputStream(inputFile), "utf-8");
writer = new OutputStreamWriter(new FileOutputStream(outputFile),"utf-8");
int tempChar;
while((tempChar=reader.read())!=-1){
writer.write(tempChar);
}
reader.close();
writer.close();
System.out.println("按单个字符读写文件结束。。。");
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 按字符读取文件并写出到另一个文件(一次读取多个字符)
* @param inputFileName
* @param outPutFileName
*/
private static void readAndWriteFileByChars(String inputFileName,String outPutFileName) {
File inputFile = new File(inputFileName);
File outputFile = new File(outPutFileName);
Reader reader = null;
Writer writer = null;
try {
reader = new InputStreamReader(new FileInputStream(inputFile), "utf-8");
writer = new OutputStreamWriter(new FileOutputStream(outputFile),"utf-8");
int tempChar;
// 一次读多个字符
char[] tempchars = new char[30];
while((tempChar=reader.read(tempchars))!=-1){
if(tempChar == tempchars.length && (tempchars[tempchars.length - 1] != '\r')){
writer.write(tempChar);
}else{
for(int i=0;i<tempchars.length;i++){
if (tempchars[i] == '\r') {
continue;
} else {
writer.write(tempchars[i]);
}
}
}
}
reader.close();
writer.close();
System.out.println("按多个字符读写文件结束。。。");
} catch (IOException e) {
e.printStackTrace();
}
}

3、按行来读取文件(以行为单位读取文件,一般用于读取面向行的格式化文件)

 /**
* 读取一个文件写入到另一个文件
* @param inputFileName 读取文件的路径
* @param outputFileName 写出文件的路径
*/
public static void readAndWriteFileByLine(String inputFileName,String outputFileName){
BufferedReader reader = null;
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter(outputFileName));
reader = new BufferedReader(new FileReader(inputFileName));
String tempStr =null;
while((tempStr=reader.readLine())!=null){
writer.append(tempStr);
writer.newLine(); //换行
writer.flush(); //及时清除流的缓冲区,万一文件过大就无法写入了
}
} catch (IOException e) {
e.printStackTrace();
}finally{
if(reader!=null || writer!=null){
try {
reader.close();
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
}
System.out.println("文件写入成功");
}
}

JavaIO流文件的操作总结的更多相关文章

  1. Java-IO读写文件简单操作2

    承接Java-IO读写文件简单操作,这里再次写个小demo巩固一下知识点. 代码文件:demo.java package com.test.demo; import java.io.*; public ...

  2. JavaIO流(输入输出操作)

    Java中执行输出和输入操作,需要通过IO流.例如最常见的System.out.println()就是一个输出流.IO流的类比较多,但核心体系就是由File. InputStream .OutputS ...

  3. Java-IO流之File操作和Properties操作

    java的File类主要是用来操作文件的元数据,稍作演示如下: 其中方法getAllJavaFile()是使用了过滤器FileFileter,这个过滤器只需要实现accept方法,判断什么样的文件返回 ...

  4. Java-IO读写文件简单操作

    Java中读写文件的关键在于节点流和处理流的的选取上,而节点流和处理流又分为面向字节.面向字符两种处理模式,因此,需要根据实际的情况选择合适的处理模式,一般而言,往往尽量尝试使用面向字符的处理模式,如 ...

  5. JavaIO流之File操作

    IO流: File: File(文件/文件夹地址)构造函数: public File(String path); public File(String parentPath, String child ...

  6. Java 字符流实现文件读写操作(FileReader-FileWriter)

    Java 字符流实现文件读写操作(FileReader-FileWriter) 备注:字符流效率高,但是没有字节流底层 字节流地址:http://pengyan5945.iteye.com/blog/ ...

  7. javaIO流实现读写txt文件

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

  8. java 学习笔记之 流、文件的操作

    ava 学习笔记之 流.文件的操作 对于一些基础的知识,这里不再过多的解释, 简单的文件查询过滤操作 package com.wfu.ch08; import java.io.File; import ...

  9. C#IO流文件操作

    文件流 创建文件流 读写文件的第一步就是创建文件流,流是一个用于数据传输的个对象,它是FileStream类型,在创建一个文件流是需要在他的构造中指定参数 语法: FileStream 文件流对象=n ...

随机推荐

  1. 第29章 跨战区大PK

    29.1 策略模式 VS 桥梁模式 29.1.1 策略模式 [编程实验]用策略模式实现邮件发送 (1)有文本和超文本两种格式的邮件,将这两种格式封装成两种不同的发送策略. (2)文本邮件和超文本邮件分 ...

  2. git删除远程仓库的文件或目录

    git rm -r --cached a/2.txt //删除a目录下的2.txt文件   删除a目录git rm -r --cached a git commit -m "删除a目录下的2 ...

  3. 表单事件onsubmit与onreset

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. 程序流程的控制之条件分支(Delphi)

    if语句主要来检测一个条件,并根据这个条件是True或者False来执行一段代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 var   I: Integer ...

  5. MathType 公式后的空格问题

    注册表编辑器修改 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Design Science\DSMT6\WordC ...

  6. java多线程系类:基础篇:05线程的等待与唤醒

    概要 本章,会对线程等待/唤醒方法进行介绍.涉及到的内容包括:1. wait(), notify(), notifyAll()等方法介绍2. wait()和notify()3. wait(long t ...

  7. ASP.NET 中执行 URL 重写

    具体实现步骤(其中的一种实现方法): 一.下载相关的DLL(ActionlessForm.dll和UrlRewriter.dll) http://download.csdn.net/detail/yi ...

  8. ssh生成key不交互

    ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ""   首次执行不交互 第二次再次执行会让输入y

  9. QT QDateTime类、QTimer类

    QDateTime类,头文件#include <QDateTime> 可以使用QDateTime类来获得系统时间.通过QDateTime::currentDateTime()来获取本地系统 ...

  10. 打字机游戏Ⅱ之手速pk

    前言 demo预览->typewriter gameⅡ (chrome only 没做兼容) 别看一开始时速度不快,会线性增长的哦,反正楼主的score还没达到过40... 为什么叫Ⅱ呢?之前写 ...