一: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. 手写DAO框架(二)-开发前的最后准备

    -------前篇:手写DAO框架(一)-从“1”开始 --------- 前言:前篇主要介绍了写此框架的动机,把主要功能点大致介绍了一下.此篇文章主要介绍开发前最后的一些准备.主要包括一些基础知识点 ...

  2. linux学习1-基础知识

    1.输入一行字跳到行头 ctrl+a:跳到行尾 ctrl+e: 2.一次创建多个文件 touch love_{1..10}_linux.txt touch love_{1,3,5}_linux.txt ...

  3. Codeforces Round #400 (Div. 1 + Div. 2, combined)——ABCDE

    题目戳这里 A.A Serial Killer 题目描述似乎很恶心,结合样例和样例解释猜测的题意 使用C++11的auto可以来一手骚操作 #include <bits/stdc++.h> ...

  4. mysql参数设置与查看

    查看默认的参数设置(包含读取到的参数文件中的设置) mysqld --verbose --help   查看默认的参数设置(不包含参数文件中的设置) mysqld --no-defaults --ve ...

  5. springCloud学习-断路器(Hystrix)

    1.问题分析 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高 ...

  6. 【ACM】nyoj_14_会场安排问题_201308151955

    会场安排问题时间限制:3000 ms  |  内存限制:65535 KB 难度:4描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工作就是安 ...

  7. java.net.MalformedURLException: unknown protocol: c 这个错一般有两种原因导致: 1、URL协议、格式或者路径错误,

    java.net.MalformedURLException: unknown protocol: c这个错一般有两种原因导致:1.URL协议.格式或者路径错误, 好好检查下你程序中的代码如果是路径问 ...

  8. Linux - Virsh

    virsh命令 suspend resume dumpxml   KVM平台以存储池的形式对存储进行统一管理,所谓存储池能够理解为本地文件夹.通过远端磁盘阵列(iSCSI.NFS)分配过来磁盘或文件夹 ...

  9. POJ 2411 插头DP

    //插头DP,算是广义路径的吧. /* 我是这样想的,定义填数的为0,未填的为1.然后,初始自然是(0,0).我还定义了整个棋盘的状态,不知是否多此一举. 这样,把轮廓线上的格子状态记录.当(I,J) ...

  10. JAVA模拟登录实例

    近期在做公司一个web项目.要求在我们的系统上,可以显示其它站点上的数据. 刚開始接到这个任务时,还在想.简单的非常.直接用UrlConection直接进入该网页,然后获取该网页的html,取到想要的 ...