一:File 类

• 输入:读取外部数据(磁盘、光盘等存储设备的数据)到程序(内存)中。 
• 输出:将程序(内存)数据输出到磁盘、光盘等存储设备中
• Java 的 IO 流主要包括输入、输出两种 IO 流,每种输入、输出流有可分为字节流和字符流两大类:
– 字节流以字节为单位来处理输入、输出操作
– 字符流以字符为单位来处理输入、输出操作
注意:输入、输出是以程序为参照。
• File 类代表与平台无关的文件和目录。
• File  能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。
  如果需要访问文件内容本身,则需要使用输入/输出流。
部分操作File的方法:
练习代码:
package com.shellway.io;
import java.io.File;
import java.io.IOException;
import org.junit.Test;
public class IOtest {
@Test
public void test() throws IOException{
File file = new File("helloo.txt");
//获取文件的名称
String fileName = file.getName();
System.out.println(fileName);
//获取文件的绝对路径
String filePath = file.getAbsolutePath();
System.out.println(filePath);
//为文件重命名,不仅文件名变了且原来的文件路径跟着下面的路径变
// file.renameTo(new File("D:\\test\\day03\\helloo.txt"));
String path = file.getPath();
System.out.println(path);
//文件检测相关方法
System.out.println(file.exists());
File dir = new File("shellway");
System.out.println(dir.isDirectory());
System.out.println(dir.isFile());
//获取文件的常规信息
System.out.println(file.length());//单位为字节,一个汉字为两个字节,换行会加两个字节
//文件的相关操作
File file2 = new File("adc.txt");
file2.createNewFile();//创建一个空的文件
File file3 = new File("adc");
file3.mkdir();//创建一个空的目录
file2.delete();//删除一个文件
}
}

1、IO流的分类

• 按流向分:
– 输入流
– 输出流
• 按处理的单位:
– 字节流(8 位的字节)
– 字符流(16 位的字节)
• 按流的角色
– 节点流:可以从一个特定的 IO 设备读/写数据的流
– 处理流:对一个已存在的流进行连接和封装,通过封装后的流来实现数据读/写操作
 
2、IO流体系:
 
二、InputStream & Reader
• InputStream 和 Reader 是所有输入流的基类。
• InputStream(典型实现:FileInputStream):
– int read()
– int read(byte[] b)
– int read(byte[] b, int off, int len)
• Reader(典型实现:FileReader):
– int read()
– int read(char [] c)
– int read(char [] c, int off, int len)
• 程序中打开的文件 IO 资源不属于内存里的资源,垃圾回收机制无法回收该资源,所以应该显式关闭文件 IO 资源。
练习代码:
 package com.shellway.io;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import org.junit.Test;
public class IOtest {
/**
* 测试字符输入流
* @throws IOException
*/
@Test
public void testReader() throws IOException {
Reader reader = new FileReader("helloo.txt");
char []buffer = new char[10];
int len = 0;
while((len = reader.read(buffer)) != -1){
for(int i = 0;i < len;i++){
System.out.print(buffer[i]);
}
}
reader.close();
}
/**
* 测试字节输入流
* @throws IOException
*/
@Test
public void testInputStream() throws IOException {
//1、创建一个字符输入流
InputStream in = new FileInputStream("helloo.txt");
//2、读取文件内容
//2、1一次读取一个字符,效率很低,不建议这样读,-1表示读到文件的结尾
int result = in.read();
while(result!=-1){
System.out.print((char)result);
result = in.read();
}
//2、2一次读取一组字符,
byte []buffer = new byte[10];
int length = 0;
while((length = in.read(buffer))!=-1){
for(int i = 0;i<length;i++){ //注意不能加“=”号
System.out.print((char)buffer[i]);
}
//2、3把内容读取到字节数组的部分连续的元素中
byte []result1 = new byte[1024*10];
//10为字节数组的开始部分,第三个为实际长度。
in.read(result1, 10, in.available());
}
//3、关闭字符流
in.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技术(一)

    ---恢复内容开始--- Java基础中的IO技术可谓是非常重要,俗话说的好,万丈高楼起于垒土之间.所以学习Java一定要把基础学好,今天我们来学习IO技术的基础. IO无非就是输入与输出,而其中处理 ...

  5. java面试:java基础、Io、容器

    1.java基础 1.JDK 和JRE有什么区别 ​ JDK:java开发工具包,java开发运行环境.包含了JRE. ​ JRE:java运行环境,包含java虚拟机,java基础类库. 2.jav ...

  6. Java基础之IO和NIO补完

    Java Stream,File,IO 关于NIO和IO的比较,参考:Java NIO系列教程(十二) Java NIO与IO java包之java.io 参考材料:菜鸟教材 NIO 由于下面的系列教 ...

  7. 【Java基础】IO 流

    IO 流 File 类 java.io.File 类是文件和文件目录路径的抽象表示形式,与平台无关. File 能新建.删除.重命名文件和目录,但 File 不能访问文件内容本身. 如果需要访问文件内 ...

  8. 【java基础】]IO流

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

