Java IO(二)

常用类

1,节点流类型

类型 字符流 字节流
File(文件)
FileReader

FileWriter


FileInputStream

FileOutputStream

Memory Array
CharArrayReader

CharArrayWriter


ByteArrayInputStream

ByteArrayOutputStream

Memory String
StringReader

StringWriter

---
Pipe(管道,线程)
PipedReader

PipedWriter


PipedInputStream

PipedOutputStream

访问文件

FileInputStream和FileOutputStream分别继承自OutputStream和OutputStream,用于向文件中输入和输出字节。

FileInputStream和FileOutputStream的构造方法:

FileInputStream:
FileInputStream(File file)
Creates a FileInputStream by opening a connection to an actual file, the file named by the File object file in the file system.
FileInputStream(FileDescriptor fdObj)
Creates a FileInputStream by using the file descriptor fdObj, which represents an existing connection to an actual file in the file system.
FileInputStream(String name)
Creates a FileInputStream by opening a connection to an actual file, the file named by the path name name in the file system.

OutputStream:
FileOutputStream(File file)
Creates a file output stream to write to the file represented by the specified File object.
FileOutputStream(File file, boolean append)
Creates a file output stream to write to the file represented by the specified File object.
FileOutputStream(FileDescriptor fdObj)
Creates a file output stream to write to the specified file descriptor, which represents an existing connection to an actual file in the file system.
FileOutputStream(String name)
Creates a file output stream to write to the file with the specified name.
FileOutputStream(String name, boolean append)
Creates a file output stream to write to the file with the specified name.

FileInputStream和FileOutputStream类支持其父类InputStream和OutputStream所提供的数据读写方法。

注意:

在实例化FileInputStream和FileOutputStream时要用ty-catch语句加以处理,因为可能抛出FileNotFoundException。

在读写数据时也要用try-catch语句加以处理,因为可能抛出IOException。

例子:

①,FileInputStream & FileOutputStream

FileInputStream:

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

public class Test {

    public static void main(String[] args) {
        int b = 0;
        FileInputStream fis = null;
        try {
            fis = new FileInputStream("d:\\share\\java\\io\\TestFileInputStream.java");
        } catch (FileNotFoundException e) {
            System.out.println("找不到指定文件");
            System.exit(-1);
        }

        try {
            long num = 0;
            while((b = fis.read()) != -1) {
                System.out.print((char)b);
                num++;
            }
            fis.close();
            System.out.println("共读取了" + num + "个字节");
        } catch (IOException e) {
            System.out.println("文件读取错误");
            System.exit(-1);
        }
    }

}

输出: 对于中文乱码,因为是一个字节一个字节的读取,所以只读取了半个中文

import java.io.*;
public class TestFileInputStream {
  public static void main(String[] args) {
    int b = 0;
    FileInputStream in = null;
    try {
      in = new FileInputStream("d:\\share\\java\\io\\TestFileInputStream.java");
    } catch (FileNotFoundException e) {
      System.out.println("ÕÒ²»µ½Ö¸¶¨Îļþ");
      System.exit(-1);
    }

    try {
      long num = 0;
      while((b=in.read())!=-1){
        System.out.print((char)b);
        num++;
      }
      in.close();
      System.out.println();
      System.out.println("¹²¶ÁÈ¡ÁË "+num+" ¸ö×Ö½Ú");
    } catch (IOException e1) {
      System.out.println("Îļþ¶ÁÈ¡´íÎó"); System.exit(-1);
    }
  }
}共读取了700个字节

FileOutputStream

    public static void main(String[] args) {
        int b = 0;
        FileInputStream fis = null;
        FileOutputStream fos = null;
        try {
            fis = new FileInputStream("d:/share/java/HelloWorld.java");
            fos = new FileOutputStream("d:/share/java/io/HW.java");//没有回自动新建一个文件
            while ((b = fis.read()) != -1) {
                fos.write(b);
            }
            fis.close();
            fos.close();
        } catch (FileNotFoundException e) {
            System.out.println("找不到指定的文件");
            System.exit(-1);
        } catch (IOException e) {
            System.out.println("文件复制错误");
            System.exit(-1);
        }
        System.out.println("文件已复制");
    }

②,FileReader & FileWriter

FileReader:

    public static void main(String[] args) {
        int c = 0;
        FileReader fr = null;
        try {
            fr = new FileReader("d:\\share\\java\\io\\TestFileReader.java");
            while((c = fr.read()) != -1) {
                System.out.print((char)c);
            }
            fr.close();
        } catch (FileNotFoundException e) {
            System.out.println("找不到指定文件");
        } catch (IOException e) {
            System.out.println("读取文件出错");
        }
    }

FileWriter(一)

    public static void main(String[] args) {
        FileWriter fw = null;
        try {
            fw = new FileWriter(new File("d:\\unicode.dat"));
            for(int i = 0; i <= 50000; i++) {//char最大为65535
                fw.write(i);
            }
            fw.close();
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("文件写入错误");
            System.exit(-1);
        }
    }

