Java 之 I/O流

1.流

  a.分类:①字节流:InputStream、OutputStream

      ②字符流:Reader、Writer

  b.选择:①判断是 输入 还是 输出 (站在程序的立场上)

      ②判断是 字节 还是 字符 (决定粗细)

  c.注意:①字节管道是最根本的

      ②字符管道专门传输文本数据

  c.应用:①序列化

      ②反序列化

2.文件拷贝——最重要的一段手工书写的代码

package com.lovo.test;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

public class TestStream {

    public static void main(String[] args) {

        //功能:将D:/test.avi  拷贝到  F:/wudi.avi
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            //1、建立管道
            fis = new FileInputStream("D:/test.avi");
            fos = new FileOutputStream("F:/wudi.avi");

            //2、操作管道
            //方法一:
//            int b = 0;
//            while((b = fis.read()) != -1){
//                fos.write(b);
//            }

            //方法二:
            byte[] b = new byte[1024];
            int length = 0;//记录读取了多少个有效字节数
            while((length = fis.read(b)) != -1){
                fos.write(b,0,length);
                fos.flush();//强制刷出缓冲区的内容
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            //3、关闭管道
            if(fis != null){
                try {
                    fis.close();
                } catch (IOException e) {
                    // TODO Auto-generated  block
                    e.printStackTrace();
                }
            }
            if(fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}

3.序列化与反序列化

  a.定义:①序列化:将内存中的对象以二进制流的形式输出

      ②反序列化:将输入的二进制对象流转换为内存中的对象 (第二种产生对象的方式)

  b.Serializable关键字:

    ①定义:可序列化接口

    ②作用:标记性接口,只有实现了Serializable接口的类才能被序列化

    ③注意:集合对象都实现了接口Serializable,也可以进行直接进行序列化和反序列化

  c.transient关键字:

    transient关键字修饰的属性,其值不参与序列化

4.File 类

  a.作用:来表示操作系统的文件或文件夹对象

  b.方法:

    ①申明:

File f = new File("F:/dddd.data");

    ②其他:

String path1 = file.getAbsolutePath();        //获取绝对路径

String path2 = file.getPath();        //获取相对路径

long space = file.length();        //获取文件大小

long time = file.lastModified();        //最后修改时间(毫秒数)

System.out.println(file.isHidden());        //判断是否是隐藏文件

System.out.println(file.canWrite());        //判断是否是能被修改

System.out.println(dir.isFile());        //判断是否是文件

System.out.println(file.isDirectory());        //判断是否是文件夹

  c.文件分隔符——File.pathSeparator

String path = "D:" + File.pathSeparator +"ffdfd" + File.pathSeparator + "fdfdf";

  d.文件夹对象的常用方法:

    ①得到文件夹下面的所有子文件或子文件夹的名字

String[] subFileNames = dir.list();

    ②得到文件夹下面的所有子文件或子文件夹的File对象

File[] subFiles = dir.listFiles();
时间: 2024-10-06 02:17:27

Java 之 I/O流的相关文章

Java中的IO流

Java中的IO流是实现输入/输出的基础. 按照流的方向不同:分为输入流和输出流. 按照处理数据单位的不同:分为字节流(8位)和字符流(16位). 按照功能不同:分为节点流和处理流 所有面向字节的流类都继承于InputStream类(输入流) 或OutputStream类(输出流),这两个类是抽象类,我们可以利用它的子类来完成不同的功能. InputStream.OutputStream都是抽象类 InputStream抽象了应用程序读取数据的方式 OutputStream抽象类应用程序写出数据

JAVA 中的IO流

Java中的IO流是用来处理设备与设备之前的数据传输,在java中以流的形式传输.流分为两类:字节流和字符流. 字节流:InputStream,OutPutSteam.(计算机内的数据都是以字节存储的,字节流可以操作任意数据) 字符流:Reader,Writer.(字符流只能操作字符,但是在实际应用中字符流比较方便) 从操作来看又可以分为:输入流和输出流. 在进行IO流操作的时候分为以下几步:1.导入IO流的包,2.进行IO流的异常处理,3.关闭IO流释放资源. 字节流 ————————————

java使用I/O流实现9*9乘法口诀的写入文件和从文件打印到屏幕

1.9*9乘法口诀打印到test2.txt中,代码如下 import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class week { publicstatic void main(String[] args) throws Exception { File t

三、JAVA中的IO流,输出流

JAVA中java.io.*;提供数据的流式输入与输出的相关类,IO流是对于输入与输出的抽象,JAVA把这些不同来源和目标的数据都统一抽象为数据流.将输入与输出的数据统一为流的好处是程序不必关心要读取得是文件,还是网络中的数据,而是统一当作IO流来处理. IO流又分为字符流与字节流,主要区别 字节流 按字节处理(一次处理一个字节) 使用类OutputStream 字符流 按字符处理(一次处理一个字符即两个字节) 使用类Writer 其实字节流与字符流处理十分相似(即每次处理的单位不同),好多书上

java 字节流和字符流转换类InputStreamReader,OutPutStreamReader

import java.io.*; public class BufferDemo { public static void main(String[] args) throws IOException { BufferedReader buf=null; buf=new BufferedReader(new InputStreamReader(System.in)); System.out.print("Please enter a number:"); String str=buf

Java IO:面向流、同步、堵塞式IO(BIO)

转载请注明出处:jiq?钦's technical Blog 备注:阅读此文之前,建议先看我这篇博文了解堵塞式IO和非堵塞式IO的基本概念. JAVA BIO是面向流(字节流.字符流)的,即从流中一次读取一个或者多个字节,读取和写入时都须要同步堵塞直至完毕. 一.流(Stream) 1.字节流 输入(InputStream) 介质流 FileInputStream 从文件里读取信息 PipedInputStream 产生用于写入相关PipedOutputStream的数据,实现"管道化"

Java IO之处理流(缓冲流、转换流)

一.处理流: 增强功能,提供性能,在节点流之上. 二.节点流与处理流的关系 节点流(字节流.字符流)处于IO操作的第一线,所有操作必须通过它们进行: 处理流可以对其他流进行处理(提高效率或操作灵活性). 三.缓冲流 1.字节缓冲流 BufferedInputStream BufferedOutputStream package IOBuffer; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; im

Java中的IO流系统详解

Java 流在处理上分为字符流和字节流.字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符.字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组. Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换.而类 InputStreamReader 和 OutputStreamWriter 处理字符流和字节流的转换.字符流(一次可以处理一个缓冲区)一次操作比字节流(一次一个字节)效率高

java基础篇IO流的规律

前两篇降了IO流中的字节流和字符流复制的例子,今天来总结一下IO流的规律 掌握好IO流的规律,再开发中会很好用 下面来总结一下: 1,明确源和目的 源:输入流 InputStream 和Reader 目的:输出流 OutputStream 和Writer 2,操作的数据是否是纯文本. 是:使用字符流 不是:使用字节流 3,当体系明确后,在明确要使用哪个具体的对象,通过设备来进行区分 源设备: 内存,硬盘,键盘 目的设备: 内存,硬盘,控制台 这里的源就是你想进行的操作,比如说你想从c盘复制一个文

Java中I/O流之缓冲流

Java 中的缓冲流: 1. 缓冲流要"套接"在相应的节点流之上,对读写的数据提供了缓冲的功能,提高了读写的效率,同时增加了一些新的方法(带缓冲区的,显著减少对 IO 的读写次数,保护硬盘). 2. J2SDK 提供了四种缓冲流,其常用构造方法如下: 2.1 BufferedReader(Reader in) // 带缓冲区的输入流:       BufferedReader(Reader in, int size) // 自定义缓冲区的大小: 2.2 BufferedWriter(W