第六章:输入和输出处理(一)
一,什么是输入输出
我们在写java程序的时候,我们会从磁盘中调用一些资源,然后展示到控制台中,我们所说的输入和输出,是相对于程序来说的。
1. Java I/O
java的I/O就是我们所了解的输入和输出,从磁盘到程序是input,从程序到控制台是output;通常我们的输入来自于键盘,然后经过处理,把结果输出到控制台;我们在这学的是从文件中取出数据,存储到另一个文件中。
2. 文件
学输入输出的时候的,我们要用到文件,我们的文件一般存储在硬盘,闪存等一些存储工具上。
那么什么是文件呢?
相关记录或放在一起的数据的集合
如何用java访问文件?
java有关于访问文件的API :java.io.File 类
二,File
1.File类访问文件属性
File是一个类,所以我们在用他的时候,要new 出他的对象。
File file = new File( String pathname);//pathname可以是决定路径,也可以是相对路径
//还有其他的构造方法用于拼接路径
//1. File(String parentPath,String childPath)
//2. File(File parentFile,String childPath)
//例子:
File file = new File("c:\\111\\test.txt");//这就可以看作file对象和这个文件的绑定。
File file = new File("c:\\111","test.txt");
绑定之后我们就可以进行一系列的操作了。
2.File类的常用方法
File file = new File("D:\\1.txt");
file.createNewFile();//创建文件
System.out.println("创建test文本成功");
System.out.println(file.exists());//判断是否存在
System.out.println(file.isFile());//是否是文件
System.out.println(file.isDirectory());//是否是目录
System.out.println(file.getPath());//得到相对路径
System.out.println(file.getAbsolutePath());//得到绝对路径
System.out.println(file.getName());//获得文件名
// System.out.println(file.delete());//删除该文件
System.out.println(file.length());//获得文件长度(字节)
运行结果:
创建test文本成功
true
true
false
D:\1.txt
D:\1.txt
1.txt
0
三,流
流的分类
java的流分类有两种方式:
1.按流区分
- 输入流 InputStream和Writer是基类(最大的父类)。
- 输出流 OutputStream和Reader是基类(最大的父类)
2.按处理数据单元分
- 字符流 InputStream 和 OutputStream
- 字节流 Reader 和 Writer
什么是流?它以什么方式传输数据?
- 流是一组有序的数据序列。
- 是以先进先出方式发送信息的通道
它可以看作是一个水管的结构,我们进去的数据就像水一样从一端流进,从另一端流出。
输入输出流原理
输入流就是从起源数据源读取数据到程序,输出流就是把程序读取到的数据写入到目标数据源上。
四,InputStream分支类和方法
InputStream类常用方法
- int read( )
- int read(byte[] b)
- int read(byte[] b,int off,int len)
- void close( )
- int available():可以从输入流中读取的字节数目
子类FileInputStream常用的构造方法
- FileInputStream(File file)
- FileInputStream(String name)
//1.导包
import java.io.IOException;
import java.io.FileInputStream;
//2.实例化对象
FileInputStream fis= new FileInputStream("c:\\test.txt");
//得到可读长度
fis.available();
//读数据
fis.read(); // fis.read(byte[] bytes)可以读到一个byte数组中
//关闭流
fis.close();
读取数据示例:
File file = new File("d:\\我的青春谁做主.txt");
FileInputStream fis = new FileInputStream(file);
System.out.println("文件大小:"+fis.available());
byte[] bytes = new byte[fis.available()];
fis.read(bytes);
fis.close();
五,OutputStream分支类和方法
OutputStream类常用方法
- void write(int c)
- void write(byte[] buf)
- void write(byte[] b,int off,int len)
- void close()
- void flush():强制把缓冲区的数据写到输出流中
子类FileOutputStream常用的构造方法
- FileOutputStream (File file)
- FileOutputStream(String name)
- FileOutputStream(String name,boolean append)
注意:
1.前两种构造方法在向文件写数据时将覆盖文件中原有的内容
2.创建FileOutputStream实例时,如果相应的文件并不存在,则会自动创建一个空的文件
OutputStream的使用和InputStream的使用差不多,就不在距离了。
//1.导包
import java.io.IOException;
import java.io.FileOutputStream;
//2.实例化对象
FileOutputStream fos = new FileOutputStream("text.txt");
//设置写入的数据
String str ="好好学习Java";
byte[] words = str.getBytes();
fos.write(words, 0, words.length);
//关闭流
fis.close();