FileInputStream类和FileOutputStream类中,第一个类的源端和第二个类的目的端都是磁盘文件,它们的构造方法允许通过文件的路径名来构造相应的流。例如:

FileInputSteam infile=new FileInputStream("myfile.dat");

FileOutputStream outfile=new FileOutputStream("results.dat");

构造FileOutputStream对象时,对应的文件必须存在并且可读的,而构造FileOutputStream对象时,如输出文件已存在,则必须是可覆盖的。

1:FileOutputStream 类

如果用户的文件读取需求比较简单,那么用户可以使用FileInputStream类,该类是从InputStream类中派生出来的简单的输入类,该类的所有方法都是从InputStream类继承来的,使用文件输入流读取文件。

示例代码如下:

importjava.io.FileInputStream;
importjava.io.IOException;

public class ReadFileDemo {
public static void main(String []args){
try{
//创建文件的输入流对象
FileInputStream in=new FileInputStream("TestFile.txt");
Int n=512;//设定读取的字节数
Byte buffer[]=new byte[n];//读取输入流
//读取n个字节,放置到以下标0开始字节数组bffer中,返回值实际读取的字节的数量
while((in.read(buffer,0,n)!=-1)&&(n>0)){
System.out.print(new String(buffer));
}
System.out.println();
in.close();//关闭流
}
catch(IOExceptionioe){
System.out.println(ioe);
}
catch(Exceptione){
System.out.println(e);
}
}
}

本例以FileInputStream的read(buffer)方法,每次从源文件TestFile.txt中读取512B,存储在缓冲区buffer中,再将以buffer中的值构造的字符串newString(buffer)显示在屏幕上。使用文件输入流构造器建立通往文件的输入流时,可能会出现错误(也被称为异常,如要打开的文件可能不存在)。当出现I/O错误时,java生成一个出错信号,它使用一个IOException对象来表示这个出错信号。程序必须使用一个try-catch块检测并处理这个异常。

2:FileOutputStream类

FileOutputStream提供了基本文件写入能力。除了从OutputStream类继承来的方法外,FileOutputStream类还有以下两个构造器:

FileOutputStream(Stringname).

FileOutputStream(Filefile).

第一个构造器使用给定的文件名name创建一个FileOutputStream对象。第二个构造器使用File创建FileOutputStream对象。该类可以使用write方法把字节发送给输出流。使用文件输出写入文件。

示例代码如下:

import java.io.FileOutputStream;
import java.io.IOException;

public class WriteFileDemo {
try{
System.out.print("文件要输入的内容");
Int count,n=512;
byte[ ] buffer=new byte[n];//定义存放读入信息的字节数组
count=System.in.read(buffer);//读取标准输入流
//创建文件输出流对象
FileOutputStream os=new FileOutputStream("WriteFile.txt");
//把字节数组buffer中的下标0开始,长度为count的字节写入流中
os.writer(buffer,0,count);
os.close();
System.out.println("已保存到WriterFile.txt!");
}
catch(IOExceptionioe){ //捕获IOExpection异常
System.out.println("ioe"); //输出异常信息
}
catch(Exceptione){
System.out.println(e);

}

}

}

用System.in.read(buffer)从键盘输入一行字符,存储在缓冲区中的buffer中,再以FileOutputStream的write(buffer)方法,将buffer中的内容写到文件WriteFile.txt中。这个程序中使用”System.on.read(buffer);“语句时,程序会暂停,等待用户输入内容。用户输入的内容会保存在字节数组buffer中,并返回读入的内容的长度保存到变量count中。因为对文件的读/写有可能发生I/O异常,所以在程序中要处理IOException异常,编译并运行此程序,在同一目录下会提示输入要保存文件的内容。输入一段话,按回车键确认,这时会在目录中生成一个名叫WriterFile.txt的文本文件。打开这个文本文件,会看到刚刚输入的那段话。

转载于:https://www.cnblogs.com/Angella/p/6068558.html

