杰瑞科技汇

java writeint

Of course! In Java, there isn't a method named .writeInt() that you can call on a string or any arbitrary object. However, there is a very important method with that exact name used for writing integer data to a stream.

The primary place you'll find writeInt() is in the DataOutputStream class.

The Main Answer: DataOutputStream.writeInt()

This method is used to write an integer to an output stream in a portable, binary format. This is different from System.out.println(), which converts the integer to a string and writes it to the console.

Key Characteristics of DataOutputStream.writeInt():

  1. Binary Format: It writes the 4 bytes of the integer's binary representation, not its text form (e.g., it writes 0x00 0x00 0x00 0x2A for the number 42).
  2. Machine-Independent: It always writes the integer in big-endian format (most significant byte first). This ensures that a file written on a Windows machine can be read correctly on a Mac or Linux machine, and vice-versa.
  3. Requires a Stream: It must be wrapped around another stream, like FileOutputStream (for files) or ByteArrayOutputStream (for memory).

Complete Example: Writing an Integer to a File

Here is a full, practical example of how to use DataOutputStream to write an integer to a file and then read it back using DataInputStream.

import java.io.*;
public class WriteIntExample {
    public static void main(String[] args) {
        String fileName = "my_number.bin";
        // --- Part 1: Writing the integer to a file ---
        try (DataOutputStream dos = new DataOutputStream(new FileOutputStream(fileName))) {
            int numberToWrite = 12345;
            System.out.println("Writing integer: " + numberToWrite);
            // This is the method you're asking about!
            dos.writeInt(numberToWrite);
            System.out.println("Successfully wrote integer to " + fileName);
        } catch (FileNotFoundException e) {
            System.err.println("Error: File not found.");
            e.printStackTrace();
        } catch (IOException e) {
            System.err.println("An I/O error occurred while writing.");
            e.printStackTrace();
        }
        System.out.println("\n--- Reading the file back ---\n");
        // --- Part 2: Reading the integer from the file ---
        try (DataInputStream dis = new DataInputStream(new FileInputStream(fileName))) {
            // Use readInt() to read the 4 bytes back into an int
            int numberRead = dis.readInt();
            System.out.println("Read integer from file: " + numberRead);
            // Verify the data is correct
            if (numberRead == 12345) {
                System.out.println("Data matches! The write was successful.");
            }
        } catch (FileNotFoundException e) {
            System.err.println("Error: Could not find the file to read.");
            e.printStackTrace();
        } catch (IOException e) {
            System.err.println("An I/O error occurred while reading.");
            e.printStackTrace();
        }
    }
}

How to Run and What Happens:

  1. Compile and Run: Save the code as WriteIntExample.java, compile it (javac WriteIntExample.java), and run it (java WriteIntExample).

  2. Console Output:

    Writing integer: 12345
    Successfully wrote integer to my_number.bin
    --- Reading the file back ---
    Read integer from file: 12345
    Data matches! The write was successful.
  3. File Created: A new file named my_number.bin will be created in the same directory. If you open it with a text editor, it will look like garbled characters because it's a binary file, not a text file.


Other Ways to "Write an Int" (and Why They're Different)

It's important to understand the alternatives to DataOutputStream.writeInt().

System.out.println(int) or PrintWriter

This is the most common way to print an integer to the console or to a text file. It converts the number into its string representation (e.g., "12345") and writes that text.

import java.io.PrintWriter;
import java.io.FileWriter;
import java.io.IOException;
public class PrintIntExample {
    public static void main(String[] args) {
        int number = 987;
        // To the console
        System.out.println(number); // Writes "987" followed by a newline
        // To a text file
        try (PrintWriter writer = new PrintWriter(new FileWriter("my_number.txt"))) {
            writer.println(number); // Writes "987" to the file
            System.out.println("Successfully wrote text to my_number.txt");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Output File (my_number.txt):

987

This is human-readable but cannot be read back as an integer using dis.readInt(). You would have to use dis.readLine() and then Integer.parseInt().

Files.write() (Java 7+)

This is a modern, convenient way to write text or a byte array to a file. To write an integer, you must first convert it to a string or a byte array.

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.charset.StandardCharsets;
public class FilesWriteExample {
    public static void main(String[] args) {
        int number = 555;
        String fileName = "my_number_files.txt";
        // Convert the integer to a string, then get its bytes
        String textToWrite = Integer.toString(number);
        byte[] bytesToWrite = textToWrite.getBytes(StandardCharsets.UTF_8);
        try {
            Files.write(Paths.get(fileName), bytesToWrite);
            System.out.println("Successfully wrote text using Files.write()");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

This is essentially a shortcut for creating a FileOutputStream and writing to it. It's great for simple text or binary data but less structured than DataOutputStream.

Summary: When to Use Which

Method Use Case Format Read Counterpart
DataOutputStream.writeInt() Writing binary data to a file or network for other programs to read. Binary, big-endian DataInputStream.readInt()
PrintWriter.println() Writing human-readable text to the console or a text file. Text BufferedReader.readLine() + Integer.parseInt()
Files.write() A simple, modern way to write text or raw bytes to a file. Text or raw bytes Files.readAllBytes() or Files.readString()

For your question, the answer is unequivocally DataOutputStream.writeInt() for writing raw integer data to a stream.

分享:
扫描分享到社交APP
上一篇
下一篇