FileInputstream和FileOutputStream类、Reader类和Writer类的用法

  • FileInputStream和FileOutputStream类分别用来创建磁盘文件的输入流和输出流对象,通过它们的构造函数来指定文件路径和文件名。
  • 创建FileInputStream实例对象时,指定的文件应当是存在和可读的。创建FileOutputStream实例对象时,如果指定的文件已经存在,这个文件中的原来内容将被覆盖清除。
  • 对同一个磁盘文件创建FileInputStream对象的两种方式:   (1)FileInputStream inOne = new FileInputStream("hello.test");     (2)File f = new File("hello.test");      FileInputStream inTwo = new FileInputStream(f);
  • 创建FileOutputStream实例对象时,可以指定还不存在的文件名,但不能指定一个已被其他程序打开了的文件。

思考:要将A文件的内容写入B文件,在程序代码中,是用输出类对象,还是用输入类对象来连接A文件并完成对A文件的操作呢?

(要记住:这里说的输入和输出的概念都是相对这个应用程序而言的,而不相对这个文件而言的。如下图)

所以我们应该创建一个输入类来读取A文件的内容,然后创建一个输出类将这些内容输出到B文件中。(如下图)

编程实例:用FileOutputStream类向文件中写入一个串字符,然后用FileInputStream读出写入的内容。

//FileStream.java

import java.io.*;

public class FileStream{

public static void main(String[] args) throws Exception {

FileOutputStream out = new FileOutputStream("hello.txt");

out.write("www.sina.com.cn".getBytes()); //把字符串转化为字节数组并写入到流中

out.close();

byte[] buf = new byte[1024];

File f = new File("hello.txt");

FileInputStream in = new FileInputStream(f);

int len = in.read(buf); //读取内容到字节数组中

System.out.println(new String(buf,0,len)); //String构造函数把字节数组转化为字符串,注:buf应该是字符数组(char[])、字节数组(byte[])、整型数组(int[])            意思就是从数组中取出从下标0开始的len个元素来生成字符串对象,打印

in.close();

}

}

Reader类和Writer类

  • Reader和Writer是所有字符流类的抽象基类,用于简化对字符串的输入输出编程,即用于读写文本数据。
  • 二进制文件和文本文件的区别。严格的说文件系统中的每个文件都是二进制文件。各种文本字符是由一个或几个字节组成的,其中每个字节的数 据不能是任意的。如果一个文件中的每个字节或每相邻的几个字节中的数据都可以表示成某种字符,我们就可以称这个文件为文本文件。可见文本文件只是二进制文 件的一种特例。为了与文本文件相区别,人们又把文本文件以外的文件称之为二进制文件。在概念上我们可以简单的认为:如果一个文件专用于存储文本字符而没有 包含字符之外的其他数据,就称之为文本文件,除此之外的文件就是二进制文件。

Reader与Writer类及其子类(FileReader和FileWriter类等)主要用于读取文本格式的内容,而InputStream和OutputStream类及它们的子类主要读取二进制格式的内容。

编程实例:用FileWriter类向文件中写入一个串字符,然后用FileReader读出写入的内容。

//FileStream2.java

import java.io.*;

public class FileStream2{

public static void main(String[] args) throws Excetpion {

FileWriter out = new FileWriter("hello2.txt");

out.write("www.sina.com.cn"); //在此可以直接写入字符串,不用转化为字节数组

out.close();

char[] buf = new char[1024];  //字符数组

FileReader in = new FileReader("hello2.txt");

int len = in.read(buf); //此时的read方法可以读取一个字符或几个字符,len代表实际读取到的字符的个数。

System.out.println(new String(buf,0,1024)); //String构造函数把字符数组转化为字符串。

in.close();

}

}

时间: 2025-01-03 00:46:46

FileInputstream和FileOutputStream类、Reader类和Writer类的用法的相关文章

理解IO流:InputStream和OutputStream,FileInputStream和FileOutputStream,Reader和Writer,FileReader和FileWriter,BufferedInputStream 和 BufferedOutputStream, BufferedReader 和 BufferedWriter,转换流

