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. javascript 学习笔记之JQuery中的Deferred对象

    Deffered是Jquery中的一个非常重要的对象,从1.5版本之后,Jquery中的ajax操作都基于Deffered进行了重构,这个对象的处理模式就像其他Javascript框中的Promise ...

  2. Start an installation from GRUB

    Start an installation from GRUB Description This tip will show you how to start an installation for ...

  3. ARM920T系统总线时序分析

    一.系统总线时序图 二.分析 第一个时钟周期开始,系统地址总线给出需要访问的存储空间地址. 经过Tacs时间后,片选信号也相应给出,并且锁存当前地址线上地址信息. 再经过Tcso时间后,处理器给出当前 ...

  4. iOS中的隐式动画

    隐式动画就是指  在 非 人为在代码中 定义动画  而系统却默认  自带   的动画  叫做隐式动画. 比如  改变 图层  的颜色  位置  和   透明度  的时候    都会  产生附带的渐变的 ...

  5. SSL交互和握手过程

    SSL消息按如下顺序发送:  1.Client Hello  客户发送服务器信息,包括它所支持的密码组.密码组中有密码算法和钥匙大小: 2.Server Hello  服务器选择客户和服务器都支持的密 ...

  6. Zoj 3865 Superbot

    按规则移动机器人 , 问是否能拾得宝藏 . 加了一个控制板 , 还增加了一个控制板移动周期 p 将移动周期变换一下 , 移动一次  就相当于光标向左不耗费时间的移动了一格 搜索思路 : 搜索当前格子到 ...

  7. python关键字

    python有多少关键字? >>> import keyword >>> keyword.kwlist ['and', 'as', 'assert', 'break ...

  8. Ubuntu14.04 和 Windows7 双系统安装

    用了一个暑假,我原来的Ubuntu终于挂了,连gnome桌面器都进不去了,索性重装整个Ubuntu.至少这次我知道什么都升级是一个很糟糕的行为. 由于笔者的电脑原来是Win8预装机,所以各种地方都是的 ...

  9. java + spring (jython\python\script) Error:SyntaxError: no viable alternative at character '\n'

    使用Jython结合java和Python开发功能时,要是遇到如下情况: 2016-03-10 16:16:49 DEBUG [com.freedom.orion.configs.JyhtonConf ...

  10. salt-API基本验证命令

    配置SALT-API,网上有很多,作下来也很顺利. 我的参考: 作一下验证的记录: curl -k https://x.x.x.x:8000/login -H "Accept: applic ...