Java的输入输出(I/O)是程序与外部世界交互的重要方式。它允许程序从外部获取数据,并将结果输出到不同的目标。本文将介绍Java中的输入输出相关概念和常用方法。

在Java中,输入和输出是通过字节流(Byte Stream)或字符流(Character Stream)进行的。字节流主要处理二进制数据,而字符流则处理文本数据。

字节流

字节流是最基本的输入输出方法,它使用字节作为数据单元。Java中提供了两个字节流类:InputStream和OutputStream。

InputStream用于从外部获取数据。它包含了一系列用于读取字节的方法,如read()、read(byte[] buffer)等。我们可以使用InputStream来读取文件、网络数据等。

OutputStream用于向外部写入数据。它也包含了一系列用于写入字节的方法,如write(int b)、write(byte[] buffer)等。我们可以使用OutputStream来写入文件、网络数据等。

字符流

字符流是对字节流的高级封装,它使用字符作为数据单元。Java中提供了两个字符流类:Reader和Writer。

Reader用于从外部读取字符数据。它包含了一系列用于读取字符的方法,如read()、read(char[] buffer)等。我们可以使用Reader来读取文本文件、输入流等。

Writer用于向外部写入字符数据。它也包含了一系列用于写入字符的方法,如write(int c)、write(char[] buffer)等。我们可以使用Writer来写入文本文件、输出流等。

文件输入输出

Java提供了FileInputStream和FileOutputStream类来操作文件的输入输出。

Text
public void readFile(String filePath) throws IOException {
   FileInputStream fileInputStream = new FileInputStream(filePath);
   int data;
   while ((data = fileInputStream.read()) != -1) {
       System.out.print((char) data);
   }
   fileInputStream.close();
}
public void writeFile(String filePath, String content) throws IOException {
   FileOutputStream fileOutputStream = new FileOutputStream(filePath);
   fileOutputStream.write(content.getBytes());
   fileOutputStream.close();
}

上述代码演示了如何使用FileInputStream和FileOutputStream读取和写入文件。在读取文件时,我们使用了read()方法逐字节读取文件内容,并将其转换为字符后打印出来。在写入文件时,我们使用了write(byte[] buffer)方法,将字符串转换为字节数组后写入文件。

网络输入输出

Java中的网络输入输出通过Socket实现。可以使用Socket的InputStream和OutputStream来进行网络数据的读写。

Text
public void readFromURL(String url) throws IOException {
   URL website = new URL(url);
   InputStream inputStream = website.openStream();
   int data;
   while ((data = inputStream.read()) != -1) {
       System.out.print((char) data);
   }
   inputStream.close();
}
public void writeToURL(String url, String content) throws IOException {
   URL website = new URL(url);
   URLConnection urlConnection = website.openConnection();
   urlConnection.setDoOutput(true);
   OutputStream outputStream = urlConnection.getOutputStream();
   outputStream.write(content.getBytes());
   outputStream.close();
}

上述代码演示了如何使用InputStream和OutputStream从URL读取数据和写入数据。在读取URL时,我们使用了openStream()方法获取输入流,并使用read()方法逐字节读取数据。在写入URL时,我们使用了openConnection()方法获取URLConnection对象,并将其设置为可输出。然后使用getOutputStream()方法获取输出流,并使用write(byte[] buffer)方法写入数据。

以上是Java的输入输出基础知识和常见操作的介绍。通过了解和掌握这些知识,我们可以更好地处理数据输入输出,提升程序的灵活性和适应性。