FileInputStream和FileReader的区别与用法

         FileInputStream和FileReader都是用于读取文件的输入流,二者的不同在于,FileInputStream是以字节流的方式读入数据,而FileReader是以字符流的方式读取的。

        举个例子

saber万岁!!!

         这句话有英文字母,有汉字,还有标点符号。

         英文字母是一个字节

         汉字占两个字节

         标点符号占两个字节

         但是他们每个都是一个字符

        

public void ReadFileByFileStreamInput(File file) {//以字节方式读数据
		
		try {
			FileInputStream fis=new FileInputStream(file);
			byte[] buffer=new byte[2048];
			int len=fis.read(buffer);
			System.out.println("文件的内容是:"+new String(buffer,0,6));
	
			fis.close();

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

他的结果预想是saber万,但是实际情况确实“万”并没有被读完,所以没有被完全解析

public void ReadFileByFileReader(File file) {
		
		try {
			FileReader fr=new FileReader(file);
			int i;
			char[] buffer=new char[2048];
			while((i=fr.read(buffer))!=-1) {
				System.out.println(new String(buffer,0,6));
			}
			
			

			fr.close();

		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 但是如果以字符的方式读取的话,“万”字就可以被都出来了。

 

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: FileReaderFileInputStream都是用于读取文件的类。 FileReader是Java中的一个字符流,它可以读取文本文件中的字符。它继承自InputStreamReader类,可以将字节流转换为字符流。FileReader的使用非常简单,只需要创建一个FileReader对象,然后使用read()方法读取文件中的字符即可。 FileInputStream是Java中的一个字节流,它可以读取任何类型的文件。它继承自InputStream类,可以读取文件中的字节。FileInputStream的使用也很简单,只需要创建一个FileInputStream对象,然后使用read()方法读取文件中的字节即可。 ### 回答2: FileReaderFileInputStream都是用来读取文件内容的类。 FileReader是Reader类的子类,它是文本文件输入流的表示。它将文本文件的内容按字符读取,并且提供了适用于文本读取的一些便捷方法。它主要用于读取文本文件的内容,例如TXT文件。使用FileReader时,我们可以按字符、按行或按指定编码来读取文件内容。 FileInputStream是InputStream类的子类,它是字节流输入流的表示。它将文件的内容按字节读取,并且提供了适用于字节读取的一些方法。它主要用于读取二进制文件的内容,例如图片、视频或音频文件。使用FileInputStream时,我们通常会将其包装在其他的流类中(如BufferedInputStream或DataInputStream),以提供更高级的功能。 这两个类的区别在于,FileReader是按字符读取文本文件的类,而FileInputStream是按字节读取文件的类。如果我们需要读取文本文件的内容,可以使用FileReader来读取;如果需要读取二进制文件,可以使用FileInputStream来读取。另外,FileReader提供了更便捷的方法用于读取文本文件内容(如按行读取),而FileInputStream则需要我们自己来处理字节与字符的转换。 综上所述,FileReaderFileInputStream是用于读取文件内容的类,其主要区别在于读取的方式,一个按字符读取文本文件,另一个按字节读取文件内容。我们可以根据需求选择使用哪个类来读取文件。 ### 回答3: FileReaderFileInputStream都是用于读取文件的类,但是有一些不同之处。 1. FileReader是Java IO库中用于读取字符数据的类,而FileInputStream是用于读取字节数据的类。 2. FileReader继承自InputStreamReader类,它将字节流转换为字符流。而FileInputStream直接继承自InputStream类,用于读取字节流数据。 3. FileReader以字符为单位进行读取,可以读取包含Unicode字符的文件。而FileInputStream以字节为单位进行读取,将文件中的字节按照二进制进行处理。 4. FileReader可以读取文本文件的内容,并且提供了方便的字符操作方法,如read()、readLine()等。而FileInputStream只能读取字节流,需要自己处理字符编码和字符操作。 5. FileReader适用于读取文本文件,如.txt、.csv等格式的文件。而FileInputStream适用于读取任何类型的文件,包括二进制文件、图片、视频等。 总的来说,如果需要读取文本文件并进行字符操作,建议使用FileReader。如果需要读取任意类型的文件,或者需要处理字节流数据,可以使用FileInputStream

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值