JavaでIOストリームを分類する方法
1. IO: アップロードとダウンロード、書き込みと書き込み
ストリーム: 先入れで流れる一連のデータの流れ先出し方式、パイプライン、プログラム中心、プログラムとネットワーク | ファイル | サーバー | 配列.. (関連コースの推奨事項: Java ビデオ チュートリアル)
分類
1) 流れの方向による:
入力ストリーム、出力ストリーム
2) 演算単位の分類:
バイト ストリーム (ユニバーサル ストリーム):あらゆるコンテンツを転送可能 バイトであり、テキスト、画像、音声を送信可能; 文字ストリーム: プレーンテキストデータのみを操作可能
3) 関数によると:
ノードストリーム:基本的な機能を実現するためのソース; 関数ストリーム : ノードストリームのパフォーマンスを強化し、効率を向上させます
4) 各分類は補完的です
バイトストリーム
(1) バイト入力ストリーム: InputStream この抽象クラスは、バイト入力ストリームを表すすべてのクラスのスーパークラスです。FileInputStream は、ファイル システム
//字节流输入 InputStream //导包 导包快捷键: ctrl+shift+o import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; public class Demo01 { public static void main(String[] args) throws IOException { //FileInputStream(String name) 通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定 //FileInputStream(File file) 通过打开一个到实际文件的连接来创建一个 FileInputStream, 该文件通过文件系统中的 File 对象 file 指定 InputStream is=new FileInputStream(new File("D:/test.txt"));//创建D盘符的根目录下的文件 System.out.println(is); //方式1: int read() 读入数据 一个字节一个字节读入 /*int num=is.read(); System.out.println((char)num); num=is.read(); System.out.println((char)num); System.out.println((char)(is.read()));*/ //方式2:使用循环,循环读入,可以简化代码,重复代码只写一次,但还是一个字节一个字节的读入 /*int num=-1; while((num=is.read())!=-1){ System.out.println((char)num); }*/ //方式3:int read(byte[] b) 一个字节数组一个字节数组的读入 //返回值: 返回读入到字节数组中数据的个数,没有读到返回-1 byte[] car=new byte[1]; //int len=is.read(car); int len=-1; while((len=is.read(car))!=-1){ System.out.println(new String(car,0,len)); } //关闭 is.close(); } }
内のファイルから入力バイトを取得します (2) バイト出力ストリーム: OutputStream This抽象クラスは、出力バイト ストリームを表すすべてのクラスのスーパークラスです。 FileOutputStream ファイル出力ストリームは、データを File
//字节输出流 OutputStream //导包 导包快捷键: ctrl+shift+o import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; public class Demo02 { public static void main(String[] args) { //FileOutputStream(String name)创建一个向具有指定名称的文件中写入数据的输出文件流 //FileOutputStream(String name,boolean append) 创建一个向具有指定 name 的文件中写入数据的输出文件流 //FileOutputStream(File file,boolean append) 创建一个向指定 File 对象表示的文件中写入数据的文件输出流 //boolean append 返回值:true追加,false不追加(默认false) OutputStream os=null; //try...catch(){} 捕捉异常,处理异常 try { //1.选择流 os=new FileOutputStream("D:/hhh.txt",hhtrue); //文件不存在,系统会自动帮我们创建,但文件夹不会 //2.准备数据 String str="要好好学习,天天向上..."; byte[] c和=str.getBytes(); //3.写出 void write(byte[] b) os.write(ch); //4.刷出 os.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ //5.关闭 try {//预防空指针异常 if(os!=null){ os.close(); } } catch (IOException e) { e.printStackTrace(); } } } }
Character stream
# に書き込むために使用される出力ストリームです。プレーンテキストのみ操作可能1) ノードストリーム: (1)文字入力ストリーム: Reader は文字ストリームを読み取るための抽象クラス、FileReader は文字ファイルを読み取るための便利なクラス//字符输入流 Reader //导包 导包快捷键: ctrl+shift+o import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.Reader; public class Demo03 { public static void main(String[] args) { //FileReader(String fileName) Reader rd=null; try { //1.选择流 rd=new FileReader("D:/hehe.txt");//创建D盘符的根目录下的文件 //2.读入 //方法1:int read() 读取单个字符。 /*System.out.println((char)rd.read()); System.out.println((char)rd.read()); System.out.println((char)rd.read()); System.out.println((char)rd.read());*/ int len=-1; //存储读到的数据 如果为-1,证明已达到末尾 //方法2: /*while(-1!=(len=rd.read())){ System.out.println((char)len); }*/ //方法3:int read(char[] cbuf) 将字符读入数组。 char[] car=new char[1024]; while((len=rd.read(car))!=-1){ System.out.println(new String(car,0,len)); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{ if(rd!=null){ try { //关闭功能 rd.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
//字符输出流:Writer //导包 导包快捷键: ctrl+shift+o import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.io.Writer; public class CharDemo02 { public static void main(String[] args) { //FileWriter(File file) //默认不追加 //FileWriter(File file, boolean append) //FileWriter(String file) //FileWriter(String file, boolean append) Writer rt=null; try { //1.选择流 rt=new FileWriter("D:/houhou.txt",true); //2.写出 /* void write(char[] cbuf) 写入字符数组 void write(char[] cbuf, int off, int len) 写入字符数组的某一部分 void write(int c) 写入单个字符 void write(String str) 写入字符串 void write(String str, int off, int len) 写入字符串的某一部分 */ rt.write(97); rt.write("\r\n"); //换行 rt.write("你真好看!!!!"); rt.write("\r\n"); rt.write("你真好看!!!!",2,2); rt.write("\r\n"); char[] ch={'a','b','c','d','e'}; rt.write(ch); rt.write("\r\n"); rt.write(ch,2,3); //3.刷出 rt.flush(); } catch (IOException e) { e.printStackTrace(); } finally{ //4.关闭 if(null!=rt){ try { rt.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
機能の流れ
# バッファリングされたストリーム: 強化された機能、向上したパフォーマンス、高速な読み取りと書き込みの効率
//导包 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public class BufferedInputStream01 { public static void main(String[] args) throws IOException { //1.选择流 //BufferedInputStream(InputStream in) InputStream is=new BufferedInputStream(new FileInputStream("D:/hehe.txt")); OutputStream os=new BufferedOutputStream(new FileOutputStream("E:/hengheng.txt") ); //2.读写 byte[] car=new byte[1024]; int len=-1; while((len=is.read(car))!=-1){ os.write(car,0,len); } //3.刷出 os.flush(); //4.关闭 os.close(); is.close(); } }
//导包 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class BufferedReader02 { public static void main(String[] args) throws IOException { //1.选择流 导包快捷键: ctrl+shift+o BufferedReader br=new BufferedReader(new FileReader("D:/hehe.txt")); BufferedWriter bw=new BufferedWriter(new FileWriter("D:/ccc.txt")); //2.读写 String msg=null; while((msg=br.readLine())!=null){ bw.write(msg); bw.newLine(); } //3.刷出 bw.flush(); //4.关闭 bw.close(); br.close(); } }
データストリーム(バイトノードストリーム)
データストリーム(バイトノードストリーム):
読み書き可能な基本データ型 文字列型データ、バイトストリーム関数ストリームの一種です DataInputStream の新しいメソッド: readXxx() DataOutputStream の新しいメソッド: writeXxx() 新しいメソッド状態がある場合、複数の発生は発生しません。最初に書き込み、次に write 発生する可能性のある例外: EOFException ファイルには次の内容があります。内容を読み取ることができません。書き込まれたソース ファイルを読み取る必要があります。//导包 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; public class Data01 { public static void main(String[] args) throws IOException { //调用方法 write("D:/data.txt"); read("D:/data1.txt"); } //读入 public static void read(String path) throws IOException{ //1.输入流 数据类型+数据 DataInputStream in=new DataInputStream(new BufferedInputStream(new FileInputStream(path))); //2.读入 int i=in.readInt(); boolean b=in.readBoolean(); String s=in.readUTF(); System.out.println(i+"-->"+b+"-->"+s); //3.关闭 in.close(); } //写出 public static void write(String path) throws IOException{ //1.输出流 DataOutputStream out=new DataOutputStream(new BufferedOutputStream(new FileOutputStream(path))); //2.准备数据 int i=101; boolean f=false; String s="哈哈"; //3.写出 写出和读入的顺序要保持一致 out.writeInt(i); out.writeBoolean(f); out.writeUTF(s); //4.刷出 out.flush(); //5.关闭 out.close(); } }
オブジェクト ストリーム
オブジェクトはデータを保存します。型データ
# バイト関数ストリーム: オブジェクト型データの読み取りおよび書き込みを送信する場合は、オブジェクト ストリームを使用できます シリアル化: オブジェクト型データを保存可能な | 形式に変換するプロセス。送信可能状態 ObjectInputStream() 逆シリアル化された入力ストリーム 新しいメソッド: readObject() ObjectOutputStream( ) シリアル化された出力ストリーム 新しいメソッド: writeObject()注: 1) 最初にシリアライズしてからデシリアライズ 2) シリアライズとデシリアライズの読み取りと書き込みの順序は一貫しています 3) すべてのクラスをシリアル化できるわけではありません java.io.Serializable 空のインターフェイス4) すべてのプロパティを一時的にシリアル化する必要はありません 5) 静的コンテンツはシリアル化されません 6) 親クラスが Serializable インターフェイスを実装している場合、すべてのコンテンツはシリアル化できますサブクラスサブクラスが Serializable インターフェイスを実装しているが、親クラスがそれを実装していない場合、サブクラスはサブクラスに固有のコンテンツのみをシリアル化できます
//导包 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.Arrays; public class ObjectDemo02 { public static void main(String[] args) throws IOException, ClassNotFoundException { write("D:/object.txt"); read("D:/object.txt"); } //反序列化输入 public static void read(String path) throws IOException, ClassNotFoundException{ //1.输入流 ObjectInputStream is=new ObjectInputStream(new BufferedInputStream(new FileInputStream(path))); //2.读入 Object p= is.readObject(); int[] arr= (int[]) is.readObject(); if(p instanceof Person){ Person person=(Person)p; System.out.println(person.getName()); } System.out.println(p); System.out.println(Arrays.toString(arr)); //3,关闭 is.close(); } //序列化输出 public static void write(String path) throws IOException{ //1.输出对象信息 ObjectOutputStream os=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(path))); //2.准备数据 Person p=new Person("aaa",18); int[] arr={1,2,3,4}; //3.输出 os.writeObject(p); os.writeObject(arr); //4.刷出 os.flush(); //5.关闭 os.close(); } } //接口 class Person implements Serializable{ private String name; private static int age; public Person() { } public Person(String name, int age) { super(); this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } }
2. ファイル クラス
ファイル クラス: ファイルとディレクトリのパス名の抽象表現
提供される関数: ファイルの外部で操作できるが、ファイル内部のコンテンツは操作できない 実際のパス | ファイルを定義します。ファイルが存在しない場合でも定義できます。そのため、抽象式は コンストラクター : File(Fileparent, String child) 親抽象に基づいて新しい File インスタンスを作成します。パス名と子のパス名文字列 File(String pathname) 指定されたパス名文字列を抽象パス名に変換して作成されます 新しい File インスタンス File(Stringparent, String child) 新しい File インスタンスを作成します親パス名文字列と子パス名文字列に基づく この記事はJava 入門チュートリアル
列から引用したものです。ぜひ学習してください。以上がJavaでIOストリームを分類する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











