`

Java基础 之 IO

    博客分类:
  • java
阅读更多
  1. 什么是IO?      
    input/output   输入输出
  2. Java如何处理IO?
    1.java把不同的输入/输出(键盘、文件、网络等)抽象描述为 "流"(stream)。
    2.用相同的方式--"流"来处理 不同的输入/输出。
  3. 什么是"流"?
    和电流、水流一样,只不过这里是数据流。
  4. 流的分类 
    1.输入流/输出流(流向)
       如何判断是输入流 还是输出流?
       这是一个相对问题!关键是找好参照?输入输出都是从程序运行所在的内存角度来看。
    .  我的记法: input*.read(); output*.write();   最后你只要知道你现在是读还是写即可。
    2.字节流和字符流
       字节流操作数据的单元是8位的字节,字符流是16位的字符。
       字节流:InputStream和OutputStream作为父类。
       字符流:Reader和Write作为父类。
       处理文本的建议用 字符流。
       处理其他的建议用 字节流。
       比较通用的就是字节流。

  5. 字节流和字符流的转化:InputStreamReader 和 OutputStreamWriter
  6. java io功能强大看似复杂但实际是有规律的,它采用的是“装饰器设计模式”。
  7. 部分io相关类


     
    解释:
    文件流:顾名思义,提供了更加便利和强大的文件流操作。
    缓冲流:增加了缓冲功能,提高了读写效率 但是注意一定要是使用flush()方法来处理缓冲区。
    转换流:将字节流转换成字符流。
    管道流:处理线程之间的通讯。
    更多的请看java.io包
  8. 序列化(请关注后续文章)
package com.cxyapi.io;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.OutputStream;

/** IO
 * @author cxy @ www.cxyapi.com
 */
public class IoTest
{
	public static void main(String[] args) throws Exception
	{
		writeDataToFile();
		System.out.println("-------------------------");
		readDataFromFile();
		System.out.println("-------------------------");
		copyFile("D:"+File.separator, "cxyapi.txt", "D:"+File.separator, "cxyapi复制.txt");
	}
	
	/**写数据到文件 站在内存角度 将内存输出到文件,所以应该用输出流
	 * @throws Exception
	 */
	public static void writeDataToFile() throws Exception
	{
		String filePath="d:/cxyapi.txt";
		File f=new File(filePath);
		if(!f.exists())
		{
			f.createNewFile();
		}
		
		OutputStream out=new FileOutputStream(f);
		String str="更多内容请访问:\r\nwww.cxyapi.com";
		byte[] buffer=str.getBytes();
		out.write(buffer);
		out.flush();
		out.close();
		System.out.println("文件写入完成");
	}
	
	/**从文件读取数据
	 * @throws Exception
	 */
	public static void readDataFromFile() throws Exception
	{
		String filePath="d:/cxyapi.txt";
		File f=new File(filePath);
		if(!f.exists())
		{
			f.createNewFile();
		}
		InputStream in=new FileInputStream(f);  
		byte[] buffer=new byte[(int)f.length()];
		int len=in.read(buffer);
		in.close();
		System.out.println(new String(buffer,0,len));
		//System.out.println("完成");
	}
	
	/**	文件拷贝 字节流 (通用)
	 * 字节流的方式和这个类似,只不过使用的是(FileReader和FileWriter),
	 * 但是他只能拷贝字符文件,字节文件 会出现文件丢失数据的情况。
	 * 所以为了通用 这里只展示通用的字节流方式
	 */
	public static void copyFile(String fromPath,String fromFileName,String toPath,String tofileName) throws Exception
	{
		long st=System.currentTimeMillis();
		File f1=new File(fromPath+File.separator+fromFileName);
		File f2=new File(toPath+File.separator+tofileName);
		
		if(!f1.exists())
		{
			System.out.println("源文件不存在!");
			return;
		}
		
		if(!f2.exists())
		{
			f2.createNewFile();
		}
		
		//装饰器
		//new BufferedWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(f2))));
		BufferedInputStream br=new BufferedInputStream(new FileInputStream(f1));
		BufferedOutputStream bw=new BufferedOutputStream(new FileOutputStream(f2));
		//水桶打水的方式
		byte[] temp=new byte[256]; //“数据桶”,这个桶的大小视数据大小情况而定
		int read=0;
		while((read=br.read(temp))!=-1)
		{
			bw.write(temp,0,read);
		}
		bw.flush();
		//关闭操作应该放到finally块中,这里简单演示
		bw.close();
		br.close();
		long et=System.currentTimeMillis();
		System.out.println("拷贝完成,耗时:"+(et-st));
	}
}

 

声明:

1.原创文章,转载请标明并加本文连接。

2.文章反映个人愚见,如有异议欢迎讨论指正

3.更多的内容请看我的  个人博客(测试版)

  • 大小: 31.6 KB
3
6
分享到:
评论

相关推荐

    Java基础之IO讲解

    本文详细介绍了Java基础IO流的相关概念和技术,包括`File`类的使用、递归的应用、IO流的分类、缓冲流的概念及其实现方式。通过这些基础知识的学习,可以为后续更高级的Java IO操作打下坚实的基础。希望本文能够帮助...

    java基础之IO流

    ### Java IO流基础知识点 #### 一、IO流概述 - **定义**:在Java中,IO流(Input/Output Streams)是用来处理输入输出的基本工具。流是一种有序的数据集合,通常涉及从源到目的地的数据传输过程。源可以是文件、...

    java基础 IO流

    java基础中的IO流是Java提供的一套用于文件读写操作的流式API,它包括字节流和字符流两种基本类型。字节流主要用在处理二进制数据,而字符流则是处理文本数据。 首先,文档中提到了`File`类,它是IO流操作中用于...

    徐葳《40小时掌握java语言之08IO流》内部教材

    在讨论Java基础之IO流的相关知识点之前,先介绍一下徐葳老师所编著的《40小时掌握java语言之08IO流》内部教材。这本教材是针对Java语言中IO流部分的详细讲解,内容基于JDK1.8版本。本课程旨在帮助学生在40小时内掌握...

    java中的IO的基础教学(1)

    Java中的IO(输入/输出)系统...通过以上介绍,你应该对Java基础IO流有了初步了解。但要完全掌握IO系统,还需要进一步学习和实践,例如流的缓冲、转换、异常处理等。希望这个基础教学能帮助你更好地理解Java中的IO流。

    java基础io包

    java基础io包,字符流和字节流 PPT

    Java学习之IO总结及mina和netty

    这篇博客“Java学习之IO总结及mina和netty”探讨了Java IO的基础知识,并深入到两个高级网络通信框架——Mina和Netty。Mina和Netty都是基于NIO(非阻塞IO)的高性能网络应用框架,它们简化了复杂网络编程的实现。 *...

    java基础:IO流学习笔记

    java基础:IO流学习笔记

    10.尚硅谷_java基础_IO

    IO 概述 File 类 IO 流分类 InputStream & Reader OutputStream & Writer RandomAccessFile 类 对象的序列化

    java基础知识 io

    Java基础知识是学习Java编程语言的基石,其中包括对输入/输出(IO)的理解和应用。Java IO是Java平台中处理数据输入和输出的核心组件,对于任何Java开发者来说,掌握这一部分的知识至关重要。以下将详细阐述Java基础...

    Java-Io流,练习

    本练习旨在帮助初学者理解和掌握Java IO流的基础知识。 一、IO流的概念 IO流在Java中分为两大类:输入流(Input Stream)和输出流(Output Stream)。输入流用于从源(如文件、网络连接等)读取数据,而输出流则...

    完整版 Java基础入门教程 Java程序语言设计 04 IO流 输入输出流(共31页).ppt

    完整版 Java基础入门教程 Java程序语言设计 04 IO流 输入输出流(共31页).ppt 完整版 Java基础入门教程 Java程序语言设计 05 GUI AWT 事件模型(共27页).ppt 完整版 Java基础入门教程 Java程序语言设计 05 GUI GUI...

    java零基础自学 之 JavaIO流处理

    Java IO流处理是Java编程中一个非常重要的概念,主要用于数据的输入和输出操作。对于Java初学者来说,理解和掌握IO流的基本使用至关重要。...理解并熟练掌握这些基础知识,对于提升Java开发能力至关重要。

    Java基础篇:IO流.pdf

    Java IO流是Java编程语言中用于处理输入输出操作的一个重要概念。它允许程序读取数据源或向数据目的地写入数据。Java中的IO流主要分为输入流和输出流两大类,每类又可以根据数据处理方式的不同细分为多种具体实现。...

    java.io.Reader 和 java.io.InputStream 的区别

    在深入探讨`java.io.Reader`与`java.io.InputStream`的具体差异之前,我们首先需要理解这两者在Java I/O操作中的基础角色。`java.io.Reader`和`java.io.InputStream`是Java标准库中处理输入数据的核心类,它们分别...

    javaIo操作的基础代码

    在提供的压缩包文件"Io基础文档"中,可能包含了关于这些概念的详细说明、示例代码和实战指导,对于深入理解和掌握Java IO操作非常有帮助。学习和理解这些内容,将有助于开发者在处理数据输入输出时编写出高效、稳定...

    java web 及 IO 的一些代码

    在这个“java web 及 IO 的一些代码”压缩包中,我们可以期待找到一些关于Java Web基础和输入/输出(IO)操作的示例代码。IO在Java中扮演着至关重要的角色,特别是在处理数据读写、网络通信等方面。下面,我们将深入...

    java之io流实例

    - File类是Java处理文件的基础,提供了创建、删除、重命名文件以及获取文件属性的方法。 - Files类提供了更多高级的文件操作,如复制、移动文件,读取文件内容等。 在实际开发中,我们通常会根据需求选择合适的流...

    JAVA课件 swing io util

    总的来说,Java Swing负责构建用户界面,IO负责数据的传输,而Util提供了许多方便的工具和数据结构,共同构成了Java应用程序的基础。理解并熟练掌握这三个模块,将有助于你开发出高效、健壮的Java应用。在学习过程中...

Global site tag (gtag.js) - Google Analytics