i/o流概述
流是一种抽象概念,它代表了数据的无结构化传递。按照流的方式进行输入输出,数据被当成无结构的字节序或字符序列。从流中取得数据的操作称为提取操作,而向流中添加数据的操作称为插入操作。用来进行输入输出操作的流就称为IO流。换句话说,IO流就是以流的方式进行输入输出 。
File类
File类概述
File类:是文件和目录路径名的抽象表示形式。
即,Java中把文件或者目录(文件夹)都封装成File对象。也就是说如果我们要去操作硬盘上的文件,或者文件夹只要找到File这个类即可。
File类常用方法
字节输出/输入流
概述
1.字节流和字符流的基本操作是相同的,但是要想操作媒体流就需要用到字节流。
2.字节流因为操作的是字节,所以可以用来操作媒体文件。(媒体文件也是以字节存储的)
3.读写字节流:InputStream 输入流(读)和OutputStream 输出流(写)
以下是一个使用字节输出流向文件写入数据的示例代码:
OutputStream os = new FileOutputStream("test.txt");
String str = "Hello World!";
byte[] b = str.getBytes(); //将字符串转换成字节数组
os.write(b);
os.close();
以下是一个使用字节输入流从文件读取数据的示例代码:
InputStream is = new FileInputStream("test.txt");
byte[] b = new byte[1024];
int len = 0;
while ((len = is.read(b)) != -1) {
System.out.println(new String(b, 0, len));
}
is.close();
文件复制
Io语言的文件复制可以使用标准库中的File类。以下是一个基本示例:
sourceFile := File with(File open("path/to/source/file", "r"))
destinationFile := File with(File open("path/to/destination/file", "w"))
destinationFile write(sourceFile readLine) whileTrue(sourceFile rawInput isNotNil)
sourceFile close
destinationFile close
在这个示例中,我们使用File类的open方法打开源文件和目标文件。使用“r”(只读)和“w”(写入)作为打开文件的模式。使用write()和readLine()方法将数据从源文件复制到目标文件。最后,我们关闭源文件和目标文件。
请注意,这只是一个基本示例,你可能需要根据你的实际需求进行修改。
字符输入/输出流
字符输入/输出流是Java中用于读写字符数据的输入/输出流。它们处理的数据单位是2个字节(16位),而不是字节流中的1个字节。
Java中提供了多个字符输入/输出流,包括:
- Reader/Writer:抽象类,是所有字符输入/输出流的超类。
- InputStreamReader/OutputStreamWriter:将字节流转换为字符流,是Reader/Writer的子类。
- FileReader/FileWriter:使用默认的字符编码,从文件读取或写入字符,是Reader/Writer的子类。
字符输入/输出流的常用方法包括:
- read():从输入流中读取1个字符。
- read(char[] cbuf):从输入流中读取若干个字符到数组cbuf中。
- write(int c):将1个字符写入输出流。
- write(char[] cbuf):将一个字符数组中的所有字符写入输出流。
使用字符输入/输出流的好处是可以直接读取和写入文本数据,而不用对字节进行处理和转换,提高了代码的可读性和可维护性。
字符缓冲输入/输出流是Java中的一种高效的IO操作方式,它们是基于字符的,可以在读写文件、网络等场景中使用。在处理大文件时,使用字符缓冲流可以减少IO操作的次数,提高程序的执行效率。
在Java中,字符缓冲输入流和字符缓冲输出流的基类分别为BufferedReader和BufferedWriter。使用这两个类,可以将数据缓存在内存中,然后一次性读入或写入,减少了频繁的IO操作,提高了程序的性能。
字符缓冲输入流和输出流的使用方法与普通的输入/输出流相似,只需创建相应的对象,然后调用read或write方法即可。例如,使用BufferedReader读取文件的示例代码如下:
try (BufferedReader reader = new BufferedReader(new FileReader("file.txt"))) {
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
使用BufferedWriter写入文件的示例代码如下:
try (BufferedWriter writer = new BufferedWriter(new FileWriter("file.txt"))) {
writer.write("Hello, World!");
writer.newLine();
writer.write("This is a test.");
} catch (IOException e) {
e.printStackTrace();
}
需要注意的是,在使用字符缓冲流时,必须在操作完成后调用close方法,以确保数据被写入或读取完成并且缓冲区被清空。而且,也可以使用try-with-resources语句来自动关闭资源。