/* * 1.理解 "流" ? * 动态性.连续性.方向性. * * 2.在java语言中,将数据的输入/输出称之为 IO流. IO流的分类: * 1) 从方向分: 输入流 , 输出流. (参照计算机的内存) * 将数据送到内存中去称之为输入流.反之,称之为输出流. * * 2) 从处理单位来分: 字节流(8位二进制数据), 字符流(16位二进制数据). * * 3) 从是否有数据源来分: 节点流(有数据源), 处理流(必须套在节点流上). * * 3.在Java语言中,所有流类均来自

JAVA学习--文件流FileInputStream和FileOutputStream操作

* 1.流的分类: * 按照数据流向的不同:输入流  输出流 * 按照处理数据的单位的不同:字节流  字符流(处理的文本文件) * 按照角色的不同:节点流(直接作用于文件的)  处理流 *  * 2.IO的体系 * 抽象基类            节点流(文件流)                                缓冲流(处理流的一种) * InputStream        FileInputStream            BufferedInputStream * Outp

FileInputStream与FileOutputStream类

FileInputStream和FileOutputStream类分别用来创建磁盘文件的输入流和输出流对象,通过它们的构造函数来指定文件路径和文件名. 创建FileInputStream实例对象时,指定的文件应当是存在和可读的.创建FileOutputStream实例对象时,如果指定的文件已经存在,这个文件中的原来内容将被覆盖清除. 对同一个磁盘文件创建FileInputStream对象的两种方式:   (1)FileInputStream inOne = new FileInputStream

Java IO流(第三讲):字节流中的FileInputStream与FileoutputStream

一.概念 FileInputStream和FileOutputStream 是一对继承与InputStream和OutputStream的类,用于本地文件读写,按二进制格式读写并且顺序读写,读和写的文件流要区分开,即分别创建不同文件流对象. 二.记住in和out 死记硬背型: 不管你从磁盘读,从网络读,或者从键盘读,读到内存,就是InputStream. 不管你写入磁盘,写入网络,或者写到屏幕,都是OuputStream. 理解型: 有些人经常遇到InputStream.OuputStream,

【Java IO】FileInputStream 和 FileOutputStream

class FileInputStream extends  InputStream implements Closeable 作用:用于从文件系统中的某个文件中获得输入字节,处理二进制原始字节文件,如exe 图片等. 1.构造关联 的文件可以使用 String 描述,也可以使用File ,FileDescriptor 对象表示 2.read 是可能阻塞当前线程的.当read等其他操作的字节数大于此对象直接可用(available)的字节数时会阻塞. 3.read到文件末尾返回 -1 构造函数

FileInputStream和FileOutputStream详解

一.引子 文件,作为常见的数据源.关于操作文件的字节流就是 FileInputStream & FileOutputStream.它们是Basic IO字节流中重要的实现类.二.FileInputStream源码分析 FileInputStream源码如下: /** * FileInputStream 从文件系统的文件中获取输入字节流.文件取决于主机系统. * 比如读取图片等的原始字节流.如果读取字符流,考虑使用 FiLeReader. */ public class FileInputStre

Java -- FileInputStream与FileOutputStream的简单使用

本地文件读写编程的基本过程为: ①  生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为FileOutputStream类): ②  调用FileInputStream或FileOutputStream类中的功能函数如read().write(int b)等)读写文件内容: ③  关闭文件(close()). //读取某路径下的文件 File file = new File("D:\\123.txt"); try {   FileInputStream

list集合、txt文件对比的工具类和文件读写工具类

工作上经常会遇到处理大数据的问题,下面两个工具类,是在处理大数据时编写的:推荐的是使用map的方式处理两个list数据,如果遇到list相当大数据这个方法就起到了作用,当时处理了两个十万级的list,使用改方法的变种搞定. 1.txt文件.list集合比较工具 <span style="font-family:KaiTi_GB2312;font-size:18px;">package com.hudong.util.other; import java.util.Colle

Spring 工具类 ConfigurationClassParser 分析得到配置类

https://blog.csdn.net/andy_zhang2007/article/details/78549773 Spring 工具类 ConfigurationClassParser 分析得到配置类原创安迪源文 最后发布于2017-11-16 12:19:50 阅读数 4296 收藏展开简介Spring的工具类ConfigurationClassParser用于分析@Configuration注解的配置类,产生一组ConfigurationClass对象.它的分析过程会接受一组种子配