欢迎访问宙启技术站
智能推送

如何在Java中使用函数进行文件IO操作?

发布时间:2023-06-09 20:02:49

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操作的异常处理和文件的关闭。