ファイルバイトストリーム、文字ファイルとバイトファイルを読み取ることができます
- FileInputStream:入力ストリーム
- FileOutputStream:出力ストリーム
ファイルコピー機能の実現:
package com.cao.demo.lesson00;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test {
public static void main(String[] args) {
// 源文件路径
String src="C:\\iweb\\01.jpg";
// 目标文件路径
String dst="C:\\iweb\\02.jpg";
// 读取文件
FileInputStream in=null;
// 写入文件
FileOutputStream out=null;
try{
// 创建流对象
in=new FileInputStream(src);
out=new FileOutputStream(dst);
// 读取文件
// 1. 创建一个缓冲区
byte[] buffer=new byte[1024];
// 2. 定义一个变量接收每次读取的字节数
int len=0;
// 3. 开始读取文件
while((len=in.read(buffer))!=-1){
// 4. 写文件
out.write(buffer,0,len);
// 5.从内存刷新到磁盘
out.flush();
}
}catch(FileNotFoundException fnfe){
fnfe.printStackTrace();
}catch(IOException ie){
ie.printStackTrace();
}
finally{
try {
// 关闭流: 流在使用的过程中一定要关闭
if(in!=null) in.close();
if(out!=null) out.close();
}catch(IOException ie){
ie.printStackTrace();
}
}
}
}
ファイル文字ストリーム:文字ストリーム、バイトファイルの読み取りと書き込みができません
- FilerReader:入力
- FilerWriter:出力
テキストコピー機能の実現:
package com.cao.demo.lesson00;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Test5 {
public static void main(String[] args) {
String src = "C:\\iweb\\test\\01.txt";
String dst = "C:\\iweb\\test\\02.txt";
FileReader reader = null;
FileWriter writer = null;
try {
reader = new FileReader(src);
writer = new FileWriter(dst);
char[] buffer=new char[5];
int len=0;
while((len=reader.read(buffer))!=-1){
writer.write(buffer,0,len);
writer.flush();
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(reader!=null){
try {
reader.close();
}catch (IOException ioe){
ioe.printStackTrace();
}
}
if(writer!=null){
try{
writer.close();
}catch (IOException ioe){
ioe.printStackTrace();
}
}
}
}
}
ここでポイントを破ると、
実行するたびに5文字がターゲットファイルに追加されることがわかります。
ファイルカテゴリ:ファイルシステム(FS)システムカテゴリ
- ファイルパスの作成、変更、削除の基本操作(ファイルの内容とは関係なく、ファイルの内容はIOストリームによって操作されます)
package com.cao.demo.lesson00;
import java.io.File;
public class Test1 {
public static void main(String[] args) {
String path = "C:\\iweb\\test";
// 根据文件的路径创建对象
File file = new File(path);
// 根据文件的路径创建对象
System.out.println(file.isDirectory());
System.out.println(file.isFile());
// 判断文件路径是否有效
System.out.println(file.exists());
// 查看指定文件路径下的所有文件
String[] filenames = file.list();// 返回的是文件名称
for (int i = 0; i < filenames.length; i++) {
System.out.println(filenames[i]);
}
File[] files=file.listFiles();// 返回的是文件对象数组
for (int i = 0; i < files.length; i++) {
File f=files[i];
System.out.println(f.getName()+'\t'+f.isDirectory()+'\t'+f.length());
}
}
true
false
true
01.jpg
01.txt
02.jpg
02.txt
testIn
01.jpg false 13547
01.txt false 50
02.jpg false 13547
02.txt false 50
testIn true 0
ファイルの作成:
public class Test6 {
public static void main(String[] args) throws Exception{
String path="C:\\iweb\\test\\testIn\\txtTest";
File file=new File(path);
file.mkdirs();
path="C:\\iweb\\test\\testIn\\txtTest1.txt";
file=new File(path);
file.createNewFile();
}
}
ファイルの削除
public class Test6 {
public static void main(String[] args) throws Exception{
String path="C:\\iweb\\test\\testIn\\txtTest";
File file=new File(path);
file.delete();
}
}
ファイルの名前変更:
public class Test6 {
public static void main(String[] args) throws Exception{
String path="C:\\iweb\\test\\testIn\\txtTest.txt";
File file=new File(path);
file.renameTo(new File("C:\\iweb\\test\\testIn\\txtTest66.txt"));
}
}
ファイルの作成、削除、名前の変更、およびその他のメソッドは、成功した場合はtrueを返し、そうでない場合はfalseを返します。
public class Test6 {
public static void main(String[] args) throws Exception{
String path="C:\\iweb\\test\\testIn\\txtTest66.txt";
File file=new File(path);
boolean b=file.renameTo(new File("C:\\iweb\\test\\testIn\\txtTest22.txt"));
System.out.println(b);
}
}
正常に実行され、trueを返します
true
public class Test6 {
public static void main(String[] args) throws Exception{
String path="C:\\iweb\\test\\testIn\\txtTest.txt";
File file=new File(path);
boolean b=file.renameTo(new File("C:\\iweb\\test\\testIn\\txtTest22.txt"));
System.out.println(b);
}
}
ファイルが見つからず、実行に失敗しました。falseを返す
false
文字バッファストリーム:処理ストリーム(機能:コンストラクターのパラメーターはストリームタイプである必要があります)
- BufferedReader入力ストリーム
- BufferedWriter出力ストリーム
public class Test7 {
public static void main(String[] args) {
String src="C:\\iweb\\test\\01.txt";
String dst="C:\\iweb\\test\\88.txt";
BufferedReader bufferedReader=null;
FileReader fileReader=null;
BufferedWriter bufferedWriter=null;
FileWriter fileWriter=null;
try {
// 业务过程
// 读取的是流中的数据
fileReader = new FileReader(src);
bufferedReader = new BufferedReader(fileReader);
fileWriter = new FileWriter(dst);
bufferedWriter = new BufferedWriter(fileWriter);
// 字符缓冲流 提供了一个默认的缓冲大小 以行为结束点每次读取一行
String line=null;
while((line=bufferedReader.readLine())!=null){
//打印每次缓存的一行
System.out.println(line);
bufferedWriter.write(line);
//换行
bufferedWriter.newLine();
bufferedWriter.flush();
}
}catch (IOException ioe){
ioe.printStackTrace();
}finally {
try{
if(fileReader!=null){
fileReader.close();
}
if(fileWriter!=null){
fileWriter.close();
}
if(bufferedReader!=null){
bufferedReader.close();
}
if(bufferedWriter!=null){
bufferedWriter.close();
}
}catch (IOException ioe){
ioe.printStackTrace();
}
}
}
}
行ごとに印刷:
hello word!
hello word!
hello word!
hello word!
122
569