字节流与字符流(FileInputStream类和FileOutputStream类)相关推荐

  1. Java文件字节流和字符流FileInputStream,FileOutputStream,FileReader,FileWriter

    一,文件输入流和文件输出流:FileInputStream,FileOutputStream FileInputStream可以使用read()方法一次读入一个字节,并以int类型返回,或者是使用re ...

  2. 字节流转化为文件流_JAVA IO分析一:File类、字节流、字符流、字节字符转换流...

    因为工作事宜,又有一段时间没有写博客了,趁着今天不是很忙开始IO之路:IO往往是我们忽略但是却又非常重要的部分,在这个讲究人机交互体验的年代,IO问题渐渐成了核心问题. 一.File类 在讲解File ...

  3. 一文读懂Java中File类、字节流、字符流、转换流

    一文读懂Java中File类.字节流.字符流.转换流 第一章 递归:File类: 1.1:概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. ...

  4. IO流 输入流、输出流、字节流、字符流、转换流、及Properties类

    IO流 1.IO概述 生活中,你肯定经历过这样的场景.当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白编了.当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里.那么数据都是在哪些设备 ...

  5. fileoutputstream 字节乱码_吃透Java IO:字节流、字符流、缓冲流

    前言 有人曾问fastjson的作者(阿里技术专家高铁):"你开发fastjson,没得到什么好处,反而挨了骂背了锅,这种事情你为什么要做呢?" 高铁答道:"因为热爱本身 ...

  6. JAVA File类、IO流体验与简介(字节流、字符流、序列流、打印流、编码、递归)

    1. File类 1.1. File类说明 存储在变量,数组和对象中的数据是暂时的,当程序终止时他们就会丢失.为了能够永 久的保存程序中创建的数据,需要将他们存储到硬盘或光盘的文件中.这些文件可以移动 ...

  7. Java学习总结:42(字节流和字符流)

    字节流与字符流 上一节我们学习了文件操作类File,但是File类虽然可以操作文件,但是却不能操作文件的内容.如果要进行文件内容的操作,就必须依靠流的概念来完成.流在实际中分为输入流和输出流两种,输入 ...

  8. Java IO 字节流与字符流 (三)

    概述 IO流用来处理设备之间的数据传输 Java对数据的操作时通过流的方式 Java用于操作流的对象都在IO包中 流按操作的数据分为:字节流和字符流 流按流向不同分为:输入流和输出流 IO流常用基类 ...

  9. 字节流和字符流复制文件内容实例

    字节流和字符流复制文件内容实例 字节流: import java.io.File; import java.io.FileInputStream; import java.io.FileOutputS ...

最新文章

  1. LIVE 预告 | 旷视王剑锋:全卷积网络,可以实现更好的端到端目标检测吗?
  2. finereport 登录界面的代码文件_Confluence 6 自定义登录界面
  3. 15个JavaScript 编码小技巧
  4. 深度学习之卷积神经网络(4)LeNet-5实战
  5. 数据库系统原理(第四章:SQL与关系数据库基本操作 )
  6. c语言金箍棒答案,《西游记》阅读测试题(带答案)
  7. 几个国内外远程工作平台
  8. 洛谷 P5091 【模板】欧拉定理
  9. 消息中间件→产生原因、JMS与AMQP、主流消息中间件、基本概念、ActiveMQ、集群、实际场景问题解决方案、集成rabbitMQ与kafka
  10. 祝贺自己的软件《万能数据库查询分析器》在中关村在线下载量超过10万次
  11. C++ VS编译问题--VS下生成DLL,但没有生成Lib的解决办法
  12. python接入支付宝 40004 invalid-signature 错误原因: 验签出错
  13. html图片闪烁设置,HTMLCSS基础-图片按钮闪烁解决方案
  14. mysql网游单机架设_网游单机架设直观教程终结版.doc
  15. 现代计算机图形学笔记(六)——布林-冯反射模型、图形管线、纹理映射
  16. maple 求特征值
  17. [java8] Stream流
  18. android 系统自带的软件可以删除列表--Defy
  19. Lightoj 1258
  20. 【ROS基础】map、odom、base_link、laser 的理解 及其 tf 树的理解

热门文章

  1. 【整理】SIMD、MMX、SSE、AVX、3D Now!、neon——指令集大全
  2. 塔望 用食品改变世界
  3. cogs 1487. 麻球繁衍(概率dp)
  4. Cisco ❀ MPLS中的路由器角色
  5. 如何在Windows资源管理器中自定义文件夹背景和图标
  6. 如何利用Google机器人进行SQL攻击
  7. 安卓通过链接打开淘宝客户端
  8. portal无线认证服务器,无线AC配置portal认证功能portal 认证服务器问题
  9. vsphere添加数据存储_vsphere入门之数据存储与vMotion迁移技术
  10. 经济危机与金融危机的学术解释与通俗到庸俗的解释,包你明白