File类功能
创建文件 createNewFile()
- 结合try…catch
try {
//File f = new File("/home/skywang/dir/file3.txt"); //linux创建文件
File f = new File("D:/学习/专业/Java/java_text.txt");
f.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
- 也可以在类中抛出异常
创建目录/多目录 mkdir()/mkdirs()
IO概述
IO流分类:
- 硬盘读入内存 输入input -read
- 内存写入硬盘 输出output -write
字节流
记事本读不懂的为字节流
输出字节
- 创建字节输出流对象
- 第一种
File f= new File("D:/学习/专业/Java/java_text.txt");
FileOutputStream fs=new FileOutputStream(f);
- 第二种
FileOutputStream fs=new FileOutputStream("D:/学习/专业/Java/java_text.txt");
调用方法
`
//write(int b);
fs.write(55);
//write(byte[] b);
byte[] by= {97,98,99,100,101};
byte[] by= "adagae".getBytes(); //根据字符串得到字符数组
fs.write(by);
//write(byte[] b,int off, int len); 目标字节,偏移量,字节数
byte[] by= "adagae".getBytes();
fs.write(by,1,3); //从某个索引开始录入
3.关闭
fs.close();
- 两个小问题
- 换行
fs.write("hello".getBytes());
fs.write("\r\n".getBytes()); //Windows识别的是\r\n;不同系统不一样
- 追加写入
FileOutputStream fs=new FileOutputStream(f,true);
- 异常处理
FileOutputStream fs=null;
try{
fs=new FileOutputStream("D:/");
fs.write(57);
}catch(IOException e){
e.printStackTrace();
}finally{
if(fs!=null){
try{
fs.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
读取字节
- 一次读取一个字节
int by=fs.read();
while(by!=-1) {
System.out.println((char)by);
by=fs.read();
}
- 一次读取一个字节数组数据
方法一
byte[] bys=new byte[100]; //读取的字节数;如果是5个字节,那么读取的只有5个字节长度,需要重复读取
int len=fis.read(bys);
System.out.println(new String(bys));
方法二
byte[] bys=new byte[1024];
int len;
while((len=fis.read(bys))!=-1) {
System.out.print(new String(bys,0,len));
}
复制文本文件
File fi= new File("D:/学习/专业/Java/java_text.txt");
File fo= new File("D:/学习/专业/Java/java_text1.txt");
FileInputStream fis=new FileInputStream(fi);
FileOutputStream fos=new FileOutputStream(fo);
int by;
while((by=fis.read())!=-1) {
fos.write(by);;
}
fis.close();
fos.close();
复制图片
File fi= new File("D:/学习/专业/Java/J1.jpg");
File fo= new File("D:/学习/专业/Java/J2.jpg");
FileInputStream fis=new FileInputStream(fi);
FileOutputStream fos=new FileOutputStream(fo);
byte[] bys=new byte[1024];
int len;
while((len=fis.read(bys))!=-1) {
fos.write(bys,0,len);
}
fis.close();
fos.close();
字节缓冲流
-和上面相比,此函数不用一直调用底层;提高读写数据的效率
构造方法:
- 字节缓冲输出流 BufferedOutputStream(OutputStream out)
- 字节缓冲输出流 BufferedInputStream(InputStream in)
字节缓冲流依靠的输出输入流方法函数和字节流操作一样的
File fo= new File("D:/学习/专业/Java/java_text1.txt");
FileOutputStream fos=new FileOutputStream(fo);
BufferedOutputStream out=new BufferedOutputStream(fos,"UTF-8");
String s="中国";
out.write(s);
out.close();
字节复制视频
略