В java нет InoutStream.
Вероятно, вы ищете Files.newByteChannel
:
import java.nio.ByteBuffer;
import java.nio.file.*;
import java.nio.charset.StandardCharsets;
class Snippet {
public static void main(String[] args) throws Exception {
Path path = Paths.get("test.txt");
try (var channel = Files.newByteChannel(path, StandardOpenOption.WRITE, StandardOpenOption.READ)) {
ByteBuffer bb = ByteBuffer.allocate(1024);
channel.read(bb);
// Note that 'read' reads 1 to x bytes depending on file system and
// phase of the moon.
bb.flip();
System.out.println("Read: " + StandardCharsets.UTF_8.decode(bb));
bb.clear();
channel.position(0);
channel.write(StandardCharsets.UTF_8.encode("Hello, World!"));
channel.position(0);
channel.read(bb);
bb.flip();
System.out.println("Read: " + StandardCharsets.UTF_8.decode(bb));
}
}
}
создайте файл с именем 'test.txt', поместите во всем, что вам нравится, затем запустите это. Он напечатает все, что есть, а затем перезапишет его с помощью Hello, World!.
Обратите внимание, что вызов чтения гарантированно прочитает как минимум 1 байт, но не обязательно заполнит весь буфер, даже если файл такой большой: идея состоит в том, что вы читаете один «блок», который операционная система и файловая система могут эффективно передать за одну операцию. Вам нужно будет добавить несколько циклов, если вы хотите прочитать гарантированный минимум или даже весь файл.