结果:D盘中的unicode.dat文件中的内容:

FileWriter(二)

    public static void main(String[] args) throws Exception {
        FileReader fr = new FileReader("d:/java/io/TestFileWriter2.java");
        FileWriter fw = new FileWriter("d:/java/io/TestFileWriter2.bak");
        int b;
        while((b = fr.read()) != -1) {
            fw.write(b);
        }
        fr.close();
        fw.close();
    }
时间: 2024-11-08 03:43:31

Java IO(二)的相关文章

图解 Java IO : 二、FilenameFilter源码

Writer      :BYSocket(泥沙砖瓦浆木匠) 微         博:BYSocket 豆         瓣:BYSocket FaceBook:BYSocket Twitter    :BYSocket 从上一篇 图解 Java IO : 一.File源码 并没有把所有File的东西讲完.这次讲讲FilenameFilter,关于过滤器文件<Think In Java>中写道: 更具体地说,这是一个策略模式的例子,因为list()实现了基本功能,而按着形式提供了这个策略,完

Java IO(二) 之 InputStream

源码均以JDK1.8作为参考 前言: InputStream实现了两个接口Closeable和AutoCloseable: Closeable:JDK1.5中引入,Closeable接口中只有一个close()方法的定义: public void close() throws IOException; 实现了Closeable接口的类的对象可以被关闭,流类都实现了该接口,以达到关闭流的目的. AutoCloseable:JDK1.7中引入,为JDK1.7中引入的带资源的try语句提供了支持,tr

java IO(二):字节流(InputStream和OutputStream)

*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hljs-comment, .hljs-template_comment, .diff .hljs-header, .hljs-javadoc { color: #998; font-style: italic; } .hljs-keyword, .css .rule .hljs-keyword, .h

Java IO(二)--RandomAccessFile基本使用

RandomAccessFile: 翻译过来就是任意修改文件,可以从文件的任意位置进行修改,迅雷的下载就是通过多个线程同时读取下载文件.例如,把一个文件分为四 部分,四个线程同时下载,最后进行内容拼接 public class RandomAccessFile implements DataOutput, DataInput, Closeable { public RandomAccessFile(String name, String mode); public RandomAccessFil

黑马程序员——Java基础---IO(二)---IO字节流、流操作规律

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! -------   字节流 一.概述 1.字节流和字符流的基本操作是相同的,但字节流还可以操作其他媒体文件. 2.由于媒体文件数据中都是以字节存储的,所以,字节流对象可直接对媒体文件的数据写入到文件中,而可以不用再进行刷流动作. 3.读写字节流:Inpu

Java基础---IO(二)--File类、Properties类、打印流、序列流(合并流)

第一讲     File类 一.概述 1.File类:文件和目录路径名的抽象表现形式 2.特点: 1)用来将文件或文件夹封装成对象 2)方便于对文件与文件夹的属性信息进行操作 3)File类的实例是不可变的:也就是说,一旦创建,File 对象表示的抽象路径名将永不改变 4)File对象可以作为参数传递给流的构造函数 二.File对象创建 方式一: File f =new File("a.txt"); 将a.txt封装成File对象.可以将已有的和未出现的文件或者文件夹封装成对象. 方式

Java IO(input output)流&lt;二&gt;

一.字符流的缓冲区 1.什么是缓冲区       缓冲区又称为缓存,它是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据, 这部分预留的空间就叫做缓冲区.缓冲区根据其对应的是输入设备还是输出设备,分为输入缓冲区和输出缓冲区. 2.为什么要引入缓冲区 缓冲区就是一块内存区,它用在输入输出设备和CPU之间,用来缓存数据.它使得低速的输入输出设备和高速的CPU能够协调工作,避免低 速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作. 3.字符

《二》Java IO 流的分类介绍

一.根据流向分为输入流和输出流: 注意输入流和输出流是相对于程序而言的. 输出:把程序(内存)中的内容输出到磁盘.光盘等存储设备中        输入:读取外部数据(磁盘.光盘等存储设备的数据)到程序(内存)中 综合起来:   二.根据传输数据单位分为字节流和字符流 上面的也是 Java IO流中的四大基流.这四大基流都是抽象类,其他流都是继承于这四大基流的.   三.根据功能分为节点流和包装流 节点流:可以从或向一个特定的地方(节点)读写数据.如FileReader. 处理流:是对一个已存在的

Java IO流(二)

目录 Java IO流(二) 7. 字节缓冲流 7.1 概述 7.2 BufferedOutputStream类 7.3 BufferedInputStream类 8. 文件复制练习(增强版 使用缓冲流) 9. 字符缓冲流 9.1 BufferedWriter类 9.2 BufferedReader类 10. 练习:文本排序 11. 转换流 11.1 字符编码和字符集 11.2 编码引出的问题 11.3 转换流的原理 11.4 OutputStreamWriter类 11.5 InputStre