javaIO流
 
IO流 : (input  output) 输入输出流 :输入 :将文件读到内存中 输出:将文件从内存输出到其他地方。
 
IO技术的作用:主要就是解决设备和设备之间的数据传输问题。比如:硬盘到--->内存,内存数据--->硬盘中--->内存,内存数据--->硬盘中 把键盘中的数据写入到内存。
 
将U盘中文件 拷贝到电脑中 :输入流--->读到内存 --->通过输出流读到电脑磁盘中。
 
IO的应用场景:
  比如:打卡机导出信息表
  比如:注册的时候图片的上传。
  比如:下载功能
   解析XML
数据保存到本地,数据一个永久保存。数据保存到磁盘上是以文件的形式存在。所以现在学习文件的造作。
 
java中是通过File文件类来操作文件和文件夹。
 
目录的分隔符:
   在Windows系统上目录分隔符:\,但是Linux系统上的目录分隔符是:/
注意点:在Windows上\或者/都可以作为目录的分隔符。如果你用的反斜杠
 
 
路径问题:
  结对路径:文件在硬盘上的完整路径。绝对路径一般都是以盘符开头D:\\a.txt 
  相对路径:相对路径就是资源文件相对当前程序所在的路径。
 
 
 
 
 IO流 : 作用 :用于设备和设备之间的数据传输。
  File类的使用 :操作问价的属性
  
  IO流:用来操作文件的数据。
  
  IO流的分类:
     流按照操作数据的类型分为两种: 字节流  ,字符流
     
     字节流 : 读取的是文件的二进制数据,不会对二进制做处理。不会解析成比看得懂的数据。
     字符流 :读取的也是二进制数据,他会将二进制数据转化为我们能过识别的字符(解码)。  字符流是以字符单位的。
                   字符流 = 字节流 + 解码。
         
   流按照流的方向: 输入流和输出流。
   判断流是输出还是输入: 以当期的应用程序为参考 ,观察数据是流入还是流出,如果是流入就输入流 ,如果是流出就是输出流。
   
 
 //====================字节流========================
 
 1.字节输入流:
 
     InputStream :此抽象类是表示字节输入流的所有类的超类 ,抽象的类
     如何判断一个流值字节输入流 :
           判断一下他的类名是否以InputStream结尾。
    
   使用 FileInputStream: 是InputStream的子类
   
   FileInputStream使用步骤:
      1.找到目标文件
      2.建立通道
      3.创建一个缓冲区
      4.读取数据
      5.关闭资源
 
public class Demo1 {
 
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//         getFile();
// getFile2();
// getFile3();
getFile4();
}
 
//方式四:通过创建缓冲区和循环的方式来读取
public static void getFile4() throws IOException{
 
  //1.找目标文件
  File file = new File("D:\\java课件及资料\\第十九次课\\代码\\Day19\\src\\com\\beiwo\\homework\\HomeWork.java");
  //2.建立通道
  FileInputStream fileInputStream = new FileInputStream(file);
  //3.创建一个缓冲区
  byte[] b = new byte[1024]; // 一般写1024倍数
  //4.读取数据
  int count = 0;
  while((count = fileInputStream.read(b))!=-1){
  
  System.out.println(new String(b,0,count));
  }
  //5.关闭资源
  fileInputStream.close();
}
 
 
//方式三:创建缓冲区来读取数据     缺陷不能够读取一个完整的文件
public static void getFile3() throws IOException{
//1.找目标文件
File file = new File("D:\\a.txt");
//2.建立通道
FileInputStream fileInputStream = new FileInputStream(file);
//3.创建一个缓冲区
byte[] b = new byte[1024];
//4.读数据
//缓冲区来读数据 : 数据存在哪里  
//数据是存在缓存区字节数组中的
//返回值就是文件的大小。
int count = fileInputStream.read(b);
System.out.println(count);
//String里面帮我们做了解码功能
System.out.println(new String(b, 0, count));
 
//5.关闭资源
fileInputStream.close();
 
}
 
 
//方法二:用循环来读取字节数 缺点读取的效率不高
public static void getFile2() throws IOException{
 
//1.找目标文件
File file = new File("D:\\a.txt");
//2.建立通道
FileInputStream fileInputStream = new FileInputStream(file);
//3.读数据
/*for(int i = 0;i<file.length();i++ ){//有多少个字节就去多少次
char c = (char)fileInputStream.read();
System.out.print(c);
}*/
 
int c 0;
//通过while循环调用read()的方法 ,如果返回的值以-1表示文件没有内容了。
while((c fileInputStream.read())!= -1){
 
System.out.print((char)content);
}
 
//4.关闭资源
fileInputStream.close();
}
 
 
//方法一:每次只读取一个字节
public static void getFile() throws IOException{
 
//1.找到目标文件
File file = new File("D:\\a.txt");
//2.建立通道
FileInputStream fileInputStream = new FileInputStream(file);
//3.读取文件中的数据
//read() 只获取一个字节
int data = fileInputStream.read(); //a 第一个字节  
int data2 = fileInputStream.read();
System.out.println("获取的数据:"+data2);
//4.关闭资源(释放资源)
fileInputStream.close();
}
 
}
 
 
 
 
 
 
 
 
package com.beiwo.InputStream;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;

 

