什么是IO流

思考问题

  如何读写文件?

解决--通过流读写文件

  是指一连串流动的字符,以先进先出传输信息的通道。

  Java操控硬盘上的文件,通过IO流来实现

  

Java流的分类

  按流向区分 ---输出流 OutputStream 和 Writer 作为基类

        ---输入流 InputStream 和 Reader 作为基类

    输入输出流是相对于计算机内存来说的

  按处理数据单元划分 ---字节流

              ----字节输入流InputStream和字节输出流OutputStream

            ---字符流

             ----字符输入流Reander和字符输出流Writer

    字节流是8位通用字节流,字符流是16位Unicode字符流

 File构造器

  1、什么是文件?

        文件是认为是相关记录或放在一起的数据的集合

  2、文件一般存储在哪里?

    计算机硬盘

  3、JAVA程序如何访问文件属性?

    java api:java.io.File类

     

public class test01 {
public static void main(String[] args) throws IOException {
// File f1=new File("D://111");
// f1.mkdir(); //创建文件夹
File f2=new File("D://111//a.txt");
f2.createNewFile(); //创建文件,前提是111文件夹存在
}
}

File类常用方法

  boolean  exists()  判斷文件或目錄是否存在

  boolean   isFile()  判斷是否是文件

  Boolean    isDirectory()   判斷是否是目錄

  String   getPanth()  返回此對象表示的文件的相對路徑

  String    getAbsolutePath()  返回此對象表示的文件的絕對路徑

  String     getName()  返回此對象表示的文件或目錄的名稱

  boolean    delete()  刪除此對象指定的文件或目錄

  boolean     createNewFile()  創建名稱的文件,不創建文件夾

  long    length()  返回文件的長度,單位為字節,如果文件不存在,則返回0L

字節流

  用FileInputStream和FileOutputStream來讀取文本

  

import java.io.*;
//读取文件数据
/*
* 第一步:先找到要读取的文件 File对象
* 第二步:读取文件 读出来的数据应该是二进制,要使数据到你的程序里来,首先要建立一个传输数据的通道 搭建数据的输入通道
*/
public class test01 { public static void main(String[] args) throws IOException {
readTest();
readTest1();
readTest2();
readTest3();
} public static void readTest() throws IOException{
//第一步
File file=new File("D:\\test\\test.txt");
//第二步,建立数据输入通道
FileInputStream input=new FileInputStream(file); //读取文件中一个字符数据,并返回输出
int connet=input.read();
System.out.println(connet);
//关闭流
input.close(); } //使用循环读取数据
public static void readTest1() throws IOException{
int connet=0;
File file=new File("D:\\test\\test.txt");
FileInputStream input=new FileInputStream(file);
while((connet=input.read())!=-1){
System.out.println((char)connet);
}
input.close();
} //使用缓冲读取数据 缺点:无法读取完整的一个文件
public static void readTest2() throws IOException{
File file=new File("D:\\test\\test.txt");
FileInputStream input=new FileInputStream(file);
//建立缓冲字节数组,读取文件数据
byte[] buf=new byte[3];//相当于超市里的购物车 int length=input.read(buf);//数据已经存储到了字节数组
//因为数据是存储到字节数组中,而这里的read方法的返回值是表示本次读取的几个字节数据到字节数组中
//上一句的作用就是读文件中数据存到字节数组中去
//使用字节数组构建字符串
System.out.println(length);
String contnet=new String(buf);
System.out.println("内容"+contnet);
input.close(); } //使用缓冲数组配合循环一起读取
public static void readTest3() throws IOException{
File file=new File("D:\\test\\test.txt");
FileInputStream input=new FileInputStream(file); int length=0;//保存每次读取到的字节个数
byte[] buf=new byte[1024];
//byte[] buf=new byte[1024*3];
//缓冲数组一般是1024的倍数,因为是计算机的处理单位,原则上缓冲数组越大,效率越高
while((length=input.read(buf))!=-1){
System.out.println(new String(buf,0,length));
}
input.close();
}
}

