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

10个Java输入输出函数,让你轻松读写文件和网络数据

发布时间:2023-05-20 11:03:01

在Java编程中,输入输出是非常重要的部分。Java提供了许多输入输出函数来读写文件和网络数据。本文将分享10个Java输入输出函数,让你轻松读写文件和网络数据。

1. FileInputStream和FileOutputStream

FileInputStream和FileOutputStream用于读写文件。以下是一个例子:

public class ReadFromFile {
   public static void main(String args[])throws IOException{
      InputStream in = new FileInputStream("input.txt");
      int data = in.read();
      while(data != -1){
         System.out.print((char) data);
         data = in.read();
      }
      in.close();
   }
}

以上代码打开一个名为“input.txt”的文件,读取单独的字符,直到末尾(data == -1)。FileOutputStream类似,可以用来写一个字节到文件:

public class WriteToFile {
   public static void main(String args[])throws IOException{
      OutputStream out = new FileOutputStream("output.txt");
      byte b[] = {'H', 'e', 'l', 'l', 'o'};
      out.write(b);
      out.close();
   }
}

以上代码创建一个名为“output.txt”的文件,并写入字节序列“Hello”。

2. BufferedReader和BufferedWriter

BufferedReader和BufferedWriter用于在Java中读写缓冲区。以下是一个示例:

public class ReadLines {
   public static void main(String args[]) throws IOException{
      BufferedReader br = new BufferedReader(new FileReader("input.txt"));
      String line = br.readLine();
      while(line != null){
         System.out.println(line);
         line = br.readLine();
      }
      br.close();
   }
}

以上代码打开一个名为“input.txt”的文件,并读取每一行。BufferedWriter类似,可以用来写一个字符串到文件:

public class WriteLines {
   public static void main(String args[])throws IOException{
      BufferedWriter bw = new BufferedWriter(new FileWriter("output.txt"));
      bw.write("Hello");
      bw.newLine();
      bw.write("World");
      bw.close();
   }
}

以上代码创建一个名为“output.txt”的文件,并写入字符串“Hello”和“World”。

3. InputStreamReader和OutputStreamWriter

InputStreamReader和OutputStreamWriter用于将字节流转为字符流。以下是一个示例:

public class ReadFromInput {
   public static void main(String args[])throws IOException{
      InputStream in = System.in;
      InputStreamReader r = new InputStreamReader(in);
      BufferedReader br = new BufferedReader(r);
      String line = br.readLine();
      System.out.println(line);
      br.close();
   }
}

以上代码读取从计算机键盘输入的字符串。OutputStreamWriter类似,可以用来将字符流转换为字节流:

public class WriteToOutput {
   public static void main(String args[])throws IOException{
      OutputStream out = System.out;
      OutputStreamWriter w = new OutputStreamWriter(out);
      String str = "Hello World";
      w.write(str);
      w.flush();
      w.close();
   }
}

以上代码将字符串“Hello World”写到屏幕上。

4. DataInputStream和DataOutputStream

DataInputStream和DataOutputStream用于读写基本数据类型。以下是一个示例:

public class ReadBinary {
   public static void main(String args[])throws IOException{
      InputStream in = new FileInputStream("data.bin");
      DataInputStream dis = new DataInputStream(in);
      int i = dis.readInt();
      double d = dis.readDouble();
      boolean b = dis.readBoolean();
      dis.close();
   }
}

以上代码打开一个名为“data.bin”的文件,并读取一个整数,一个双精度浮点数和一个布尔值。DataOutputStream类似,可以用来写基本数据类型的值到文件:

public class WriteBinary {
   public static void main(String args[])throws IOException{
      OutputStream out = new FileOutputStream("data.bin");
      DataOutputStream dos = new DataOutputStream(out);
      int i = 10;
      double d = 3.14;
      boolean b = true;
      dos.writeInt(i);
      dos.writeDouble(d);
      dos.writeBoolean(b);
      dos.close();
   }
}

以上代码创建一个名为“data.bin”的文件,并写入一个整数,一个双精度浮点数和一个布尔值。

