IO

在Java中的流主要分为两种:字节流和字符流。

InputStream抽象类与OutputStream抽象类分别是字节输入流和字节输出流的基类。(操作单位byte)

1、使用字节流类FileInputStream读文本文件

IO

例如:

FileInputStream fis = new FileInputStream(test.file);
  int data;   //用来接收读取到得数据
  System.out.println("当前文本文档中可读取的字节数:"+fis.available());
  //如果不循环只能读取到第一个字节的值
  while((data=fis.read())!=-1){  //循环读取,条件读到文件的结尾
   char c = (char)data;
   System.out.print(c+" ");
  }
  //将字节文件内容转换成字符串,然后查看文件内容
  fis.close();   //关闭流

2、使用FileOutputStream写文本文件

IO

例如:

  FileOutputStream fos = new FileOutputStream(file);
  System.out.println("请输入文本内容,输入end结束");
  Scanner input = new Scanner(System.in);
  String text;
  while (1 == 1) {
   text = input.next();
   byte[] text1 = text.getBytes(); // 将字符串转换成字节数组
   if (text.equals("end")) { // 当用户输入end的时候跳出循环
    break;
   }
   fos.write(text1);
  }
  fos.close();

 

Reader抽象类和Writer抽象类分别是字符输入流和字节输出流的基类。(操作单位char)
IO

IO

利用字符流类FileReader和BufferedReader读文本文件

1、FileReader类

   FileReader类以字符为单位读取文本文件。

2、BufferedReader类

   BufferedReader类可以从指定的文本文件以字符串为单位读取数据,它有一个带有默认长度的缓冲区,可以提高读取效率。

例如:

//用FileReader读取数据
 public static void main(String[] args) throws IOException {
  FileReader fr = new FileReader("G:\\homework.txt");
  BufferedReader br = new BufferedReader(fr);
  //读取文本中的第一行
  String line = br.readLine();
  while(line!=null){
   System.out.println(line);
   line=br.readLine();
  }
  br.close();
  fr.close();
 }

利用字符流类FileWriter和BufferedReader写文本文件

1、FileWriter类

   FileWriter类以字符为单位向文本文件写入数据。

2、BufferedReader类

   例如:  

FileWriter fw = new FileWriter("G:\\homework.txt");
  //BufferedWriter会覆盖原先文本中的原有内容
  BufferedWriter bw = new BufferedWriter(fw);
  bw.write("大家好~~");
  bw.newLine();   //换行
  bw.write("哈哈,我要修改内容了~~");
  bw.newLine();
  bw.write("哈哈,我修改完了~~");
  //清空缓冲区
  bw.flush();
  bw.close();
  fw.close();

 

二进制文件的读写

利用字节流DataInputStream读二进制文件

利用字节流类DataOutputStream写二进制文件

例如:

  FileOutputStream fos = new FileOutputStream("G:\\S1.txt");
  BufferedOutputStream bos = new BufferedOutputStream(fos);
  DataOutputStream dos = new DataOutputStream(bos);
  dos.writeInt(1);
  dos.writeLong(2);
  dos.writeChar('A');
  dos.writeUTF("hello");
  dos.close();
  bos.close();
  fos.close();
  System.out.println("dsfhgdsfghiu完成文件写入erwhtgiutegsdtfg");
  FileInputStream fis = new FileInputStream("G:\\S1.txt");
  BufferedInputStream bis = new BufferedInputStream(fis);
  DataInputStream dis = new DataInputStream(bis);
  // 先进先出 ,否则就会乱码
  System.out.println(dis.readInt());
  System.out.println(dis.readLong());
  System.out.println(dis.readChar());
  System.out.println(dis.readUTF());
  dis.close();
  bis.close();
  fis.close();

 

字节流和字符流的转换

1、InputStreamReader类

   InputStreamReader类使用指定的字符集从字节输入流中读取字符。

2、OutputStreamWriter类

   OutputStreamWriter类使用指定的字符集将字符以字节形式写入到字节输出流中。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值