자바 의 FileInputStream 과 FileOutputStream 의 기본 사용 상세 설명
InputStream 과 OutputStream 은 추상 클래스 로 모든 바이트 입력 흐름 과 출력 흐름 의 부모 클래스 입 니 다.여기 서 우 리 는 먼저 두 가지 개념 을 분명하게 구분 해 야 한다.
FileInputStream 은 파일 시스템 의 한 파일 에서 입력 바 이 트 를 가 져 옵 니 다.
구조 방법
//通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的 File 对象 file 指定。
public FileInputStream(File file);
//通过打开一个到实际文件的连接来创建一个 FileInputStream,该文件通过文件系统中的路径名 name 指定。
public FileInputStream(String name);
상용 방법
입력 흐름 에서 바이트 크기 의 데 이 터 를 읽 습 니 다.
//从此输入流中读取一个数据字节。
public int read();
입력 흐름 에서 바이트 배열 을 한 번 읽 습 니 다.
//从此输入流中将最多 b.length 个字节的数据读入一个 byte 数组中。
public int read(byte[] b);
//从此输入流中将最多 len 个字节的数据读入一个 byte 数组中。off:目标数组 b 中的起始偏移量。
public int read(byte[] b,int off,int len);
파일 에서 데이터 읽 기:
import java.io.FileInputStream;
/**
* FileInputStream:节点流(低级流),从文件中读入数据
* @author Administrator
*
*/
public class FISDemo01 {
public static void main(String[] args){
String content=null;
try {
int size=0;
//定义一个字节缓冲区,该缓冲区的大小根据需要来定义
byte[] buffer=new byte[1024];
FileInputStream fis=new FileInputStream("FOSDemo.txt");
//循环来读取该文件中的数据
while((size=fis.read(buffer))!=-1){
content=new String(buffer, 0, size);
System.out.println(content);
}
//关闭此文件输入流并释放与此流有关的所有系统资源。
fis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
파일 출력 흐름 - FileOutput Stream
파일 출력 흐름 은 데 이 터 를 파일 에 기록 하 는 데 사 용 됩 니 다.
구조 방법
//创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
public FileOutputStream(File file);
//创建一个向指定 File 对象表示的文件中写入数据的文件输出流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
public FileOutputStream(File file,boolean append);
//创建一个向具有指定名称的文件中写入数据的输出文件流。
public FileOutputStream(String name);
//创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
public FileOutputStream(String name,boolean append);
상용 방법
파일 에 바이트 크기 의 데 이 터 를 기록 합 니 다.
//向文件中写入一个字节大小的数据
public void write(int b);
파일 에 바이트 배열 의 데 이 터 를 한꺼번에 기록 합 니 다.
//将 b.length 个字节从指定 byte 数组写入此文件输出流中。
public void write(byte[] b);
//指定 byte 数组中从偏移量 off 开始的 len 个字节写入此文件输出流。
public void write(byte[] b,int off,int len);
파일 에 데이터 쓰기:
import java.io.FileOutputStream;
/**
* FileOutputStream:节点流(低级流),向文件中写出数据
* @author Administrator
*
*/
public class FOSDemo01 {
public static void main(String[] args){
try {
//向文件中写入字节数组
String font="输出流是用来写入数据的!";
FileOutputStream fos = new FileOutputStream("FOSDemo.txt");
fos.write(font.getBytes());
//关闭此文件输出流并释放与此流有关的所有系统资源。此文件输出流不能再用于写入字节。 如果此流有一个与之关联的通道,则关闭该通道。
fos.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
FileInputStream 과 FileOutputStream 을 사용 하여 파일 복 제 를 실현 합 니 다.
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* 使用文件输入流和文件输出流实现文件的复制
* @author Administrator
*
*/
public class SummaryFISAndFOS {
public static void main(String[] args){
/**
* 1.先将文件中的内容读入到输入流中
* 2.将输入流中的数据通过输出流写入到目标文件中
* 3.关闭输入流和输出流
*/
try {
long begin=System.currentTimeMillis();
//从输入流中读取数据
FileInputStream fis=new FileInputStream("FOSDemo.txt");
//向输出流中写入数据
FileOutputStream fos=new FileOutputStream("FISAndFOSDest.txt");
//先定义一个字节缓冲区,减少I/O次数,提高读写效率
byte[] buffer=new byte[10240];
int size=0;
while((size=fis.read(buffer))!=-1){
fos.write(buffer, 0, size);
}
fis.close();
fos.close();
long end=System.currentTimeMillis();
System.out.println("使用文件输入流和文件输出流实现文件的复制完毕!耗时:"+(end-begin)+"毫秒");
} catch (Exception e) {
e.printStackTrace();
}
//解决JNI问题(Java Native Interface)
System.exit(0);
}
}
실행 결과: 파일 입력 흐름 과 파일 출력 흐름 을 사용 하여 파일 복사 완료!소요 시간: 17 밀리초
이상 은 기본적으로 우리 가 자주 사용 하 는 방법 에 대한 소개 입 니 다. 마지막 으로 꼭
close()
을 기억 하 세 요!이상 의 내용 은 저 개인의 관점 만 을 대표 합 니 다. 어떤 잘못된 점 이 있 으 면 각 분야 의 신 에 게 지적 해 주 십시오!전재 출처 를 밝 혀 주세요!감사합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
범용 용법 예시앞으로 51CTO 에 정착 해 기술 개발 에 전념 할 테 니 잘 부탁드립니다.다음 코드 는 자신 이 (저자: 이 흥 화) 를 공부 할 때 두 드 린 코드 로 주석 이 완비 되 어 있다. 범용 클래스 Point. ja...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.