FileInputStream和FileReader的区别

G2O (General Graph Optimization)入门及简单使用 g2o全称是General Graph Optimization,也就是图优化,我们在做SLAM后端或者更加常见的任何优化问题(曲线拟合)都可以使用G2O进行处理。 阅读详情

简述FileInputStreamFileReader的区别

核心提示:) File 类介绍 File 类封装了对用户机器的文件系统进行操作的功能。例如,可以用 File 类获得文件上次修改的时间,移动,或者对文件进行删除、重命名。换句话说,流类关注的是文件内容,而 File 类关注的是文件在磁盘上的存储 File 类的主要方法有(),last

) File 类介绍

File 类封装了对用户机器的文件系统进行操作的功能。例如,可以用 File 类获得文件上次修改的时间,移动,或者对文件进行删除、重命名。换句话说,流类关注的是文件内容,而 File 类关注的是文件在磁盘上的存储

File 类的主要方法有(),lastMod: getName(),getCanonicalFileified(),isDerector(),isFile(),getPath() 等;

) File 类与 FileInputStream 类的区别:

流类关注的是文件内容,而 File 类关注的是文件在磁盘上的存储。

File 不属于文件流 只能代表一个文件或是目录的路径名而已。

提示:

如果处理文件或者目录名,就应该使用 File 对象,而不是字符串。例如, File 类的 equals 方法知道一些文件系统对大小写是敏感的,目录尾的“ / ”字符无关紧要。

FileInputStream 类或者 FileReader 类的构造函数有多个,其中典型的两个分别为:一个使用 File 对象为参数;而另一个使用表示路径的 String 对象作为参数;自己以前一直觉得直接用了 String 指定路径就可以了,一直不明白为什么很多人都先构造一个 File 对象,现在终于明白了,如果处理文件或者目录名,就应该使用 File 对象,而不是字符串。

 

FileInputStream 

) FileInputStream 类介绍:

以字节为单位的流处理。字节序列:二进制数据。与编码无关,不存在乱码问题。

FileInputStream 类的主要方法有:

Read (), read ( byte[] b ), read ( byte[],int off,int len ) ,available();

) FileInputStream 类与 FileReader 类的区别:

两个类的构造函数的形式和参数都是相同的,参数为 File 对象或者表示路径的 String ,它们到底有何区别呢?

FileInputStream :以字节流方式读取;

FileReader :把文件转换为字符流读入;

InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。

Reader类及其子类提供的字符流的读取charinputStream及其子类提供字节流的读取byte,所以FileReader类是将文件按字符流的方式读取,FileInputStream则按字节流的方式读取文件;InputStreamReader可以将读如stream转换成字符流方式,是readerstream之间的桥梁

最初Java是不支持对文本文件的处理的,为了弥补这个缺憾而引入了ReaderWriter两个类。

FileInputStream 类以二进制输入 输出, I/O 速度快且效率搞,但是它的 read ()方法读到的是一个字节,很不利于人们阅读。 而 FileReader 类弥补了这个缺陷,可以以文本格式输入输出,非常方便;比如可以使用 while((ch = filereader.read())!=-1 ) 循环来读取文件;可以使用BufferedReader 的 readLine() 方法一行一行的读取文本。 当我们读写文本文件的时候,采用 Reader 是非常方便的,比如 FileReader , InputStreamReader 和 BufferedReader 。其中最重要的类是 InputStreamReader ,它是字节转换为字符的桥梁。 你可以在构造器中指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如 GBK 等。 FileReader 与 InputStreamReader 涉及编码转换 指定编码方式或者采用 os 默认编码 ,可能在不同的平台上出现乱码现象!而 FileInputStream 以二进制方式处理,不会出现乱码现象 如果处理纯文本文件,建议使用 FileReader ,因为更方便,也更适合阅读;但是要注意编码问题!其他情况(处理非纯文本文件),FileInputStream是唯一的选择;FileInputStream是进Socket通讯时会用到很多,如将文件流是Stream的方式传向服务器!

 

FileReader 

FileReader 类介绍:

InputStreamReader 类的子类,所有方法(read ()等)都从父类 InputStreamReader 中继承来;

与 InputStreamReader 类的区别:

该类与它的父类 InputStreamReader 的主要不同在于构造函数,主要区别也就在于构造函数!从 InputStreamReader 的构造函数中看到,参数为 InputStream 和编码方式,可以看出,当要指定编码方式时,必须使用 InputStreamReader 类;而 FileReader 构造函数的参数与 FileInputStream 同,为 File 对象或表示 path 的 String ,可以看出,当要根据 File 对象或者 String 读取一个文件时,用 FileReader 我想FileReader 子类的作用也就在于这个小分工吧。

