java io编程实例_Java IO编程

1.文件操作类: File

File file = new File(“PATH”)

NO.

方法

类型

描述

1

public File(String pathName)

构造

传递完整文件操作路径

2

public File(File parent, String child)

构造

设置父路径与子文件路径

3

public boolean createNewFile() throws IOException

普通

创建新文件

4

public boolean exists()

普通

判断给定路径是否存在

5

public boolean delete()

普通

删除指定路径的文件

6

public File getParentFile()

普通

取得当前路径的父路径

7

public boolean mkdirs()

普通

递归创建多级目录

8

public long length()

普通

取得文件大小,以字节为单位返回

9

public boolean isFile()

普通

判断给定路径是否是文件

10

public boolean isDirectory()

普通

判断给定路径是否是目录

11

public long lastModified()

普通

取得文件的最后一次修改日期时间

12

public String[] list()

普通

列出指定目录中的全部内容

13

public File[] listFiles()

普通

列出所有的路径以File类对象包装

2.字节流与字符流

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

字节输出流:OutputStream

c0aee384f56a31ef1f794d3578795adf.png

No.

OutputStream 类的常用方法

类型

描述

1

public void close() throws IOException

普通

关闭字节输出流

2

public void flush() throws throws IOExcetion

普通

强制刷新

3

public abstract void write(int b) throws IOException

普通

输出单个字节

4

public void write(byte[] b) throws IOException

普通

输出全部字节数组数据

5

public void write(byte[] b, int off, int len) throws IOException

普通

输出部分字节数组数据

OutputStream 的子类 FileOutputStream

No.

FileOutputStream 类的常用方法

类型

描述

1

public FileOutputStream(File file) throws FileNotFoundException

构造

将内容输出到指定的路径,如果文件已存在,则使用新的内容覆盖旧的内容

2

public FileOutputStream(File file,boolean append) throws FileNotFoundException

构造

如果将布尔参数设置为true,表示追加新的内容到文件中OutputStream output = FileOutputStream(file);

OutputStream output = FileOutputStream(file,true);

调用父类方法即可操作文件

字节输入流:InputStream

c40615a326ccffa9becd7e01c7410379.png

No.

InputStream 类的常用方法

类型

描述

1

public void close() throws IOException

普通

关闭字节输入流

2

public abstract int read() throws IOException

普通

读取单个字节,如果已经没有内容返回 -1

3

public int read(byte[] b) throws IOException

普通

将数据读取到字节数组中,同时返回读取长度

4

public int read(byte[] b, int off, int len)throws IOException

普通

将数据读取到部分字节数组中,指定数组接收的长度和数组的偏移量,同时返回读取长度

InputStream的子类FileInputStream

No.

FileInputStream 类的常用方法

类型

描述

1

public FileInputStream(File file) throws FileNotFoundException

普通

设置要读取文件数据的路径

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

字符输出流:Writer

No.

Writer 类的常用方法

类型

描述

1

public void close() throws IOException

普通

关闭字符输出流

2

public void flush() throws throws IOExcetion

普通

强制刷新

3

public Writer append(CharSequence csq)

普通

追加数据

4

public void write(String str) throws IOException

普通

输出字符串数据

5

public void write(char[] cbuf) throws IOException

普通

输出字符数组数据

Writer类的子类FileWriter

No.

FileWriter类的常用方法

类型

描述

1

public FileWriter(File file) throws IOException

构造

设置输出文件

2

public FileWriter(File file ,boolean append) throws IOException

构造

设置输出文件以及是否进行追加

字符输入流:Reader

No.

Reader 类的常用方法

类型

描述

1

public void close() throws IOException

普通

关闭字符输入流

2

public int read() throws IOException

普通

读取单个数据

3

public int read() throws IOException

普通

读取单个字符

4

public int read(char[] cbuf) throws IOException

普通

读取数据到字符数组中,返回读取长度

5

public long skip(long n) throws IOException

普通

跳过字节长度

Reader类的子类FileReader

No.

FileReader 类的常用方法

类型

描述

1

public FileReader(File file) throws FileNotFoundException

构造

定义要读取的文件路径字节流与字符流的区别

1)字节流直接与终端文件进行数据交互,字符流需要将数据经过缓冲区处理才与终端文件数据交互。

2)在使用OutputStream 输出数据时即使最后没有关闭输出流,内容也可以正常输出,但是反过来如果使用的是字符输出流Writer,在执行到最后如果不关闭输出流,就表示在缓冲区中处理的内容不会被强制清空,所以就不会输出数据。如果有特殊情况不能关闭字符输出流,可以使用flush()方法强制清空缓冲区。

在实际开发中流的选用原则

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

3.转换流

bd3b483652fd8535f19d42d0711874cf.png

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

字节输入流转字符输入流 InputStreamReader

字节输出流转字符输出流OutPutStreamWriter

定义结构

public class InputStreamReader extends Reader

public 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.内存流

c5fed56fb57d61b34b4081aebd8daaf0.png

假设一种应用需要进行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类利用其它类进行包装、并且可以在这个类中提供了各种常见数据类型的输出操作,这样用户在进行输出操作时就可以回避字节数据的操作。

8684df7f30dd71cb6f3228d0329f03c5.png

java.io提供了两个数据打印流的操作类:PrintStream(打印字节流)、PrintWriter(打印字符流)

9b340e8d901a36025705c8cc0c1efc42.png

PrintStream类的常用方法

类型

描述

public PrintStream(OutputStream out)

构造

通过已有OutputStream确定输出目标

public void print(数据类型 参数名称)

普通

输出各种常见的数据类型

public void println(数据类型 参数名称)

普通

输出各种常见的数据类型,并追加一个换行

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

8.System类对IO的支持

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

常量

类型

描述

1

public static final PrintStream err

常量

显示器上错误输出

2

public static final PrintStream out

常量

显示器上信息输出

3

public static final InputStream in

常量

键盘数据输入

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

9.字符缓冲流

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

字符缓冲区流:BufferedReader、BufferedWriter

字节缓冲区流:BufferedInputStream、BufferedOutputStream

83dd3e9e10f046d1056249d8fa4edc18.png

BufferedReader类的常用方法

类型

描述

public BufferedReader(Reader in)

构造

设置字符输入流

public String readLine() throws IOException

普通

读取一行数据,默认一"\n"为分隔符

10.扫描流:Scanner

Scanner类中定义的常用方法

类型

描述

1

public Scanner(InputStream source)

构造

接受InputStream输入流对象,此为输入源

2

public boolean hasNext()

普通

判断是否有数据输入

3

public String next()

普通

取出输入数据,以String返回

4

public boolean hasNextXxx()

普通

判断是否有指定类型数据存在

5

public 数据类型 nextXxx()

普通

取出指定数据类型的数据

6

public Scanner useDelimiter(String pattern)

普通

设置读取的分隔符

11.对象序列化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值