目录
一.File类
关于名字和路径的操作
关于创建和销毁的操作
创建文件夹(多级目录)
InputStream
第一种:字节流读取
第二种: 字符流读取(Reader)
OutputStream
第一种:字节流写入
第二种方式:字符流输入
一.File类
File翻译过来"文件"
那么File类的操作实际上就全部是对文件进行操作
关于名字和路径的操作
public static void main(String[] args) {
//虚拟一个名字叫做test.txt的文件,但这一步只是虚拟的,还没有创建File file = new File("./test.txt");System.out.println(file.getParent());//获取这个文件的父目录的路径System.out.println(file.getName());//获取这个文件的名字System.out.println(file.getPath());//获取这个文件的相对路径System.out.println(file.getAbsolutePath());//获取这个文件的绝对路径}
关于创建和销毁的操作
public static void main(String[] args) throws IOException {
//拟创建一个叫做Test.txt的文件,但还没创建File file = new File("./Test.txt");
//真的在计算机的当前目录创建了这个文件file.createNewFile();System.out.println(file.isFile());//判断是否是普通文件System.out.println(file.isDirectory());//判断是否是目录文件System.out.println(file.exists());//判断这个文件是否存在System.out.println(file.delete());//删除这个文件System.out.println(file.exists());}
创建文件夹(多级目录)
public static void main(String[] args) {File file = new File("./hello1");File file2 = new File("./hello2/6666");file.mkdir();//只能创建一级目录file2.mkdirs();//能创建多级目录}
InputStream
就是从文件里面读取数据
一般有两种读取方式
第一种:字节流读取
(读写的基本单位是字节)
基本方法: read() :读取一个字节的数据,返回-1代表读取完毕
使用
我们先在D盘创建一个名字叫做hello.txt的文件,然后输入hello
public static void main(String[] args) throws FileNotFoundException {InputStream inputStream = new FileInputStream("D:/hello.txt");//这里输入读取的文件地址,如果输入错误会报错无法读取while(true){try {int ret = inputStream.read();//如果全部读取完毕返回-1if(ret == -1){break;}System.out.println(ret);} catch (IOException e) {throw new RuntimeException(e);}}}
输出的为对应的ASCII码~
第二种: 字符流读取(Reader)
运行原理和字节流读取一样,唯一不同的是在屏幕上显示的是字符而不是ask表对应的数字
public static void main(String[] args) throws FileNotFoundException {Reader reader = new FileReader("D:/hello.txt");while(true){try {int ret = reader.read();if(ret == -1){break;}System.out.println((char)ret);} catch (IOException e) {throw new RuntimeException(e);}}}
OutputStream
就是向文件里面写数据
一般有两种写入方式
第一种:字节流写入
基本方法: write()
public static void main(String[] args) throws FileNotFoundException {OutputStream outputStream = new FileOutputStream("d:/hello.txt");try {
//注意,这里的98,99,100是ask码表对应的数字的字符,不是数字98,99,100outputStream.write(98);outputStream.write(99);outputStream.write(100);} catch (IOException e) {throw new RuntimeException(e);}}
第二种方式:字符流输入
这种方式一定要注意在最后使用flush方式
把存储在内存中的字节流拿出来
否则会什么都没有但是程序依然不报错
public static void main(String[] args) throws IOException {Writer writer = new FileWriter("d:/hello2.txt");writer.write("hello");
//一定要加上flush!!!!!
//一定要加上flush!!!!!
//一定要加上flush!!!!!writer.flush();}