入出力
•入力と出力(I / O)
コンピュータのハードディスク上のデータを、入力と呼ばれるプログラムに読み込みます。つまり、入力して、データを読み込みます。
プログラムから外部デバイスにデータを書き込みます。これは出力、つまり出力と呼ばれ、データ書き込み操作を実行します。
•InputStreamとOutputStreamのサブクラスはバイトストリームです
-バイナリファイルの読み取りと書き込みが可能で、主にオーディオ、画像、曲、バイトストリームを処理し、処理単位は1バイトです。
•リーダーとライターのサブクラスは文字ストリームです
主に文字または文字列を扱い、文字ストリーム処理単位は1文字です。
バイトストリームによって読み取られたバイトデータは、指定されたエンコーディングテーブルに移動して、対応するテキストを取得します。
public static void main(String[] args) {
try {
//创建FileInputStream的对象,指定要输入(读)的文件,文件不存在,抛出异常
FileInputStream in = new FileInputStream("E:\\demo.txt");
//每次read();一次,从输入流中读到一个字节,当读取完后会返回-1
int b = in.read();
System.out.println(b);
int b1 = in.read();
System.out.println(b1);
int b2 = in.read();
System.out.println(b2);
int b3 = in.read();
System.out.println(b3);
int b4 = in.read();
System.out.println(b4);
int b5 = in.read();
System.out.println(b5);
int b6 = in.read();
System.out.println(b6);
} catch (IOException e) {
e.printStackTrace();
}
}
入力と出力はペアで表示されます
public static void main(String[] args) {
FileInputStream in = null;
FileOutputStream out = null;
try {
/*
创建FileInputStream对象,指定要输入(读)的文件,文件不存在,会抛出异常
*/
in = new FileInputStream("E:\\demo.txt");
/*
创建FileOutputStream对象,会自动创建输出的文件
*/
out = new FileOutputStream("F:\\demo.txt");
int b = 0;
while ((b = in.read()) != -1) {
System.out.println(b);
out.write(b);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//关闭流对象,释放系统资源
try {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
有効なコード
public static void main(String[] args) throws IOException {
/*
创建FileInputStream对象,指定要输入(读)的文件,文件不存在,会抛出异常
*/
FileInputStream in = new FileInputStream("E:\\demo.txt");
/*
创建FileOutputStream对象,会自动创建输出的文件
*/
FileOutputStream out = new FileOutputStream("F:\\demo.txt");
int b = 0;
while ((b = in.read()) != -1) {
System.out.println(b);
out.write(b);
}
in.close();
out.close();
}
読み取りと書き込みの効率の向上
package com.ff.javaio.Day2;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class StreamDemo3 {
public static void main(String[] args) throws IOException {
/*
创建FileInputStream对象,指定要输入(读)的文件,文件不存在,会抛出异常
*/
FileInputStream in = new FileInputStream("E:\\demo.txt");
/*
创建FileOutputStream对象,会自动创建输出的文件
*/
FileOutputStream out = new FileOutputStream("F:\\demo.txt");
/*
read();每次从输入流中读取一个字符 返回字符值 读完返回-1
read(byte[] b)每次从输入流中读取一个byte数组长度个字符,返回数组中实际装入内容个数,读完返回-1
*/
byte [] b = new byte[10];
int length=0;
while((length=in.read(b))!=-1){
/* out.write(b);每次传10个字符,不足10个字符,会自动填充空格*/
out.write(b,0,length);//向外写出一个byte数组个字节,从数组指定位置开始,写length个字节
}
in.read(b);
in.close();
out.close();
}
}
バッファリングされたバイトイン/アウトストリーム
public static void main(String[] args) throws IOException {
//创建输入节点流,负责对文件读写
FileInputStream in = new FileInputStream("D:\\Users\\17509\\Desktop\\Tule - Fearless.mp3");
//创建处理对象,内部有一个缓冲数组,默认为8192个字节,包装输入流,提供缓冲功能,也可以设置缓冲区大小
BufferedInputStream bin = new BufferedInputStream(in);
FileOutputStream out = new FileOutputStream("E:/新建文件.mp3");
BufferedOutputStream bout = new BufferedOutputStream(out);
/* int b= 0;
while ((b=bin.read())!=-1){
bout.write(b);
}*/
int length = 0;
byte[] b = new byte[1024];
while ((length = bin.read(b)) != -1) {
bout.write(b, 0, length);
}
bout.flush();//刷新缓冲区
bout.close();
bin.close();
}