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 下的 blog客户端

    apt-cahce search metaweblog found gnome-blog blogilo try blogilo

  2. WPF AutoGeneratingColumn 绑定下拉框

    WPF自动产生列,前台代码: <DataGrid x:Name="Dg" AutoGenerateColumns="True" CanUserAddRow ...

  3. 控制器view加载

    出自李明杰讲课视频

  4. Multilingual App Toolkit v2.2 release

    Multilingual App Toolkit v2.2 release Today we released Multilingual App Toolkit v2.2. This release ...

  5. 在Windows下读取Ext4分区

    转自在Windows下读取Ext4分区 本文介绍两个能在 Windows 下读取ext4分区的软件. 第一个是 Ext2Read.它能查看 ext2/3/4 分区并从中拷贝文件和目录,支持 LVM2 ...

  6. 如何监控 Nginx?

    什么是 Nginx? Nginx("engine-x")是一个 HTTP 和反向代理服务器,同时也是一个邮件代理服务器和通用的 TCP 代理服务器.作为一个免费开源的服务器,Ngi ...

  7. django作models的UPDATE时,注意有过滤外键的情况

    就是如果要过滤的时候,存在外键,则需要取到原始字段的名称,不然就是ID. 原始名称以__(双下划线)引用. 如: def path2db(release_version, develop_versio ...

  8. QPainter类学习

    详细描述: QPainter类提供了许多高度优化的函数去做大部分的GUI绘制工作.它可以画从简单的线到复杂的形状.通常情况下,QPainter的使用是在widget当中的painter事件使用.记得在 ...

  9. Innodb和MyISAM比较

    Innodb和MyISAM比较 (1)MyISAM类型的表强调的是性能,其执行速度比InnoDB类型更快 (2)MyISAM不支持事务.外键,InnoDB支持事务和外键 (3)MyISAM使用的表级锁 ...

  10. android通用文件操作

    最经用到android的SCCard的文件操作,因此稍作了整理,将它写成一个简单的工具类.其中,可以判断SDCard的是否可用,可用存储空间,文件的创建以及写入数据.经过测试,可以正常使用.代码如下: ...