5. Socket

Socket用于在Java中读写网络数据。以下是一个示例:

public class Client {
   public static void main(String[] args) throws IOException {
      Socket socket = new Socket("localhost", 8888);
      InputStream in = socket.getInputStream();
      OutputStream out = socket.getOutputStream();
      DataInputStream dis = new DataInputStream(in);
      DataOutputStream dos = new DataOutputStream(out);
      String request = "Hello";
      dos.writeUTF(request);
      String response = dis.readUTF();
      System.out.println(response);
      socket.close();
   }
}

以上代码连接到端口号为8888的本地主机并发送一个字符串。ServerSocket类用于在服务器端接受客户端请求。

6. ObjectInputStream和ObjectOutputStream

ObjectInputStream和ObjectOutputStream用于读写Java对象。以下是一个示例:

public class Deserialize {
   public static void main(String[] args) throws Exception {
      FileInputStream fis = new FileInputStream("obj.txt");
      ObjectInputStream ois = new ObjectInputStream(fis);
      Student s = (Student)ois.readObject();
      System.out.println(s.getName());
      System.out.println(s.getAge());
      ois.close();
   }
}

以上代码从名为“obj.txt”的文件中读取一个Student对象。Student类需要实现Serializable接口。ObjectOutputStream类用于将Java对象写到文件中。

7. ByteArrayInputStream和ByteArrayOutputStream

ByteArrayInputStream和ByteArrayOutputStream用于在Java中读写字节数组。以下是一个示例:

public class ByteStreams {
   public static void main(String[] args) throws Exception {
      String str = "Hello World!";
      byte[] data = str.getBytes();
      ByteArrayInputStream bais = new ByteArrayInputStream(data);
      ByteArrayOutputStream baos = new ByteArrayOutputStream();

      int ch;
      while ((ch = bais.read()) != -1) {
         char character = (char) ch;
         baos.write(Character.toLowerCase(character));
      }
      System.out.println(baos);
      baos.close();
   }
}

以上代码将“Hello World!”字符串转换为小写并将结果写入ByteArrayOutputStream对象中。ByteArrayOutputStream类用于将字节数组写到文件中。

8. PipedInputStream和PipedOutputStream

PipedInputStream和PipedOutputStream用于在Java中读写管道流。以下是一个示例:

public class PipedStreams {
   public static void main(String[] args) throws IOException {
      PipedOutputStream pos = new PipedOutputStream();
      PipedInputStream pis = new PipedInputStream(pos);

      new Thread(() -> {
         try {
            pos.write("Hello World!".getBytes());
         } catch (Exception e) { }
      }).start();

      int i = pis.read();
      while (i != -1) {
         System.out.print((char) i);
         i = pis.read();
      }
      pis.close();
   }
}

以上代码创建一个PipedInputStream和PipedOutputStream对象,并在两个不同的线程中写入和读取管道流。

9. Scanner

Scanner用于在Java中读取用户输入。以下是一个示例:

import java.util.Scanner;

public class ReadUserInput {
   public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
      System.out.print("Enter your name: ");
      String name = scanner.nextLine();
      System.out.println("Hello, " + name + "!");
      scanner.close();
   }
}

以上代码从用户输入中读取一个字符串,并将其用于向用户发送问候信息。

10. Console

Console用于在Java中读取密码和敏感信息。以下是一个示例:

import java.io.Console;

public class ConsoleDemo {
   public static void main(String[] args) {
      Console console = System.console();
      if(console != null) {
         console.printf("Please enter your password: ");
         char[] password = console.readPassword();
         console.printf("Your password was: %s%n", new String(password));
      } else {
         throw new RuntimeException("Console not available");
      }
   }
}

以上代码使用Console对象读取用户输入,包括密码,并在控制台上以星号代替密码。需要注意的是,Console对象可能不可用。

结论

以上是10个Java输入输出函数,让你轻松读写文件和网络数据。在Java中读写数据是一个重要的部分,掌握这些函数使得Java程序员可以更加高效地读写数据。需要注意的是,所有文件和网络资源在使用后都需要关闭。