2.字节输出流 :
       OutPutStream : 他也是所有字节输出流的超类 ,也是一个抽象的类 ,使用子类
            -----FileOutputStream   文件输出流
            
      
      FileOutputStream 的使用步骤:
            1.找到目标文件
            2.建立通道
            3.写入数据
            4.关闭资源
            
  FileOutputStream的使用注意事项:
          1.使用FileOutputStream写数据的时候,如果目标文件不存在,那么就会自己创建一个目标文件对象。
          2.使用FileOutputStream写数据的时候,如果目标文件存在,先将里面的数据清空,在写入数据。
          3.使用FileOutputStream写数据的时候,如果目标文件存在,想将数据在原有的基础上追加,这个
                             时候就应该使用FileOutputStream(File file, boolean append) 构造方法,  append如果为true表示
                             可以追加数据,反之不信。
          4..使用FileOutputStream写数据的时候,用write(int a)方法写数据,虽然接收的是int ,但实际上只有一个字节的数据,
                            操作的是低八位的二进制 ,其他的24位全部丢掉。
                            
 
                            
 练习题: 将一张图片拷贝到另外一个地方。
 
 字节输出流代码:
public class Demo2 {

    /**
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        // TODO Auto-generated method stub
      writeData();
        
        //writeData2();
      
      FileInputStream inp = new FileInputStream(new File("D:\\a.txt"));
      byte[] b = new byte[1024];
      inp.read(b);
      System.out.println(Arrays.toString(b));
      
    }
    
    //方式二:
    public static void writeData2() throws IOException{
        //1.找目标文件
        File file = new File("D:\\a.txt");    
        //2.创建一个通道
        FileOutputStream outputStream = new FileOutputStream(file,true);  // 在这一步创建的文件。
        //3.创键一个字节数组
        String str = "hello word";
        //将字符串变为字节数组
        byte[] b = str.getBytes();
        
        //4.写入数据
        outputStream.write(b);
        
        //5.关闭资源
        outputStream.close();
        
        
    }
    
    //方式一
    public static void writeData() throws IOException{
        //1.找目标文件
        File file = new File("D:\\a.txt");
        
        //2.创建一个通道
        FileOutputStream outputStream = new FileOutputStream(file);
        
        //3.开始写入数据
        /*int a = 10; // 4个字节  
        outputStream.write(a); //每次输出一个字节
        outputStream.write('b');
        outputStream.write('c');*/
        
        // 0000-0000 0000-0000 0000-0001 1111-1111  ==  511
        int a = 127;
        outputStream.write(a); // 255
        //4.关闭资源
        outputStream.close();
    }

}

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

