如何在Java中使用函数进行文件IO操作?
Java中提供了许多用于文件IO操作的函数和类,主要包括File、FileReader、FileWriter、BufferedReader、BufferedWriter、InputStream、OutputStream、InputStreamReader和OutputStreamWriter。这些类都位于 java.io包中,其中File类是其中使用最广泛的类之一。下面主要介绍常用的函数和类。
一、File类
File类表示文件或目录的路径名。通过实例化File类并传入文件或目录的路径名来操作文件或目录。File类提供了许多常用方法,如创建、删除、重命名、获取文件名等。下面是常用的方法的介绍。
1.实例化File类:
在Java中实例化File类需要传入文件或目录的路径名,如下例所示:
File file = new File("D:\\test.txt");//路径名为D:\\test.txt,
2.创建新文件:
可以使用File类的createNewFile()方法来创建新文件,示例如下:
File file = new File("D:\\test.txt");
if(!file.exists()){
file.createNewFile();
System.out.println("文件创建成功!");
}
3.创建新目录:可以使用File类的mkdir()或mkdirs()方法来创建新目录,示例如下:
File dir = new File("D:\\test");
if(!dir.exists()){
dir.mkdir();//创建单级目录
}
File dirs = new File("D:\\test\\temp\\image");
if(!dirs.exists()){
dirs.mkdirs();//创建多级目录
}
4.删除文件:可以使用File类的delete()方法来删除文件,示例如下:
File file = new File("D:\\test.txt");
if(file.exists()){
file.delete();//删除文件
}
删除目录需要使用递归来实现,示例如下:
public static void deleteDir(File dir){
if(dir.isDirectory()){
File[] files = dir.listFiles();
for(File file : files){
if(file.isDirectory()){
deleteDir(file);
}else{
file.delete();
}
}
}
dir.delete();
}
5.重命名文件:可以使用File类的renameTo()方法来重命名文件,示例如下:
File file = new File("D:\\test.txt");
File newFile = new File("D:\\test_new.txt");
if(file.exists()){
file.renameTo(newFile);//重命名文件
}
二、字节流和字符流
Java中的IO操作分为字节流和字符流。字节流用来处理二进制数据,字符流用来处理文本数据。字节流与字符流的区别在于读取的数据类型不同,字节流一次读取一个字节数据,而字符流一次读取一个字符数据。
1.字节流:InputStream和OutputStream
Java中的字节流主要有两个类:InputStream和OutputStream。InputStream表示输入字节流,OutputStream表示输出字节流。InputStream类和OutputStream类可以与文件、网络等交互对象一起使用。
读取字节流示例:
InputStream in = new FileInputStream("D:\\test.txt");
byte[] bytes = new byte[1024];
int len = 0;
while((len = in.read(bytes)) != -1){
System.out.println(new String(bytes,0, len));
}
in.close();
写入字节流示例:
OutputStream out = new FileOutputStream("D:\\test.txt");
byte[] bytes = new byte[1024];
String s = "Hello World!";
bytes = s.getBytes();
out.write(bytes);
out.close();
2.字符流:Reader和Writer
Java中的字符流主要有两个类:Reader和Writer。Reader表示输入字符流,Writer表示输出字符流。Reader类和Writer类可以与文件、网络等交互对象一起使用。
读取字符流示例:
Reader reader = new FileReader("D:\\test.txt");
char[] chars = new char[1024];
int len = 0;
while((len = reader.read(chars)) != -1){
System.out.println(new String(chars,0, len));
}
reader.close();
写入字符流示例:
Writer writer = new FileWriter("D:\\test.txt", true);
String s = "Hello World!";
writer.write(s);
writer.close();
三、缓冲流
Java中的缓冲流是基于装饰器模式设计的,一般情况下会将字节流或字符流封装在缓冲流中,通过缓冲区提高IO读写效率。
1.字节流的缓冲流:BufferedInputStream和BufferedOutputStream
读取字节缓冲流示例:
InputStream in = new FileInputStream("D:\\test.txt");
BufferedInputStream bis = new BufferedInputStream(in);
byte[] bytes = new byte[1024];
int len = 0;
while((len = bis.read(bytes)) != -1){
System.out.println(new String(bytes,0, len));
}
in.close();
写入字节缓冲流示例:
OutputStream out = new FileOutputStream("D:\\test.txt");
BufferedOutputStream bos = new BufferedOutputStream(out);
byte[] bytes = new byte[1024];
String s = "Hello World!";
bytes = s.getBytes();
bos.write(bytes);
bos.flush();
bos.close();
2.字符流的缓冲流:BufferedReader和BufferedWriter
读取字符缓冲流示例:
Reader reader = new FileReader("D:\\test.txt");
BufferedReader br = new BufferedReader(reader);
String str = "";
while((str = br.readLine()) != null){
System.out.println(str);
}
reader.close();
写入字符缓冲流示例:
Writer writer = new FileWriter("D:\\test.txt", true);
BufferedWriter bw = new BufferedWriter(writer);
String s = "Hello World!";
bw.write(s);
bw.flush();
bw.close();
综上所述,Java中的IO操作需要使用文件IO相关的类和函数,具体需要根据实际情况进行选择,常用的有File、FileReader、FileWriter、BufferedReader、BufferedWriter、InputStream、OutputStream、InputStreamReader和OutputStreamWriter。要注意IO操作的异常处理和文件的关闭。