一般用法:

1 FileReader fr = new FileReader("ming.txt");   

1   

1    char[] buffer = new char[1024];   

1   

1    int ch = 0;   

1   

1    while((ch = fr.read())!=-1 )   

1   

1    {   

1   

1     System.out.print((char)ch);   

1   

1    }   

 

InputStreamReader 

以文本格式输入 输出,可以指定编码格式;

主要方法: getEncoding ()read();

一般用法:

1 InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));   

1   

1    while((ch = isr.read())!=-1)   

1   

1    {   

1   

1     System.out.print((char)ch);   

1   

1    }   

 

BufferedReader 

BufferedReader Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取分行文本很适合,BufferedReader是针对Reader的,不直接针对文件,也不是只针对文件读取。

一般用法:

1 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream   

1   

1 ("ming.txt")));   

1   

1   String data = null;   

1   

1   while((data = br.readLine())!=null)   

1   

1   {   

1   

1    System.out.println(data);   

1   

1   }   

     

总结以上内容,得出比较好的规范用法:

1

1 File file = new File ("hello.txt");   

1   

1 FileInputStream in=new FileInputStream(file);   

1   

1 InputStreamReader inReader=new InputStreamReader(in);   

1   

1 BufferedReader bufReader=new BufferedReader(inReader);   

2

1 FileInputStream innull;   

1   

1 File file = new File ("hello.txt");   

1   

1 in=new FileInputStream(file);   

1   

1 BufferedReader bufReader=new BufferedReader(new InputStreamReader(in));   

3

1 File file = new File ("hello.txt");   

1   

1 BufferedReader bufReader=new BufferedReader(new InputStreamReader(new FileInputStream(file)));   

 

上述两种写法的微小区别:

a)第二种方式中把“FileInputStream innull;”定义单独放在开始处,说明下面应该还有要用到in对象变量的地方;(BufferedReader处用了)

b)第二种方式没有定义InputStreamReader的对象变量,直接在BufferedReader的构造函数中new一个,这种方式与第一种方式的主要区别:InputStreamReader对象只使用一次!这对于在这里只需要使用一次这个InputStreamReader对象的应用来说更好;无需定义InputStreamReader的对象变量,接收由new返回的该对象的引用,因为下面的程序中不需要这个InputStreamReader的对象变量,所以无需定义;所以这种情况下,第二种方式比第一种更好一些。

c)第三种方式中,典型的三层嵌套委派关系,清晰看出Reader的委派模式(《corejava12章有图描述该委派关系),FileInputStreamInputStreamReader都没有定义变量,new生成的对象都只是使用一次。

d)三种方式的区别也就在于FileInputStreamInputStreamReader对象是否都只使用一次,是否需要定义它们的对象变量,以及个人的编码习惯。

e)但是要注意异常处理,FileInputStream(file)会抛出NotFileFoundException,如果采用surround方式(try&catch)处理,应该用第二种方式,这样可以用System.out.println提示文件未找到;当然在函数名后使用throws Exception,然后用第三种方式也行,但似乎这适合有用户界面的情况,把异常抛出在客户端在处理。

一个非常简单的变分量子分类器 (VQC) ​ 在之前的帖子(这里这里)中,我已经开始谈论 QML,为什么以及如何学习,从现在开始,我将开始分享我的研究发现,到目前为止,这些都是非常基本的。​ 阅读详情

相关推荐

Java文件处理:上传、File类与FileInputStream区别联系

本文还有配套的精品资源,点击获取 简介:在Java Web开发中,文件上传、File类FileInputStream是处理文件操作的核心组件。文件上传是用户向服务器发送文件的过程,可以使用Servlet、Apache Commons FileUpload或Spring MVC实现。File类是操作文件路径目录的基础,提供文件存在性检查、创建、删除等方法。FileInpu...

weixin_42360733的博客 1207

简述FileInputStreamFileReader区别

1 ) File 类介绍File 类封装了对用户机器的文件系统进行操作的功能。例如,可以用 File 类获得文件上次修改的时间,移动,或者对文件进行删除、重命名。换句话说,类关注的是文件内容,而 File 类关注的是文件在磁盘上的存储 File 类的主要方法有(),lastMod: getName(),getCanonicalFileified(),isDerector(),isFile

xx_liuhui的专栏 1733

有关java上传File以及FileInputStream区别

NULL 博文链接:https://coffeesweet.iteye.com/blog/812263

JavaScript之File FileReader

