首先如果我们在Java编写的一个程序中获得了想要的某种结果,那么在程序结束后,这个结果还存在嘛?不存在的,因为在Java程序运行时,程序会被加载到内存中在内存中运行,但是,在程序结束后虚拟机会自动释放内存空间,中间程序得到得结果也会消失,但是我们如果想保存这个结果呢?之前因为我们学习过使用JDBC技术链接数据库,这也能达到目的,但是对于某些长文本数据存储到数据库中就有些不便,那么这次我们学习Java的io技术可以将程序结果存储到本地的文件中,随取随存。
知识架构
Java中的输入流是一种用于从外部设备读取数据的机制。它提供了一组类和接口,用于从不同的数据源读取数据,如文件、网络连接、控制台等。
Java中的输入流主要分为以下几种类型:
常规常见输入流步骤:
Java中的输出流是一种用于将数据写入到外部设备的机制。它提供了一组类和接口,用于将数据从Java程序输出到不同的目标,如文件、网络连接、控制台等。
Java中的输出流主要分为以下几种类型:
使用输出流进行数据写入的一般步骤如下:
需要注意的是: 在使用输入输出流进行数据读取时,应该遵循“打开-使用-关闭”的原则
,及时关闭连接以释放资源。同时,应该根据实际需求选择合适的流类,以达到最佳的读写效果。
Java中的File类是用于文件和目录操作的类。它提供了一种在Java程序中创建、读取、写入和删除文件的方式。
File类主要用于对文件增删查的操作,没有用于对文件内部数据的读写功能。
File类的主要功能包括:
示例:输出某一文件夹中所有的文件信息(包括子文件夹):
需要注意的是,如果某个文件夹需要权限才能访问,那么使用File类的listFiles方法返回的是null,为了代码不出现错误,我们需要对此进行判断。
public static void main(String[] args) {
out_data(new File("E:\\简历"));
}
public static void out_data(File f){
//获取文件名或文件夹名
System.out.println("--------------"+f.getName()+"------------------");
File[] files = f.listFiles();
if(files == null) { return; }
for(File ft : files){
// 判断是否文件夹,是则继续往下递归
if(ft.isDirectory()) { out_data(ft); }
// 不是文件夹,则输出信息
else{ System.out.println(ft.getName()); }
}
System.out.println("--------------"+f.getName()+"------------------");
}
Java中的文件输入输出流是用于读取和写入文件的类。Java提供了两种类型的文件输入输出流:字节输入输出流和字符输入输出流。
二者的区别在于,字节流是以字节为单位进行读取,随读随取,可以读取除文本外任意文件;字符流也是以字节进行读取,但是不同点在于它遇到中文时会按中文的编码方式进行读取,而带有缓冲区机制。
字节输入输出流以字节为单位进行读写操作。Java中提供了以下几种字节输入输出流类:
使用字节输入输出流进行文件读写的一般步骤如下:
示例:读取文件
import java.io.FileInputStream;
import java.io.IOException;
public class FileReadingExample {
public static void main(String[] args) {
try (FileInputStream fileInputStream = new FileInputStream("path/to/file.txt")) {
int data;
while ((data = fileInputStream.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
示例:写入文件
import java.io.FileOutputStream;
import java.io.IOException;
public class FileWritingExample {
public static void main(String[] args) {
try (FileOutputStream fileOutputStream = new FileOutputStream("path/to/file.txt")) {
String data = "Hello, World!";
fileOutputStream.write(data.getBytes());
} catch (IOException e) {
e.printStackTrace();
}
}
}
字符输入输出流以字符为单位进行读写操作。
Java中提供了以下几种字符输入输出流类:
使用字符输入输出流进行文件读写的一般步骤如下:
示例:读取文件
import java.io.FileReader;
import java.io.IOException;
public class FileReadingExample {
public static void main(String[] args) {
try (FileReader fileReader = new FileReader("path/to/file.txt")) {
int data;
while ((data = fileReader.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
示例:写入文件
import java.io.FileWriter;
import java.io.IOException;
public class FileWritingExample {
public static void main(String[] args) {
try (FileWriter fileWriter = new FileWriter("path/to/file.txt")) {
String data = "Hello, World!";
fileWriter.write(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
需要注意的是,在进行io读取操作时,应该遵循“打开-使用-关闭”的原则
,及时关闭连接以释放资源。同时,应该根据实际需求选择合适的流类,以达到最佳的读写效果。