Java IO编程

1.文件操作类: File

File file = new File(“PATH”)

NO.方法类型描述
1public File(String pathName)构造传递完整文件操作路径
2public File(File parent, String child)构造设置父路径与子文件路径
3public boolean createNewFile() throws IOException普通创建新文件
4public boolean exists()普通判断给定路径是否存在
5public boolean delete()普通删除指定路径的文件
6public File getParentFile()普通取得当前路径的父路径
7public boolean mkdirs()普通递归创建多级目录
8public long length()普通取得文件大小,以字节为单位返回
9public boolean isFile()普通判断给定路径是否是文件
10public boolean isDirectory()普通判断给定路径是否是目录
11public long lastModified()普通取得文件的最后一次修改日期时间
12public String[] list()普通列出指定目录中的全部内容
13public File[] listFiles()普通列出所有的路径以File类对象包装

2.字节流与字符流

1)字节流--------------------------------------

字节输出流:OutputStream

在这里插入图片描述

No.OutputStream 类的常用方法类型描述
1public void close() throws IOException普通关闭字节输出流
2public void flush() throws throws IOExcetion普通强制刷新
3public abstract void write(int b) throws IOException普通输出单个字节
4public void write(byte[] b) throws IOException普通输出全部字节数组数据
5public void write(byte[] b, int off, int len) throws IOException普通输出部分字节数组数据

OutputStream 的子类 FileOutputStream

No.FileOutputStream 类的常用方法 类型描述
1public FileOutputStream(File file) throws FileNotFoundException构造将内容输出到指定的路径,如果文件已存在,则使用新的内容覆盖旧的内容
2public FileOutputStream(File file,boolean append) throws FileNotFoundException构造如果将布尔参数设置为true,表示追加新的内容到文件中
OutputStream output = FileOutputStream(file);
OutputStream output = FileOutputStream(file,true);
调用父类方法即可操作文件
字节输入流:InputStream

在这里插入图片描述

No.InputStream 类的常用方法 类型描述
1public void close() throws IOException普通关闭字节输入流
2public abstract int read() throws IOException普通读取单个字节,如果已经没有内容返回 -1
3public int read(byte[] b) throws IOException普通将数据读取到字节数组中,同时返回读取长度
4public int read(byte[] b, int off, int len) throws IOException普通将数据读取到部分字节数组中,指定数组接收的长度和数组的偏移量,同时返回读取长度

InputStream的子类FileInputStream

No.FileInputStream 类的常用方法 类型描述
1public FileInputStream(File file) throws FileNotFoundException普通设置要读取文件数据的路径

2)字符流--------------------------------------

字符输出流:Writer
No.Writer 类的常用方法类型描述
1public void close() throws IOException普通关闭字符输出流
2public void flush() throws throws IOExcetion普通强制刷新
3public Writer append(CharSequence csq)普通追加数据
4public void write(String str) throws IOException普通输出字符串数据
5public void write(char[] cbuf) throws IOException普通输出字符数组数据

Writer类的子类FileWriter

No.FileWriter类的常用方法类型描述
1public FileWriter(File file) throws IOException构造设置输出文件
2public FileWriter(File file ,boolean append) throws IOException构造设置输出文件以及是否进行追加
字符输入流:Reader
No.Reader 类的常用方法类型描述
1public void close() throws IOException普通关闭字符输入流
2public int read() throws IOException普通读取单个数据
3public int read() throws IOException普通读取单个字符
4public int read(char[] cbuf) throws IOException普通读取数据到字符数组中,返回读取长度
5public long skip(long n) throws IOException普通跳过字节长度

Reader类的子类FileReader

No.FileReader 类的常用方法类型描述
1public FileReader(File file) throws FileNotFoundException构造定义要读取的文件路径

字节流与字符流的区别
1)字节流直接与终端文件进行数据交互,字符流需要将数据经过缓冲区处理才与终端文件数据交互。
2)在使用OutputStream 输出数据时即使最后没有关闭输出流,内容也可以正常输出,但是反过来如果使用的是字符输出流Writer,在执行到最后如果不关闭输出流,就表示在缓冲区中处理的内容不会被强制清空,所以就不会输出数据。如果有特殊情况不能关闭字符输出流,可以使用flush()方法强制清空缓冲区。

在实际开发中流的选用原则
在开发中,对于字节数据处理是比较多的,例如:图片,音乐,电影,文字。而字符流最大的好处是它可以进行中文的有效处理。在开发中,如果要处理中文时应优先考虑字符流,如果没有中文问题,建议使用字节流。

3.转换流

在这里插入图片描述

通过继承结构可以发现,FileWriter与FileReader都是转换流的子类,也就证明所有要读取的文件数据都是字节数据,所有的字符都是在内存中处理后形成的

字节输入流转字符输入流 InputStreamReader字节输出流转字符输出流OutPutStreamWriter
定义结构public class InputStreamReader extends Readerpublic class OutputStreamWriter extends Writer
构造方法public InputStreamReader(InputStream in)public OutputStreamWriter(OutputStream out)

4.案例文件复制

InputStream in = new FileInputStream(inFile);
OutputStream out = new FileOutputStream(outFile);
int tmp = 0 ; //保存每次读取的数据长度
byte data [] = new byte[1024]; //每次读取1024个字节
while((temp=in.read(data)) != -1){   //循环读取数据
	out.write(data,0,tmp);   //输出数组
}
in.close();
out.close();

5.字符编码

OutputStream output = new FileOutputStream(file);
output.write("你好".getBytes("ISO8859-1"));	//设置输出的字符编码
output.close();