File FileReaderFile 对象第一种,与 Blob 类似,有一个构造器:第二种,更常见的是,我们从 或拖放或其他浏览器接口来获取文件。在这种情况下,file 将从操作系统(OS)获得 this 信息。FileReaderFileReader 用于 Blob总结 File 对象 File 对象继承自 Blob,并扩展了与文件系统相关的功能。 有两种方式可以获取它。 第一种,与 Blob 类似,有一个构造器: new File(fileParts, fileName, [options])

weixin_40581714的博客 2064

fileInputstream file

public class FileInputStream extends InputStream 一个fileinputStream 获得输入的字节从文件系统中的文件。  FileInputStream是读取原始字节的图像数据。读取字符,考虑使用FileReader 构造方法: 1、FileInputStream(File file) 打开一个连接到一个实际的文件 创建一个F

linbichengdeps的博客 1065

Java FileInputStreamFileReader区别

在解释Java中FileInputStreamFileReader的具体区别之前,我想讲述一下Java中InputStreamReader的根本差异,以及分别什么时候使用InputStreamReader。实际上, InputStreamReader都是抽象类,并不直接地从文件或者套接字(socket)中读取数据。然而,它们之间的主要差别在于:InputStream用于读取二进制...

WGH100817的博客 183

FileInputStreamFileReader区别与用法

FileInputStreamFileReader都是用于读取文件的输入,二者的不同在于,FileInputStream是以字节的方式读入数据,而FileReader是以字符的方式读取的。 举个例子 saber万岁!!! 这句话有英文字母,有汉字,还有标点符号。 英文字母是一个字节 汉字占两...

qq_43135849的博客 1998

FileReaderFileInputStream区别

FileReader是按照字符读取的 FileInputStream是按照字符读取的 so FileReader可以读取中文文件 如果需要读取中文文件,那就使用FileReader

Leefy1的专栏 689

FileReader FileInputStream InputStreamReader BufferedReader 作用与区别

FileReader FileInputStream InputStreamReader BufferedReader 作用与区别 ava.io下面有两个抽象类:InputStreamReader InputStream是表示字节输入的所有类的超类 Reader是用于读取字符的抽象类 InputStream提供的是字节的读取,而非文本读取,这是Reader类的根本区别。 即用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。 弄清了两个超类

qq_42005540的博客 1509

FileInputStream与BufferedInputStreamFileInputStreamFileReader区别

FileInputStream与BufferedInputStream区别FileInputStream是字节,BufferedInputStream是字节缓冲,使用BufferedInputStream读资源比FileInputStream读取资源的效率高(BufferedInputStream的read方法会读取尽可能多的字节),且FileInputStream对象的read方法会出现

LVXIANGAN的专栏 5888

InputStreamReaderFileInputStream FileReader区别

一、InputStreamReader区别 InputStreamReader都可以用来读数据(从文件中读取数据或从Socket中读取数据),最主要的区别如下: InputStream用来读取...

qq_29069777的博客 389

Java文件FileInputStreamFileReader区别

文件主要有FileInputStream、FileOutputStream、FileReader、FileWriter这四个类,下面根据他们读写数据时的操作单位,分成两组进行介绍。

shgsjshd的博客 485

Java中FileInputStream,FileReader等的区别

1. File类  1)File类介绍 File类封装了对用户机器的文件系统进行操作的功能。例如,可以用File类获得文件上次修改的时间移动,或者对文件进行删除、重命名。换句话说,类关注的是文件内容,而File类关注的是文件在磁盘上的存储。  File类的主要方法有:getName(),getCanonicalFile(),lastModified(),isDerector(),isFil

Java 之 道 3094

java中FileInputStream,FileReader等的区别

FileInputStream,FileReader   C语言只需要一个File*就可以了,与C不同,java有一系列类型,其数量超过60种。类库的设计者声称:“有足够的理由为用户提供丰富的类型的选择:这样做可以减少程序的错误。”例如,在C语言种,许多人认为“将输出写入一个只读模式的文件”是很常见的错误。(事实上,这并不常见。) 我们认为在C++语言中,接口设计者避免程

大数据 1192

FileReader FileInputStream区别

java.lang.Object----java.io.Reader----java.io.InputStreamReader----java.io.FileReader java.lang.Object----java.io.InputStream----java.io.FileInputStream FileReader是读取字符FileInputStream读取的是字节

u010705091的专栏 749

WIS文件转换为文本文件的C--源代码_wis_wis转txt的c源代码_

本文件介绍了测井数据wis类型转换问题,可以把测井数据wis格式文件转文本文件,采用c/c++源代码

上一篇: docker使用阿里云Docker镜像库加速
changeCourage
博客等级 码龄10年 1粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值