ホームページ >Java >&#&チュートリアル >Java における io ストリームとは何ですか?
1. 入力ストリーム。データは読み取りのみ可能ですが、データを書き込むことはできません。出力ストリームはバイト データの書き込みのみが可能ですが、バイト データからの読み取りはできません。
2.InputStream のタイプは次のとおりです:
ByteArrayInputStream 包含一个内存缓冲区,字节从中取出。 FileInputStream 从文件中获得字节。 ObjectInputStream 用来恢复被序列化的对象。 PipedInputStream 管道输入流,读取管道内容。多和PipedOutputStream一起用于多线程通信。 SequenceInputStream 是多种输入流的逻辑串联,从第一个输入流读取,直到最后一个输入流。 StringBufferInputStream 读取的字节由字符串提供。
2. OutputStream のタイプも次のとおりです:
ByteArrayOutputStream 该类实现了一个输出流,其数据被写入由byte数组充当的缓冲区,缓冲区会随着数据的不断写入而自动增长。 FileOutputStream 该类实现了一个输出流,其数据写入文件。 ObjectOutputStream 该类将实现了序列化的对象序列化后写入指定地方。 PipedOutputStream 管道的输出流,是管道的发送端。
3. Objectstream は、FileInputStream および FileOutputStream と一緒に使用されることがよくあります。 (初期化中に使用されます)
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("Logon.out"));
4. File クラスはファイルを参照しませんが、ファイル セットを表す場合は list() メソッドを使用してクエリすることもできます。セット。
5. StreamTokenizer は、InputStream を一連の数値に分割するために使用されます。StringTokenizer は StreamTokenizer と非常によく似た関数を提供しますが、これは C# の Split() メソッドに似ています。
6. Zip を使用してファイルを圧縮する手順:
まず圧縮ファイルを生成します:
FileOutputStream f =new FileOutputStream("test.zip"); CheckedOutputStream csum =new CheckedOutputStream( f, new Adler32()); ZipOutputStream out =new ZipOutputStream(new BufferedOutputStream(csum));
out.setComment("A test of Java Zipping");//压缩文件注释信息
次に、圧縮するファイルを追加します:
out.putNextEntry(new ZipEntry(test.txt);
ただし、out クラスに ZipEntry クラスがすでに存在することを確認する必要があります。
ソースコード:
import java.io.*;import java.util.*;import java.util.zip.*;public class ZipCompress {public static void main(String[] args) {try { FileOutputStream fileOutputStream = new FileOutputStream("test.zip"); CheckedOutputStream csum = new CheckedOutputStream(fileOutputStream, new Adler32()); ZipOutputStream outputStream = new ZipOutputStream(new BufferedOutputStream(csum)); outputStream.setComment("A test of java Zipping"); System.out.println("Writing file" + "zip.txt"); BufferedReader in = new BufferedReader(new FileReader("zip.txt")); outputStream.putNextEntry(new ZipEntry("zip.txt"));// int c;// while ((c = in.read()) != -1) {// outputStream.write(c);// }// in.close();outputStream.write("123".getBytes()); outputStream.close(); System.out.println("Checksum:" + csum.getChecksum().getValue()); System.out.println("Reading file"); FileInputStream fileInputStream = new FileInputStream("test.zip"); CheckedInputStream csumi = new CheckedInputStream(fileInputStream, new Adler32()); ZipInputStream in2 = new ZipInputStream(new BufferedInputStream(csumi)); ZipEntry zipEntry; System.out.println("Checksum:" + csumi.getChecksum().getValue());while ((zipEntry = in2.getNextEntry()) != null) { System.out.println("Reading file:" + zipEntry);int x;while ((x = in2.read()) != -1) { System.out.println(x); } } in2.close(); ZipFile zf = new ZipFile("test.zip"); Enumeration e = zf.entries();while (e.hasMoreElements()) { ZipEntry ze2 = (ZipEntry) e.nextElement(); System.out.println("File: " + ze2); } } catch (Exception e) { e.printStackTrace(); } } }
7. Serialization と Externalizable インターフェイスの違いは、どちらもデフォルトでクラスをシリアル化できるインターフェイスであるのに対し、Externalizable はシリアル化された部分を制御できることです。 、部分連載。
8.serialization シリアル化を制御する方法: (1) transient (一時的) キーワードを適用します。 (2) Serializable インターフェースを実装し、「) または」のメソッドと readObject() を追加します (「カバー」または「実装」ではなく「追加」であることに注意してください)。オブジェクトがシリアル化または再アセンブルされると、これら 2 つのメソッドがそれぞれ呼び出されます。
以上がJava における io ストリームとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。