I–input输入/读
O–output输出/写
java.io.File类----操作文件
File file=new File(String pathName);
参数的两种格式:1.C:\\test.txt 2.C:/test.txt
File类常用方法:
boolean exists() 判断文件或目录是否存在
boolean isFile() 判断是否是文件
boolean isDirectory() 判断是否是目录
String getPath() 返回相对路径
String getAbsolutePath() 返回绝对路径
String getName() 返回此对象表示的文件或目录的名称
boolean delete() 删除文件或目录
boolean createNewFile() 创建文件
long length() 返回文件的长度,单位为字节,不存在则返回0L
I/O流分类:
InputStream抽象类常用方法:
int read() 一个字节一个字节的读,返回该字节整数表示形式
int read(byte[] b) 读取若干字节保存到数组b,返回读取到的字节数,末尾返回-1
int read(byte[] b,int off,int len) off指数组b中开始读取数据的下标,len指从下标开 始计算,共读取的字节数目,返回读取到的字节数,末尾返回-1
int available() 返回可读取的字节数
void close() 关闭流
FileInputStream(InputStream子类)常用构造方法:
FileInputStream(File file) 参数为文件
FileInputStream(String pathName) 参数为路径
OutputStream抽象类常用方法:
void write(int b) 将指定字节写入此文件输出流
void write(byte[] b) 将b.length个字节从指定 byte 数组写入此文件输出流中
void write(byte[] b,int off,int len) 写入byte数组中从偏移量off开始的len个字节
void close() 关闭流
void flush() 强制清空缓冲区
FileOutputStream(OutputStream子类)常用构造方法:
FileOutputStream(File file) 参数为文件
FileOutputStream(String pathName) 参数为路径
FileOutputStream(String pathName,boolean append) append为true为追加写入,false会覆盖文件原有数据写入
Reader抽象类常用方法:
int read() 读取单个字符
int read(byte[] b) 将字符读入数组
int read(byte[] b,int off,int len) 将字符读入数组的某一部分
void close() 关闭流
InputStreamReader(Reader直接子类)常用构造方法:
InputStreamReader(InputStream) 创建一个使用默认字符集的 InputStreamReader
InputStreamReader(InputStream,String charsetName) 创建使用给定编码格式的InputStreamReader,用来解决中文乱码问题
FileReader(Reader间接子类)常用构造方法:
FileReader(File file) 参数为文件
FileReader(String pathName) 参数为路径
Writer抽象类常用方法:
void write(String) 写入字符串
void write(String str, int off, int len) 写入字符串的某一部分
void write(char[] ch) 写入字符数组
void write(char[] ch, int off, int len) 写入字符数组的某一部分
void close() 关闭流
void flush() 强制清空缓冲区
OutputStreamWriter(Writer直接子类)常用构造方法:
OutputStreamWriter(OutputStream) 创建一个使用默认字符集的 OutputStreamWriter
OutputStreamWriter(OutputStream,String charsetName) 创建使用给定编码格式的OutputStreamWriter,用来解决中文乱码问题
FileWriter(Writer间接子类)常用构造方法:
FileWriter(File file) 参数为文件
FileWriter(String pathName) 参数为路径
FileWriter(String pathName,boolean append) append为true为追加写入,false会覆盖文件原有数据写入
简单代码示例:
package FileInputStream_Test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
public class FileInputStream_Test {
/**
* 创建文件
*
* @param file
*/
public void newFile(File file) {
if (!file.exists()) {
try {
file.createNewFile();
System.out.println("文件已创建!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 删除文件
*
* @param file
*/
public void fileDel(File file) {
if (file.exists()) {
file.delete();
System.out.println("文件已删除!");
}
}
/**
* 文件信息
*
* @param file
*/
public void showInfo(File file) {
if (file.exists()) {
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
System.out.println(file.length());
} else {
System.out.println("文件不存在!");
}
}
/**
* 字节流写入数据
* @param args
*/
public static void main(String[] args) {
Test test = new Test();
File file = new File("d:\\dxx\\ban.txt");
test.newFile(file);
OutputStream os = null;
try {
os = new FileOutputStream("d:\\dxx\\ban.txt");
String s = "Ban WeiLi";
byte b[] = s.getBytes();
os.write(b, 0, b.length);
System.out.println("更新!");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 字节流读取数据
* @param args
*/
public static void main(String[] args) {
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
System.out.println(fis.available());
int data;
while ((data = fis.read()) != -1) {
System.out.print((char) data);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public class Test {
/**
* 使用字符流
* 读取ban.txt中的数据并写入test.txt
* @param args
*/
public static void main(String[] args) {
Reader read=null;
Writer write=null;
try {
read=new FileReader("d:\\dxx\\ban.txt");
write=new FileWriter("d:\\dxx\\test.txt");
char[]ch=new char[100];
int data;
while((data=read.read(ch))!=-1){
write.write(ch, 0, data);
System.out.println("成功!");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
write.close();
read.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
BufferReader,BufferWriter 缓冲流:
public void test04() {
FileReader fr = null;
FileWriter fw = null;
BufferedReader bfr = null;
BufferedWriter bfw = null;
try {
fr = new FileReader("I:\\wenjian.pdf");
fw = new FileWriter("I:\\wenjian.pdf");
bfr = new BufferedReader(fr);
bfw = new BufferedWriter(fw);
char[] c = new char[1024];
int len = 0;
while ((len = bfr.read(c)) != -1) {
bfw.write(c, 0, len);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bfw != null) {
try {
bfw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bfr != null) {
try {
bfr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fw != null) {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (fr != null) {
try {
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
DataInputStream,DataOutputStream(读写二进制文件 如:音视频):
package com.bdqn.test;
import java.io.DataInputStream;
import java.io.DataOutputStream;
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 Test_mp3 {
public static void main(String[] args) {
OutputStream os = null;
InputStream is = null;
DataInputStream dis = null;
DataOutputStream dos = null;
try {
is = new FileInputStream("d:\\dxx\\Cool.aac");
os = new FileOutputStream("d:\\dxx\\copyCool.aac");
dis = new DataInputStream(is);
dos = new DataOutputStream(os);
int data = 0;
while ((data = dis.read()) != -1) {
dos.write(data);
}
dos.flush();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (dis != null)
dis.close();
if (dos != null)
dos.close();
if (os != null)
os.close();
if (is != null)
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}