当前位置: 首页 > news >正文

FileInputStream与FileOutputStream类

FileInputStream与FileOutputStream类

转载于网络 
FileInputStream与FileOutputStream类
 
  • 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构造函数把字节数组转化为字符串
      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();
   }
}
 

 

转载于:https://www.cnblogs.com/gegang/p/4458440.html

相关文章:

  • Octopus系列之数据上传格式要求说明
  • IIS 之 HTTP 错误 500.19(无法访问请求页面,因为该页的相关配置数据无效)
  • 依据波形的转折点文件,转换成波形文件
  • springMvc 入门学习(自动生成 springmvc 单表 两关联表 生成 及显示)
  • HealthKit开发教程之HealthKit的主要类型数据
  • java.io.FileNotFoundException: /exapp/hadoop/name/current/VERSION (Permission denied)
  • 北漂到底要不要回老家发展?
  • openwrt开源系统LUCI配置界面
  • Apache benchmark对网站进行压力测试
  • mybatis generator生成代码工具的使用
  • SharePoint 2016 的新特性概览(二)(What's New for IT Professionals in SharePoint Server 2016)...
  • 后缀数组 --- HDU 3518 Boring counting
  • C++语言基础 例程 基类与派生类的转换
  • CDA数据分析师认证考试模拟题库
  • CDH使用之CM 5.3.x安装
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 03Go 类型总结
  •  D - 粉碎叛乱F - 其他起义
  • HashMap ConcurrentHashMap
  • IP路由与转发
  • Laravel Telescope:优雅的应用调试工具
  • maya建模与骨骼动画快速实现人工鱼
  • Node + FFmpeg 实现Canvas动画导出视频
  • Spring Boot快速入门(一):Hello Spring Boot
  • webpack入门学习手记(二)
  • Xmanager 远程桌面 CentOS 7
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 什么是Javascript函数节流?
  • 新手搭建网站的主要流程
  • 源码安装memcached和php memcache扩展
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ###C语言程序设计-----C语言学习(6)#
  • #define 用法
  • (cos^2 X)的定积分,求积分 ∫sin^2(x) dx
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (zhuan) 一些RL的文献(及笔记)
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (三)elasticsearch 源码之启动流程分析
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (一)为什么要选择C++
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)编辑寄语:因为爱心,所以美丽
  • **PHP二维数组遍历时同时赋值
  • *p++,*(p++),*++p,(*p)++区别?
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .NET精简框架的“无法找到资源程序集”异常释疑
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • [2669]2-2 Time类的定义
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)
  • [C#]C# OpenVINO部署yolov8图像分类模型
  • [C++参考]拷贝构造函数的参数必须是引用类型