IO流
一、File
文件或目录的抽象表现形式
构造器:
File(String pathname)
File(File parent, String child)
方法:
方法名 | 作用 |
---|---|
canWrite | 判断可写 |
canread | 判断可读 |
creatNewFile | 创建新文件 |
isAbsolute | 判断是否为绝对路径 |
isDirectory | 判断是否为文件夹 |
isFile | 判断是否为文件 |
isHidden | 判断是否为隐式文件 |
getAbsoluteFile | 获取绝对路径 |
getAbsolutePath | 获取绝对路径的字符串形式 |
getFreeSpace | 获取字节数 |
getName | 获取文件或文件夹名 |
getParent | 获取上一级路径名的字符串形式 |
lastModified | 最后一次被修改时间(与纪元之间的毫秒值) |
length | 返回文件的字节数 |
renameTo | 重命名 |
二、IO流
file类只能操作文件外部内容,无法改变文件内部内容;IO流可以
流:以先入先出的顺序进行传输
数据源-->目的地
按流向分:
输入流
输出流
按操作单元分:
字节流|万能流
字符流
按功能分:
节点流
功能流
1、字节流
字节输入流:InputStream
字节输出流:OutputStream
InputStream和OutputStream为抽象类,无法实例化
文件输入流:FileInputStream
字节数组输入流:ByteArrayInputStream
文件输出流:FileOutputStream
字节数组输出流:ByteArrayOutputStream
构造器:
(String name)
(File file)
多态写法:
InputStream is=new FileInputStream(file);
import java.io.*;
public class InputStreamTest {
public static void main(String[] args) throws IOException {
File file=new File("D:HelloWorld.java");
InputStream is=new FileInputStream(file);
byte[] arr=new byte[1024];
int len=-1;
while((len=is.read(arr))!=-1){
System.out.println(new String(arr,0,len));
}
is.close();
}
}
OutputStream os=new FileOutputStream(file);
import java.io.*;
public class IOStreamTest {
public static void main(String[] args) {
File file=null;
File newFile=null;
InputStream is=null;
OutputStream os=null;
try{
file=new File("D:\\HelloWorld.java");
newFile=new File("D:\\HelloWorld02.java");
is=new FileInputStream(file);
os=new FileOutputStream(newFile);
byte[] arr=new byte[1024];
int len=-1;
while((len=is.read(arr))!=-1){
os.write(arr,0,len);
}
os.flush();
}catch(IOException e){
e.printStackTrace();
}finally {
if(os!=null){
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
2、字符流
字符流只针对文本文件
输入流|读取流:Reader
输出流|写出流:Writer
和字节流类似,Reader和Writer为抽象类,无法实例化
文件读取流:FileReader
文件写出流:FileWriter
构造器与字节流一致,多态写法与字节流相似
import java.io.*;
public class ReaderWriter {
public static void main(String[] args) throws IOException {
File file=new File("D:\\HelloWorld.java");
File newFile=new File("D:\\hello.java");
Reader r=new FileReader(file);
Writer w=new FileWriter(newFile);
char[] arr=new char[1024];
int len=-1;
while ((len=r.read(arr))!=-1){
w.write(arr,0,len);
}
w.flush();
w.close();
r.close();
}
}