6.内存流

在这里插入图片描述

假设一种应用需要进行IO操作,但是又不想在磁盘上产生文件,就可以将内存当做一个临时文件进行操作。

内存流:

  • 字节内存流(常用)::ByteArrayInputStream(内存字节输入流);ByteArrayOutputStream(内存字节输出流)
  • 字符内存流:CharArrayReader(内存字符输入流);CharArrayWriter(内存字符输出流)

内存流定义的构造方法:

  • ByteArrayInputStream类构造:public ByteArrayInputStream(byte[] buf)
  • ByteArrayOutputStream类构造:public ByreArrayOutputStream()
String str = "hello world";
InputStream input = new ByteArrayInputStream(str.getBytes());
OutputStream output = new ByteArrayOutputStream();
int temp = 0 ;
while((temp=input.read()) != -1 ){
	ouput.write(Character.toUpperCase(temp));	//转大写
}
System.out.println(output);
input.close();
output.close();

7.打印流

在java.io包中OutputStream是进行输出操作的最核心控制类,但是利用OutputStream会存在一个问题:所有的输出数据必须以字节类型的数据为主,也就是说如果要输出的数据是int(Integer)、double(Double)、java.util.Date等常用的类型都需要将其转换为字节后才可以输出。为了解决这个问题,java.io中提供了打印流。

java.io.OutputStream类主要是进行数据输出,如果要设计更加合适的打印流操作类,就必须解决OutputStream输出数据类型有限(只有byte类型)的问题。这时可以采用包装设计模式,将OutputStream类利用其它类进行包装、并且可以在这个类中提供了各种常见数据类型的输出操作,这样用户在进行输出操作时就可以回避字节数据的操作。
在这里插入图片描述

java.io提供了两个数据打印流的操作类:PrintStream(打印字节流)、PrintWriter(打印字符流)
在这里插入图片描述

PrintStream类的常用方法类型描述
public PrintStream(OutputStream out)构造通过已有OutputStream确定输出目标
public void print(数据类型 参数名称)普通输出各种常见的数据类型
public void println(数据类型 参数名称)普通输出各种常见的数据类型,并追加一个换行

PritnStrem与PrintWriter两个类在使用上是完全一样的

8.System类对IO的支持

System类与IO有关的3个对象常量

常量类型描述
1public static final PrintStream err常量显示器上错误输出
2public static final PrintStream out常量显示器上信息输出
3public static final InputStream in常量键盘数据输入

可以发现,err与out两个对象的类型都属于PrintStream 类型,in属于 InputStream类型

9.字符缓冲流

为了可以进行完整数据的输入操作,最好的做法是采用缓冲区的方式对输入的数据进行暂存,而后程序可以利用输入流一次性读取内容。

  • 字符缓冲区流:BufferedReader、BufferedWriter
  • 字节缓冲区流:BufferedInputStream、BufferedOutputStream
    在这里插入图片描述
BufferedReader类的常用方法类型描述
public BufferedReader(Reader in)构造设置字符输入流
public String readLine() throws IOException普通读取一行数据,默认一"\n"为分隔符

10.扫描流:Scanner

Scanner类中定义的常用方法类型描述
1public Scanner(InputStream source)构造接受InputStream输入流对象,此为输入源
2public boolean hasNext()普通判断是否有数据输入
3public String next()普通取出输入数据,以String返回
4public boolean hasNextXxx()普通判断是否有指定类型数据存在
5public 数据类型 nextXxx()普通取出指定数据类型的数据
6public Scanner useDelimiter(String pattern)普通设置读取的分隔符

11.对象序列化

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java IO编程Java语言中的一个重要组成部分,用于处理输入输出流,包括文件读取、网络通信、数据库操作等。以下是Java IO编程的超详细介绍: 1. Java IO模型 Java IO模型由InputStream和OutputStream两个抽象类构成。InputStream和OutputStream提供了大量的方法用于处理字节流输入输出。 2. 字节流和字符流 Java IO中的流分为两种:字节流和字符流。字节流主要用于二进制数据的读取和写入,而字符流主要用于字符数据的读取和写入。字节流处理的是字节数据,字符流处理的是字符数据。 3. 文件输入输出流 Java提供了FileInputStream和FileOutputStream用于读取和写入文件中的数据。FileInputStream从文件中读取数据,FileOutputStream将数据写入文件中。 4. 缓冲流 缓冲流是Java IO中常用的一种流,可以通过缓存机制提升输入输出性能。BufferedInputStream和BufferedOutputStream可以增加字节输入输出时的缓冲区大小,从而提高读写性能,BufferedReader和BufferedWriter可以增加字符输入输出时的缓冲区大小,提高读写性能。 5. 对象输入输出流 ObjectInputStream和ObjectOutputStream可以用来读取和写入Java对象。这两个流用于对象的序列化和反序列化,将对象转化为字节序列,或将字节序列转化为对象。 6. 网络输入输出流 Java提供了Socket、ServerSocket、DatagramSocket等类用于网络通信。对于网络输入输出,可以使用DataInputStream和DataOutputStream进行读写,也可以使用BufferedReader和PrintWriter进行读写。 7. 转换流 转换流可以用来转换字节流和字符流之间的读写,比如InputStreamReader和OutputStreamWriter可以将字节流转换为字符流,FileReader和FileWriter也可以转换为字符流。 8. 数据库输入输出流 Java中提供了JDBC(Java Database Connectivity)用于数据库操作。JDBC中的输入输出流用于读取和写入数据库中的数据。 以上是Java IO编程的超详细介绍,希望能对您有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值