------- android培训、java培训、期待与您交流! ----------
JAVA之IO流
File(File parent,String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。 |
File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。 |
File(String parent,String child) 根据 parent 路径名字符串和 child 路径名字符串创建一个新 File 实例。 |
package it.heima.io;
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) throws IOException {
//方法一
File file=new File("F:\\4.txt");
//方法二
File file2=new File("F:\\","4.txt");
//方法三
File file3=new File("F:\\");
File file4=new File(file3,"4.txt");
}
}
public boolean mkdir()
package it.heima.io;
import java.io.File;
import java.io.IOException;
public class FileDemo2 {
public static void main(String[] args) throws IOException {
File file=new File("a.txt");
file.createNewFile();
System.out.println("存在:"+file.exists());
System.out.println("是否文件夹:"+file.isDirectory());
System.out.println("是否文件:"+file.isFile());
System.out.println("是否隐藏:"+file.isHidden());
System.out.println("重命名or剪切"+file.renameTo(new File("b.txt")));
System.out.println("删除"+new File("b.txt").delete());
System.out.println(new File("aa\\bb").mkdirs());
System.out.println(new File("aa\\bb").delete());
System.out.println(new File("aa").delete());
}
}
package it.heima.io;
import java.io.File;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class FileDemo3 {
public static void main(String[] args) throws Exception {
File file=new File("aa\\a.txt");
new File("aa").mkdir();
file.createNewFile();
System.out.println("绝对路径"+file.getAbsolutePath());
System.out.println("相对路径"+file.getPath());
System.out.println("名字"+file.getName());
System.out.println("长度"+file.length());
System.out.println("最后修改时间"+file.lastModified());
Date date=new Date(file.lastModified());
SimpleDateFormat dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(dateFormat.format(date));
}
}
package it.heima.io;
import java.io.File;
public class FileDemo3 {
public static void main(String[] args) throws Exception {
File file=new File("E:\\");
String[] name=file.list();
for(String item:name){
System.out.println(item);
}
System.out.println("---------------------");
File[] files=file.listFiles();
for(File f:files){
System.out.println(f.getName());
}
}
}
1、字节流
按流向分类:可以分为输入流和输出流.
按类型分类:可以分为字节流和字符流
输入流:
------------------------丨InputStream 抽象类
-------------------------------丨FileInputStream 读文件的输入字节流,没有解码能力,读出的是byte
-------------------------------丨BufferedInpuStream 内部存在一个8K的字节数组,为了提高读文件的效率
输出流:
------------------------丨OnputStream 抽象类
-------------------------------丨FileOnputStream 写文件的输出字节流,没有编码能力,要通过getBytes的编码转换成byte才能写入
-------------------------------丨BufferedOnpuStream 内部存在一个8K的字节数组,为了提高写文件的效率
2、字节流的使用
输出字节流:
构造方法:new FileOutputStream(String name);
new FileOutputStream(File file)
成员方法:public void write(byte[]/byte b)
public void close()
public void flush()
输出字节流代码练习:
package it.heima.io;
import java.io.File;
import java.io.FileOutputStream;
public class OutputStreamDemo {
public static void main(String[] args) throws Exception {
//2钟OutputStream构造方法
/*File file=new File("a.txt");
FileOutputStream outputStream=new FileOutputStream(file);*/
FileOutputStream fileOutputStream=new FileOutputStream("a.txt");
//调用系统的方法帮我们创建、管理文件
String s="hello,java";
fileOutputStream.write(s.getBytes());
fileOutputStream.close();
//为什么要close?
//1.让流对象变成垃圾街被系统回收
//2、通知系统文件释放相关资源
}
}
3种write()方法和换行:
package it.heima.io;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class OutputStreamDemo2 {
public static void main(String[] args) throws Exception {
//3种write方法
FileOutputStream fileOutputStream=new FileOutputStream("F:\\a.txt");
//传入int
/*fileOutputStream.write(97);
fileOutputStream.write(57);
fileOutputStream.write(55);
fileOutputStream.close();
*/
byte[] buf={97,98,99,100};
fileOutputStream.write(buf);
fileOutputStream.write(buf, 1, 2);
//换行:
/*windows: \r\n
* linux: \n
* mac:\r
* 一些常用的文本软件能识别任意换行符
* */
for(int i=0;i<4;i++){
fileOutputStream.write(("hello"+i+"\r\n").getBytes());
}
fileOutputStream.close();
}
}
同样学习2个构造方法:
new FileInputStream(File file)
new FileInputStream(Stream name)
成员方法:
public int read()
public int read(byte[] buf)
public int read(byte[] bys,int start,int length)
输入字节流的方法练习:
package it.heima.io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class FileInputStreamDmeo {
public static void main(String[] args) throws Exception {
FileInputStream fileInputStream=new FileInputStream("F:\\a.txt");
int b=fileInputStream.read();
System.out.println(b);
int c=fileInputStream.read();
System.out.println((char)c);
//输入字节流读有点类似迭代器,读1个字节,下次读从该字节的下一个开始
int buf=0;
while((buf=fileInputStream.read())!=-1){
System.out.println((char)buf);
}
fileInputStream.close();
}
}
3、缓冲字节流
BufferedInputStream/BufferedOutputStream
缓冲字节流内部维护了一个字节数组,再接数组存满再一次性传输。
代码练习复制一个文本:
package it.heima.io;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.nio.Buffer;
public class BufferedInputStreamDemo {
public static void main(String[] args) throws Exception {
BufferedInputStream bufferedInputStream=new BufferedInputStream(new FileInputStream("F:\\a.txt"));
BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(new FileOutputStream("F:\\b.txt"));
int by=0;
/*while((by=bufferedInputStream.read())!=-1){
bufferedOutputStream.write(by);
}
*/
byte[] buf=new byte[1024];
while((by=bufferedInputStream.read(buf))!=-1){
bufferedOutputStream.write(buf);
}
bufferedOutputStream.close();
bufferedInputStream.close();
}
}