java基础之 IO流的更多相关文章

  1. java基础之IO流(二)之字符流

    java基础之IO流(二)之字符流 字符流,顾名思义,它是以字符为数据处理单元的流对象,那么字符流和字节流之间的关系又是如何呢? 字符流可以理解为是字节流+字符编码集额一种封装与抽象,专门设计用来读写 ...

  2. java基础之IO流(一)字节流

    java基础之IO流(一)之字节流 IO流体系太大,涉及到的各种流对象,我觉得很有必要总结一下. 那什么是IO流,IO代表Input.Output,而流就是原始数据源与目标媒介的数据传输的一种抽象.典 ...

  3. Java基础之IO流整理

    Java基础之IO流 Java IO流使用装饰器设计模式,因此如果不能理清其中的关系的话很容易把各种流搞混,此文将简单的几个流进行梳理,后序遇见新的流会继续更新(本文下方还附有xmind文件链接) 抽 ...

  4. 【java基础】]IO流

    IO流 概念: 流的概念源于unix中管道(pipe)的概念,在unix中,管道是一条不间断的字节流,用来实现程序或进程间的通信,或读写外围设备,外部文件等 一个流,一定能够会有源和去向(目的地),他 ...

  5. java基础44 IO流技术(输出字节流/缓冲输出字节流)和异常处理

    一.输出字节流 输出字节流的体系: -------| OutputStream:所有输出字节流的基类(抽象类) ----------| FileOutputStream:向文件输出数据的输出字节流(把 ...

  6. java基础之io流总结一:io流概述

    IO流概念: 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.io流是实现输入和输出的基础,可以方便的实现数据的输入和输出操作. IO流的分类: 根据处理数据类型的不同分为:字符流 ...

  7. 黑马程序员——JAVA基础之IO流FileReader,FileWriter

    ------- android培训.java培训.期待与您交流! ---------- IO(Input Output)流  IO流用来处理设备之间的数据传输 Java对数据的操作是通过流的方式 J ...

  8. java基础06 IO流

    IO用于在设备间进行数据传输的操作. Java IO流类图结构:   IO流分类 字节流: InputStream FileInputStream BufferedInputStream Output ...

  9. java基础之IO流及递归理解

    一.IO流(简单理解是input/output流,数据流内存到磁盘或者从磁盘到内存等) 二.File类(就是操作文件和文件夹的) 1.FIleFile类构造方法 注意:通过构造方法创建的file对象是 ...

随机推荐

  1. Linux 特殊权限位

    特殊权限位 LINUX 基本权限有9位但是还有三位特殊权限. suid s(有x权限) S(没有x权限) 4 在用户权限的第三位 sgid s(有x权限) S(没有x权限) 2 在用户组权限的第三位 ...

  2. python读取excel文件

    一.xlrd的说明 xlrd是专门用来在python中读取excel文档的模块,使用前需要安装. 可以到这https://pypi.python.org/pypi/xlrd进行下载tar.gz文件,然 ...

  3. 学习Swift -- 协议(上)

    协议(上) 协议是Swift非常重要的部分,协议规定了用来实现某一特定工作或者功能所必需的方法和属性.类,结构体或枚举类型都可以遵循协议,并提供具体实现来完成协议定义的方法和功能.任意能够满足协议要求 ...

  4. 自定义Web控件写事件

    --------------------myRegister1.ascx前台代码----------------------- <script src="js/Jquery1.7.js ...

  5. 关于if/else if

    今天写存储过程的时候发现了个问题,就是在用if.elsif拼接sql的时候,得到的结果跟想象中 的不一样,大概描述是:  我传进去多个参数,然后判断每个字段是否为空,非空则将字段拼接上去,结果跟预料的 ...

  6. ZeroBraneStudio之支持GBK文件编码

    费了好大劲终于搞定了让ZBS支持打开GBK文件了.记录下过程: 看源码发现ZBS打开文件时会调用src\editor\commands.lua中的LoadFile函数,代码如下: local file ...

  7. 转:使用Tengine替代Nginx作为负载均衡服务器

    原文来自于:http://heylinux.com/archives/2938.html Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级 ...

  8. 并发视频,怎么hold住高并发

    http://v.qq.com/boke/page/z/w/s/z0110e15rws.html http://weibo.com/codebox

  9. Jquery的attr属性

    在JS中设置节点的属性与属性值用到setAttribute(),获得节点的属性与属性值用到getAttribute(),而在jquery中,用一个attr()就可以全部搞定了,赞一个先 ^^ jque ...

  10. Windows消息对Edit控件的处理

    例如对windows发消息让文本选中. SendMessage(Text1.hwnd,EM_GETSEL,0,-1 ); EC_LEFTMARGIN(&H1) EC_USEFONTINF // ...