在Java中把不同的输入输出源(键盘、文件、网路连接)抽象表述为“流”。

1.输入流、输出流

.字节输入流通过FileInputStream和来操作

字节输出流通过FileOutputStream来操作

2.字节流、字符流

字节流通过InputStream和OutputStream来操作,数据单元是8位的字节

字符流通过Reader和Writer来操作,数据单元是16位的字符

3.节点流、处理流

处理流可以包装节点流进行数据传输,通过处理流,Java程序无需理会输入输出节点是磁盘、网络还是其他输入输出设备,程序只要将节点包装成处理流,就可以使用相同的输入、输出代码来读不通的输入输出设备的数据。


文件字节输出(写)

方法一:

public class 文件输入输出流 {
 public static void main(String[] args) throws Exception {

//1、确定目标文件
  File file = new File("D:\\ccc.txt");
  FileOutputStream fos = null;
  //2、获取流
  try {
   fos = new FileOutputStream(file,true);
 //3、获取目标数据
  String str = "hello world!!!";
  //4、通过流提供的一些列方法 将目标数据 写入目标文件
  fos.write(str.getBytes());
  
 int num = 1/0;//除0异常
 } catch (Exception e) {
   // TODO Auto-generated catch block
 e.printStackTrace();
}finally{
   //finally无论是否发生异常 finally中的代码 都会执行

//5、关闭流
    try {
    fos.close();
    } catch (IOException e) {
     // TODO Auto-generated catch block
  e.printStackTrace();
    }
  }
  
  /**
   *方法二:
   */
  //1、确定目标文件
  File file = new File("D:\\ccc.txt");
  //2、确定流
  FileOutputStream fos = new FileOutputStream(file);
  //3、确定数据
  fos.write(97);

//4、关闭流
  fos.close();
  
  /**
   *方法三:
   */
//1、确定目标文件
 File file = new File("D:\\ccc.txt");
 //2、确定流
  FileOutputStream fos = new FileOutputStream(file);
//3、确定数据
 String str = "hello world!!!";
 //4、写入文件
//  /*参数一:目标数组
//   * 参数二:从哪里开始写
//   * 参数三:一共写入多少个
//   * write(b, off, len);
//   */
  fos.write(str.getBytes(), 2, 5);

//5、关闭流
  fos.close();


从文件中将数据读取出来

方法一:

public class 文件输入输出流 {  public static void main(String[] args) throws Exception {

//1、确定目标文件

File file = new File("D:\\ccc.txt");
  //2、获取流对象
 try {
  FileInputStream fis = new FileInputStream(file);
 //3、读取数据
 byte[] b = new byte[1024];//用于接受数据
  fis.read(b);
 //4、打印数据
//   /**
//    * 参数一:目标构造数组
//    * 参数二:从哪里开始构造
//    * 参数三:构造的长度
//    * String(byte[] bytes, int offset, int length)
//    * */
  System.out.println(new String(b,0,(int)file.length()));
  } catch (Exception e) {
   // TODO Auto-generated catch block
  e.printStackTrace();
  }
  
  /**
   * 方法二:
   */
 //1、确定目标文件
  File file = new File("D:\\ccc.txt");
  //2、确定流
  FileInputStream fis = new FileInputStream(file);
  //3、开始读
  byte[] b = new byte[1024];
  fis.read(b, 0, 3);

//4、关闭流
 fis.close();
  
 System.out.println(new String(b));
  
  /**
   * 方法三:
   */
//1、确定目标文件
 File file = new File("D:\\ccc.txt");
  //2、确定流
  FileInputStream fis = new FileInputStream(file);
//3、开始读数据
  /*
   * 注意:之前的读取方法 我们都是将数据 直接读到一个byte数组中
   * read():从文件中一个一个的读出来 
   * 如果有数据 读出来的是 ,每个字母对应的ascll码值
   * 如果读到最后 返回-1
   * 利用循环读出
   */
  StringBuffer sb = new StringBuffer();//用于拼接
  int temp = 0;//用于临时存储每个字节
  
  while((temp = fis.read())!= -1){
   sb.append((char)temp);
  }

//4、关闭流
  fis.close();
  
  System.out.println(sb.toString());

JAVA基础——IO流字节流的更多相关文章

  1. Java基础-IO流对象之字节流(Stream)

    Java基础-IO流对象之字节流(Stream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在前面我分享的笔记中,我们一直都是在操作文件或者文件夹,并没有给文件中写任何数据.现 ...

  2. Java基础IO流(二)字节流小案例

    JAVA基础IO流(一)https://www.cnblogs.com/deepSleeping/p/9693601.html ①读取指定文件内容,按照16进制输出到控制台 其中,Integer.to ...

  3. Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream)

    Java基础-IO流对象之字节缓冲流(BufferedOutputStream与BufferedInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我们学习字 ...

  4. Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter)

    Java基础-IO流对象之转换流(InputStreamReader与OutoutStreamWriter) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.转换流概述 我们之前 ...

  5. 《Java基础——IO流》

    Java基础--IO流       一.字节流:   1.输入流 (InputStream) 规则: 此处用于读取txt文件中的内容.   代码: import java.io.*; public c ...

  6. Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream)

    Java基础-IO流对象之压缩流(ZipOutputStream)与解压缩流(ZipInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 之前我已经分享过很多的J ...

  7. Java基础-IO流对象之随机访问文件(RandomAccessFile)

    Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...

  8. Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream)

    Java基础-IO流对象之内存操作流(ByteArrayOutputStream与ByteArrayInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.内存 ...

  9. Java基础-IO流对象之数据流(DataOutputStream与DataInputStream)

    Java基础-IO流对象之数据流(DataOutputStream与DataInputStream) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数据流特点 操作基本数据类型 ...

随机推荐

  1. cocos2dx游戏开发学习笔记2-从helloworld開始

    一.新建project 具体安装和新建project的方法在cocos2dx文件夹下的README.md文件里已经有具体说明,这里仅仅做简介. 1.上官网下载cocos2dx-3.0的源代码.http ...

  2. [计算机故障]为什么我的手机SD卡一打开就是说“你的磁盘未格式化,现在需要格式化吗”?

    现在随着智能手机的普及,越来越多的人使用到了手机SD卡.也有的是micro SD(更小一些). 最近一个朋友说,为什么我的手机SD卡插到手机里一打开就是说“你的磁盘未格式化,现在需要格式化吗?” 但是 ...

  3. Spring中定时器实现

    在Spring 中使用Quartz,本文介绍Spring3.0以后自主开发的定时任务工具,spring task,可以将它比作一个轻量级的Quartz,而且使用起来很简单,除spring相关的包外不需 ...

  4. 内容原发网站seo不重视2个标签,导致seo效果不如转发网站

    采集数据,挖掘观点,小心求证,得出结论 时间经过 今日凌晨,爬虫热点采集,其中第一财经是目标站之一,采集到了 http://www.yicai.com/news/5391233.html 谷歌去年悄然 ...

  5. [mac]WireShark检測不到网卡怎么办?

    wireshark是一个很好用的抓包工具,有windows版本号和mac版本号,在mac下安装wireshark,启动后发现提示"There are no interfaces on whi ...

  6. YTU 2506: 切面条

    2506: 切面条 时间限制: 1 Sec  内存限制: 128 MB 提交: 382  解决: 223 题目描述 一根高筋拉面,中间切一刀,可以得到2根面条.      如果先对折1次,中间切一刀, ...

  7. mac ox终端显示 bogon的问题

    mac终端显示如果正常应该是电脑名称(偏好设置-共享)的,但是细心的我们会发现,当电脑换了网络环境之后,可能就会出现终端上显示为主机名为:bogon,一查bogon这个单词是虚拟.虚伪的意思.     ...

  8. BZOJ_4398_福慧双修&&BZOJ_2407_探险_分治+dij

    BZOJ_4398_福慧双修&&BZOJ_2407_探险_分治+dij Description 菩萨为行,福慧双修,智人得果,不忘其本. ——唐朠立<大慈恩寺三藏法师传> ...

  9. 手推FP-growth (频繁模式增长)算法------挖掘频繁项集

    一.频繁项集挖掘为什么会出现FP-growth呢? 原因:这得从Apriori算法的原理说起,Apriori会产生大量候选项集(就是连接后产生的),在剪枝时,需要扫描整个数据库(就是给出的数据),通过 ...

  10. 6. extjs panel layoutconfig属性

    转自:https://blog.csdn.net/xingtianyiyun/article/details/7686811 layoutConfig: Object 这是一个包含指定布局详细属性的对 ...