  9. 黑马程序员——JAVA基础之IO流缓冲区,转换流,字节流

    ------- android培训.java培训.期待与您交流! ---------- 字符流的缓冲区        缓冲区的出现提高了对数据的读写效率. 对应类 •  BufferedWriter ...

随机推荐

  1. isset在php5.6-和php7.0+的一些差异

    今天在公司实现一个模块功能时写了如下代码: class ProductCategory { const TYPES = [ 1 => 'type1', 2 => 'type2', ]; p ...

  2. Mysql 模糊查询总结

    语法: SELECT 字段集 FROM 表名 WHERE 字段名 LIKE 条件 模糊查询有四种匹配模式: 1.%:匹配任意0个或多个字符. 2._:匹配任意1个字符. 3.[]:匹配括号内所列字符中 ...

  3. Problem 28

    Problem 28 https://projecteuler.net/problem=28 Starting with the number 1 and moving to the right in ...

  4. 用 console.time()和 console.timeEnd() 测试你的 javascript 代码执行效率

    无意中学习到了一种测试 javascript 代码执行效率的一种方法,就记下来便于以后使用,用到了console对象中的  time  和  timeEnd  方法 . console.time('m ...

  5. (38)Spring Boot分布式Session状态保存Redis【从零开始学Spring Boot】

    [本文章是否对你有用以及是否有好的建议,请留言] 在使用spring boot做负载均衡的时候,多个app之间的session要保持一致,这样负载到不同的app时候,在一个app登录之后,而访问到另外 ...

  6. [Cogs727] [网络流24题#2] 太空飞行计划 [网络流,最小割]

    建图:源点—(w[i])—>实验—(∞)—>仪器—(cost[i])—>汇点, 如果该实验造成收益,则仪器到汇点的边在最小割中, 如果该实验造成损失,则源点到实验的边在最小割中, 故 ...

  7. poj3233 题解 矩阵乘法 矩阵快速幂

    题意:求S = A + A2 + A3 + … + Ak.(mod m) 这道题很明显可以用矩阵乘法,但是这道题的矩阵是分块矩阵, 分块矩阵概念如下:当一个矩阵A中的单位元素aij不是一个数值而是一个 ...

  8. MySQL系列:innodb源码分析 图 ---zerok的专栏

    http://blog.csdn.net/yuanrxdu/article/details/40985363

  9. CentOS下安装使用phpMyAdmin. Set up phpMyAdmin on CentOS

    须要组件: Apache PHP Mysql phpMyAdmin Apache 0. yum install httpd 1. 确认版本号 $ httpd -v 2. 启动apache $ sudo ...

  10. 【HDOJ 5419】 Victor and Toys (排列组合)

    [HDOJ 5419] Victor and Toys n个玩具 m个区间 每一个玩具有一个beauty值 问任选三个区间 三区间的MINleft~MAXright的和的期望值 预处理一个数组 存放每 ...