`
高军威
  • 浏览: 181171 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Java IO流整理

阅读更多
一、InputStream/OutputStream 和 Reader/Writer
辨析:

InputStream/OutputStream:1)抽象类;2)面向字节 形式的I/O操作 (8位字节流)。

Reader/Writer:1)抽象类;2)面向字符的I/O操作(16位的Unicode字符)。

InputStreamReader:可以将InputStream转换为 Reader;

OutputStreamWriter:可以将OutputStream转换为Writer;


注:图中细箭头标识实现接口,粗箭头标识继承父类。






示例代码:
package javaio01;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;

/**
 * 使用 字符流和字节流两种方式,读取文本显示出来,并保存到指定的文件中;
 * */
public class ReaderTest {
	
	public static void main(String[] args) {
		//methodBytes("a.txt");
		methodString("a.txt");
	}
	/**
	 * First:字节流
	 * */
	public static void methodBytes(String position) {
		FileInputStream fileIn = null;
		try {
			fileIn = new FileInputStream(position);
			
			int n = 1024;
			byte inbuffer[] = new byte[n];
			
			StringBuffer filecontent = new StringBuffer();
			while(fileIn.read(inbuffer,0,n) != -1)
			{
				filecontent.append(new String(inbuffer));
			}
			System.out.println("字节流读取文件内容:\n"+filecontent.toString());
			fileIn.close();//关闭输入流 释放资源
			
			//字节流读取转为字符流读取
			BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(position))); 
			
			String str = null;
			StringBuffer strbf = new StringBuffer("");
			while((str = br.readLine()) != null)
			{
				strbf.append(str);
			}
			br.close();
			System.out.println("\n字节流读取转为字符流读取:\n"+strbf.toString());
			
			
			
			//写入文件b中
			FileOutputStream os = new FileOutputStream("b.txt"); 
			//写入输出流
			os.write(filecontent.toString().getBytes());
			//关闭输出流
			os.close();
			System.out.println("\n文件a的内容已经保存到b文件中去了!!!");
			
		} catch (FileNotFoundException e) {
			System.out.println("file not exit!");
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
	}
	/**
	 * Second:字符流
	 * */
	public static void methodString(String position) {
		try {
			/*1th*/
			//BufferedReader br = new BufferedReader(new FileReader(new File("a.tx")));
			
			/*2th*/
			//FileReader fr = new FileReader(position);
			//BufferedReader br = new BufferedReader(new FileReader("a.tx"));
			
			/*3th : InputStreamReader:可以将InputStream转换为	Reader;*/
			//将字节流转换成字符流
			BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(position)));

			String str = null;
			StringBuffer filecontent = new StringBuffer();
			while((str = br.readLine()) != null)
			{
				filecontent.append(str);
			}
			
			System.out.println("\n字节流读取文件内容:\n"+filecontent.toString());
			br.close();//关闭输入流 释放资源
			
			/*********************/
			
			//将字符流 保存到文本中
			BufferedWriter brt = new BufferedWriter(new FileWriter("b.txt"),1024);
			brt.write(filecontent.toString());
			brt.flush();
			brt.close();
			System.out.println("\n文件保存成功!!!\n");
			
			/*********************/
			PrintWriter pr = new PrintWriter(new FileOutputStream("aa.txt"));
			pr.println("wwwwwwwwwwwwwwwww");
			pr.flush();
			pr.close();
			
			
		} catch (FileNotFoundException e) {
			System.out.println("file not exit!");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}


文件流与字节数组的互转:
/** 
     * 获得指定文件的byte数组 
     */  
    private byte[] getBytes(String filePath){  
        byte[] buffer = null;  
        try {  
            File file = new File(filePath);  
            FileInputStream fis = new FileInputStream(file);  
            ByteArrayOutputStream bos = new ByteArrayOutputStream(1000);  
            byte[] b = new byte[1000];  
            int n;  
            while ((n = fis.read(b)) != -1) {  
                bos.write(b, 0, n);  
            }  
            fis.close();  
            bos.close();  
            buffer = bos.toByteArray();  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
        return buffer;  
    }
    
    /** 
     * 根据byte数组,生成文件 
     */  
    public static void getFile(byte[] bfile, String filePath,String fileName) {  
        BufferedOutputStream bos = null;  
        FileOutputStream fos = null;  
        File file = null;  
        try {  
            File dir = new File(filePath);  
            if(!dir.exists()&&dir.isDirectory()){//判断文件目录是否存在  
                dir.mkdirs();  
            }  
            file = new File(filePath+"\\"+fileName);  
            fos = new FileOutputStream(file);  
            bos = new BufferedOutputStream(fos);  
            bos.write(bfile);  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            if (bos != null) {  
                try {  
                    bos.close();  
                } catch (IOException e1) {  
                    e1.printStackTrace();  
                }  
            }  
            if (fos != null) {  
                try {  
                    fos.close();  
                } catch (IOException e1) {  
                    e1.printStackTrace();  
                }  
            }  
        }  
    }
分享到:
评论

相关推荐

    javaIO流整理.txt

    javaIO流整理.txt

    javaIO流思维导图

    自己整理了一下javaIO流的相关知识点 用xmind软件做了一下

    JAVA_IO流整理思维导图.emmx

    JAVA_IO流整理思维导图.

    java中的IO流整理

    Java中的IO流是Java平台核心特性之一,它用于在各种数据源之间传输数据,包括文件、设备、网络连接等。IO流分为输入流(Input Stream)和输出流(Output Stream),按照处理的数据类型又可以分为字节流和字符流。本...

    javaio流电子书整理面试必考io流帮助你入职阿里腾讯

    Java IO流是Java平台中用于处理输入输出操作的重要部分,对于任何Java开发者,尤其是准备面试或希望在大型公司如阿里、腾讯工作的候选人来说,掌握IO流的知识是必不可少的。以下是对Java IO流的详细解析: **一、为...

    Java IO流.xmind

    Java IO流思维导图,主要摘录整理的是java.io.*包下的所有IO对象,其中对应备注里包含各个IO对象的构造方法

    java中的IO整理完整版

    Java的IO流是处理输入和输出的核心组件。它们分为字节流和字符流,字节流处理原始的8位字节数据,而字符流处理Unicode字符。字节流又分为输入流(InputStream和Reader)和输出流(OutputStream和Writer)。输入流...

    Java IO流分析、IO整理与IO优化.pdf

    ### Java IO流分析、IO整理与IO优化 #### 一、IO流概念解析 Java中的文件操作主要通过**流**的方式进行。所谓流,是指在Java内存中的一组有序数据序列,它允许开发者以一种线性的方式处理数据,无论是从源(如文件...

    IO流体系继承结构图_动力节点Java学院整理

    Java的IO流体系是Java平台的核心特性之一,用于处理数据的输入和输出。这个体系结构设计得相当丰富和灵活,可以适应多种不同的场景。我们主要从两个方面来理解这个体系:对称性质和处理器模式。 首先,IO流的对称...

    Java-IO流基础例题 & 例题源码 & PPT教学文档(黑马程序员详细版).rar

    Java IO流是Java编程语言中一个非常重要的概念,它提供了数据传输的能力,使得程序能够读取和写入数据到各种输入/输出设备,如硬盘、内存、网络等。本资源包含的是Java-IO流的基础例题、源码及PPT教学文档,适合初学...

    Java IO复用_动力节点Java学院整理

    Java IO 复用技术是针对服务器并发处理能力的关键所在,特别是在高并发环境下,服务器需要能够及时处理大量并发的TCP连接,同时保持高效利用CPU和其他资源。并发编程的目标是尽可能提高处理并发连接的数量,直到物理...

    【Sansui】java各种流整理demo

    java各类IO流的整理demo,其内包含InputStream/OutputStream BufferedReader流 FileOutputStream/FileInputStream流 PrintWriter流 DataOut/DataIn流 Object流 FileChannel类;

    Java IO流体系继承结构图_动力节点Java学院整理

    Java IO流体系继承结构图 Java IO流体系继承结构图是 Java 语言中 Input/Output 操作的核心部分,它们都是从基类 InputStream 和 OutputStream 继承而来的。Java IO流体系继承结构图可以分为两大部分:Reader-...

    Java中IO流简介_动力节点Java学院整理

    Java IO流简介 Java IO系统的设计初衷,就是为了实现“文件、控制台、网络设备”这些IO设置的通信。IO流是Java中一个基本概念,理解IO流是Java开发中的一项重要技能。下面将对Java IO流进行详细的介绍。 什么是流 ...

    j0601IO_chicken_Java-IO_prettyjtt_

    这个"j0601IO_chicken_Java-IO_prettyjtt_"标题可能指的是一个关于Java IO的学习资源,其中"chicken"可能是一个比喻,表示初学者或者新手,"prettyjtt"可能是创建或整理这个学习资料的人的昵称。"javax小菜鸡io"描述...

    Java常用代码整理

    在"Java常用代码整理"这个主题中,我们可以探讨多个Java编程中的关键知识点,包括基础语法、面向对象特性、异常处理、集合框架、IO流、多线程、网络编程以及实用工具类等。 1. **基础语法**:Java的基础语法包括...

    Java学习资料 包含了java SE中的集合、String类和IO流中一些常用的API的知识点整理

    通过实践,你可以更深入地理解Java集合、String和IO流的使用,提升你的编程技能。记得,理论与实践相结合是学习任何编程语言的关键,不断编写代码、调试错误,才能真正掌握这些知识。希望这份资料能成为你Java学习之...

    Java中的IO整理完整版

    在这个完整的Java IO整理版中,我们将深入探讨一些基本的IO概念和用法,主要包括文件操作、路径分隔符、文件删除、文件夹创建以及列出目录下的所有文件。 首先,创建新文件是Java IO中最基础的操作之一。在案例1中...

Global site tag (gtag.js) - Google Analytics