この記事では、Java Spring の面接で最もよく聞かれる質問とその詳細な回答をまとめました。面接を突破できるように。

Java 8は、Stream APIを導入し、データ収集を処理する強力で表現力のある方法を提供します。ただし、ストリームを使用する際の一般的な質問は次のとおりです。 従来のループにより、早期の中断やリターンが可能になりますが、StreamのForeachメソッドはこの方法を直接サポートしていません。この記事では、理由を説明し、ストリーム処理システムに早期終了を実装するための代替方法を調査します。 さらに読み取り:JavaストリームAPIの改善 ストリームを理解してください Foreachメソッドは、ストリーム内の各要素で1つの操作を実行する端末操作です。その設計意図はです

Java での日付までのタイムスタンプに関するガイド。ここでは、Java でタイムスタンプを日付に変換する方法とその概要について、例とともに説明します。

カプセルは3次元の幾何学的図形で、両端にシリンダーと半球で構成されています。カプセルの体積は、シリンダーの体積と両端に半球の体積を追加することで計算できます。このチュートリアルでは、さまざまな方法を使用して、Javaの特定のカプセルの体積を計算する方法について説明します。 カプセルボリュームフォーミュラ カプセルボリュームの式は次のとおりです。 カプセル体積=円筒形の体積2つの半球体積 で、 R:半球の半径。 H:シリンダーの高さ(半球を除く)。 例1 入力 RADIUS = 5ユニット 高さ= 10単位 出力 ボリューム= 1570.8立方ユニット 説明する 式を使用してボリュームを計算します。 ボリューム=π×R2×H(4

PHP and Python each have their own advantages, and the choice should be based on project requirements. 1.PHPは、シンプルな構文と高い実行効率を備えたWeb開発に適しています。 2。Pythonは、簡潔な構文とリッチライブラリを備えたデータサイエンスと機械学習に適しています。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

Java は、初心者と経験豊富な開発者の両方が学習できる人気のあるプログラミング言語です。このチュートリアルは基本的な概念から始まり、高度なトピックに進みます。 Java Development Kit をインストールしたら、簡単な「Hello, World!」プログラムを作成してプログラミングを練習できます。コードを理解したら、コマンド プロンプトを使用してプログラムをコンパイルして実行すると、コンソールに「Hello, World!」と出力されます。 Java の学習はプログラミングの旅の始まりであり、習熟が深まるにつれて、より複雑なアプリケーションを作成できるようになります。
