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. 地铁 Dijkstra(优先队列优化) 湖南省第12届省赛

    传送门:地铁 思路:拆点,最短路:拆点比较复杂,所以对边进行最短路,spfa会tle,所以改用Dijkstra(优先队列优化) 模板 /******************************** ...

  2. java 解决中文乱码

    //1.代码解决 public class LuanMa { public static String getNewString(String luanma){ String result = &qu ...

  3. ANE接入平台心得记录(安卓)

    开发环境:FlashBuilder4.7 AIR13.0 Eclipse 由于我懒得陪安卓的开发环境所以我下载了包含安卓SDK Manager的Eclipse,其实直接用FlashBuilder开发A ...

  4. linux(TINY6410)下移植boa服务器

    今天在tiny6410上移植了boa服务器,中间遇到了一些小问题.当时也及时解决了. 第一步:boa的编译 在www.boa.org下载Boa的压缩包  我这里用的是 boa-0.94.13.tar. ...

  5. mysql启动服务时提示"服务名无效"

    1,首先说明一下我的环境,我刚开始是用的XAMPP这个集成的软件,里面安装了apache, mysql,tomcat这些软件,然后通过控制面板对其进行启动关闭的操作,这些操作很方便,但是我就用net ...

  6. poj 3255 Roadblocks

    Roadblocks Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13216 Accepted: 4660 Descripti ...

  7. 产品需求文档(PRD)的写作方法之笔记一

    1.写前准备(思维导图): http://www.woshipm.com/?p=80070 1.在写之前,请先很区分清楚什么是MRD文档(市场需求文档),BRD文档(商业需求文档),什么是PRD文档( ...

  8. [资料]mysql实现地理位置搜索

    mysql实现地理位置搜索 使用mysql来实现lbs(地理位置服务)功能 Mysql 地区经纬度 查询

  9. 毫米转换为PX

    公式:毫米数/25.4*你的电脑的DPI,win7 DPI  100%缩放为96,125%为120,150%为144,200%为192 象素数 / DPI = 英寸数 英寸数 * 25.4 = 毫米数

  10. 跟我学习Storm_Storm基本架构

    Storm集群类似于一个Hadoop集群. 然而你在Hadoop的运行“MapReduce job”,在Storm上你运行 “topologies”. “job”和“topologies”本身有很大的 ...