javase IO流与文件读写

文件读写

Java中通过流来读写文件,流是指一连串流动的字符,是以先进先出方式发送信息的通道。
image.png
输入/输出流与数据源:
image.png

Java流的分类:
image.png

输入输出流是相对于计算机内存来说的。
image.png

字节流与字符流的区别

字符流的底层就是字节流。而字符流主要是读取文本文件内容的,可以一个字符一个字符的读取,也可以一行一行的读取文本文件内容,而字节流读取单位为byte。byte作为计算机存储最基本单位,可以用字节流来读取很多其他格式的文件,比如图片视频等等。基于B/S和C/S的文件传输都可以采用字节流的形式。在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。只是读写文件,和文件内容无关的,一般选择字节流。
字节流就是按照字节来进行传输,字符流是按照字符来传输.最基本的是字节流,字符流可以说是对字节流的一个包装流,比如你知道了一个字符是8个字节,那么你让字节流一次传输8个字节,那不就相当于一次传输一个字符,也就是字符流了。

字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢?
实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在操作时使用了缓冲区,通过缓冲区再操作文件,如图:
image.png

创建文件和读取文件徳实操:

package com.zwy.demo2;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;

public class StreamTest {
	 public static void byteWrite() {
	        File file = new File("d:\\test\\test.txt");
	        try {
	            OutputStream outputStream = new FileOutputStream(file);
	            String textString = "Hello World!!!";
	            byte[] data = textString.getBytes();
	            outputStream.write(data);
	            //outputStream.close();
	        } catch (IOException e) {
	            System.out.println("字节流写入文件出错。");
	            e.printStackTrace();
	        }
	    }
	 
	  /*
	   * 读取文件
	   */
	  public static String read(String fileName) {
	      File f = new File(fileName);
	      if (!f.exists()) {
	          return "File not found!";
	      }
	      FileInputStream fs;
	      String result = null;
	      try {
	          fs = new FileInputStream(f);
	          byte[] b = new byte[fs.available()];
	          fs.read(b);
	          fs.close();//释放资源
	          result = new String(b);
	      } catch (Exception e) {
	          e.printStackTrace();
	      }

	      return result;
	  }
	 
	 public static void main(String[] args) {
		 StreamTest.byteWrite();
		 String result = StreamTest.read("d:\\test\\test.txt");
	     System.out.println(result);

          }
	 }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值