Java IO流篇的更多相关文章

  1. Java IO 流总结篇

    1. 写在前面的话 I/O ,I 是 Input (输入)的缩写,O是Output (输出) 的缩写,众所周知,人与人之间想要沟通交流,就需要讲彼此都能听懂的语言,比如大家都统一说英语. 人类如果想和 ...

  2. Java基础17:Java IO流总结

    更多内容请关注微信公众号[Java技术江湖] 这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM.SpringBoot.MySQL.分布式.中间件.集群.Linux ...

  3. Java IO流学习总结四:缓冲流-BufferedReader、BufferedWriter

    在上一篇文章中Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream介绍了缓冲流中的字节流,而这一篇着重介绍缓冲流中字符流Buffered ...

  4. 《二》Java IO 流的分类介绍

    一.根据流向分为输入流和输出流: 注意输入流和输出流是相对于程序而言的. 输出:把程序(内存)中的内容输出到磁盘.光盘等存储设备中        输入:读取外部数据(磁盘.光盘等存储设备的数据)到程序 ...

  5. Java IO流详解(一)——简单介绍

    文件在程序中是以流的形式来传输的.所以用Java来传输文件就得使用到Java IO流. 1.流的概念和作用 流:代表任何有能力产出数据的数据源对象或者是有能力接受数据的接收端对象<Thinkin ...

  6. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  7. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  8. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  9. 揭开Java IO流中的flush()的神秘面纱

    大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...

随机推荐

  1. 插件 DataTable 创建列表 render参数的详解与如何传递本行数据id

    1.首先 导入DataTable 的插件 2.定义表结构: HTML: <table> <thead> <tr> <th>id</th> & ...

  2. solr配置ik中文分词(二)

    上一篇文章主要介绍了solr的安装与配置,这篇文章主要记录如何使用ik分词器对中文进行分词. 步骤: 1.下载ik分词jar包:ik-analyzer-solr5-5.x.jar. 2.将下载的jar ...

  3. cuda编程-矩阵乘法(2)

    采用shared memory加速 代码 #include <stdio.h> #include <stdlib.h> #include <math.h> #inc ...

  4. Modeling Filters and Whitening Filters

    Colored and White Process White Process White Process,又称为White Noise(白噪声),其中white来源于白光,寓意着PSD的平坦分布,w ...

  5. Java启动命令与Maven打包设置

    一.Java启动命令 java程序的启动方式有三种: 1.java -jar 生成的jar包中,manifest文件定义了Main Class,可使用该命令 java -jar test.jar 2. ...

  6. [UOJ455][UER #8]雪灾与外卖——堆+模拟费用流

    题目链接: [UOJ455]雪灾与外卖 题目描述:有$n$个送餐员(坐标为$x_{i}$)及$m$个餐厅(坐标为$y_{i}$,权值为$w_{i}$),每个送餐员需要前往一个餐厅,每个餐厅只能容纳$c ...

  7. Matplotlib学习---用seaborn画矩阵图(pair plot)

    矩阵图非常有用,人们经常用它来查看多个变量之间的联系. 下面用著名的鸢尾花数据来画一个矩阵图.从sklearn导入鸢尾花数据,然后将其转换成pandas的DataFrame类型,最后用seaborn画 ...

  8. Katu Puzzle POJ - 3678(水2 - sat)

    题意: 有n个未知量,m对未知量之间的关系,判断是否能求出所有的未知量且满足这些关系 解析: 关系建边就好了 #include <iostream> #include <cstdio ...

  9. 基于FPGA的VGA接口使用

    前言 什么是VGA? VGA(视频图形阵列)是IBM公司制定的一种视频数据传输标准. 接口信号主要有5个:R(Red),G(Green),B(Blue),HS(Horizontal synchroni ...

  10. hiho1259 A Math Problem (数位dp)

    题目链接:http://hihocoder.com/problemset/problem/1259 题目大意:g(t)=(f(i)%k=t)的f(i)的个数 求所有的(0-k-1)的g(i)的异或总值 ...