一 File类
1.File类概述
File类将会涉及到关于文件目录的创建,删除,重命名,修改时间,文件大小,读入和输出等方法;要在Java程序中表示一个真实存在的文件或目录必须要有一个File类对象,但Java程序中的一个File对象并不一定对应一个真实存在的文件或目录;File对象可作为参数传递给流构造器,指明读取或写入的目标位置。
2.File类的使用
(1)绝对路径:固定的路径,从盘符开始
(2)相对路径:是相对于某个位置开始
(3)构造方法:
import java.util.*;
import java.io.File;
public class Main{
public static void main(String[] args){
String s1="C:\\User\\ASUS\\test.txt";
String s2="C:\\USer\\ASUS";
String s3="test.txt";
File f1=new File(s1);//以s1为绝对路径创建File对象
File f2=new File(s2,s3);//以s2为父路径,s3为子路径创建File对象
File f3=new File(s2);//以s2为绝对路径创建File对象
File f4=new File(f3,s3);//以File对象f3的绝对路径为父路径,s3为子路径创建File对象
System.out.println(f1);
System.out.println(f2);
System.out.println(f3);
System.out.println(f4);
}
}
/*output:
C:\User\ASUS\test.txt
C:\USer\ASUS\test.txt
C:\USer\ASUS
C:\USer\ASUS\test.txt
*/
(4)成员方法:
import java.util.*;
import java.io.File;
public class Main{
public static void main(String[] args){
String s1="C:\\User\\ASUS\\test.txt";
String s2="C:\\USer\\ASUS";
String s3="test.txt";
File f1=new File(s1);//以s1为绝对路径创建File对象
File f2=new File(s2,s3);//以s2为父路径,s3为子路径创建File对象
File f3=new File(s2);//以s2为绝对路径创建File对象
File f4=new File(f3,s3);//以File对象f3的绝对路径为父路径,s3为子路径创建File对象
System.out.println(f1.exists());//判断此路径表示的File对象是否真实存在
System.out.println(f1.canRead());//判断此路径表示的File对象是否可读
System.out.println(f1.canWrite());//判断此路径表示的File对象是否可写
System.out.println(f2.length());//返回文件大小,返回值为long类型,表示字节大小
System.out.println(f3.isDirectory());//判断此路径表示的File对象是否是文件夹
System.out.println(f4.getAbsolutePath());//返回文件的绝对路径,返回值为String类型
System.out.println(f2.getPath());//返回定义文件时使用的路径,返回值为String类型
System.out.println(f2.getParent());//返回上层文件目录路径,返回值为String类型,若无上层文件则返回null
System.out.println(f3.getName());//返回文件的名称,带后缀,返回值为String类型
System.out.println(f4.lastModified());//返回该文件最后一次修改的时间,返回值为long类型
}
}
/*
f1=C:\User\ASUS\test.txt
f2=C:\USer\ASUS\test.txt
f3=C:\USer\ASUS
f4=C:\USer\ASUS\test.txt
output:
true
true
true
11
true
C:\USer\ASUS\test.txt
C:\USer\ASUS\test.txt
C:\USer\ASUS
ASUS
1712375617329
*/
(5)创建与删除文件
import java.util.*;
import java.io.File;
public class Main{
public static void main(String[] args){
String s1="C:\\User\\ASUS\\test.txt";
String s2="C:\\USer\\ASUS";
String s3="test.txt";
File f1=new File(s2,s3);
File f2=new File(s2,"o1\\o2");
if(f2.mkdir()){
System.out.println("f2.mkdir创建成功");//由于上级文件o1并不存在所以单级创建的f2.mkdir()返回值为false
}
if(f2.mkdirs()){
System.out.println("f2.mkdirs创建成功");//多级创建会连同不存在的上级文件o1一起创建
}
System.out.println(f1.exists());//判断此路径表示的File对象是否存在
f1.createNewFile();//返回值类型是boolean,若文件已经存在则返回false,否则返回true
System.out.println(f1.exists());//判断此路径表示的File对象是否存在
System.out.println(f1.isDirectory());//判断此路径表示的File对象是否是文件夹
f1.delete();//删除f1
System.out.println(f1.exists());
}
}
/*
output:
false
true
false
flase
*/
二 IO流
1.IO流概述
顾名思义,输入输出流,其作用自然是用来读写数据的。按照传输方向划分分为输入流和输出流,按照数据单位划分分为字节流和字符流,所以IO流总共分为四大类:字节输出流,字节输入流,字符输出流,字符输入流;字符流相比于字节流可以读取/输出不同的语言,不容易出现读取/输入乱码现象。
2.输出流
OutputStream类是字节输出流,而Writer类则是字符输出流。
(1)OutputStream
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException {
String s1="C:\\User\\ASUS\\test.txt";
String s2="C:\\USer\\ASUS";
String s3="test.txt";
File f1=new File(s2,s3);
OutputStream out=new FileOutputStream(f1,true);//f1为输出的目标文件,第二个参数为true是写入方式为从尾部添加,若为false则为覆写
out.write("Hello ".getBytes());
out.write("Worl".getBytes());
out.write(100);
out.close();//关闭资源流
}
}
/*
output:
test.txt文件中的内容被从尾部添加了”Hello World“
*/
(2)Writer
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException {
String s1="C:\\User\\ASUS\\test.txt";
String s2="C:\\USer\\ASUS";
String s3="test.txt";
File f1=new File(s2,s3);
Writer out=new FileWriter(f1,false);//f1为输出的目标文件,第二个参数为true是写入方式为从尾部添加,若为false则为覆写
out.write("你好".toCharArray());
out.write(",世界晚安".toCharArray(),0,2);
out.write(30028);
out.close();//关闭资源流
}
}
/*
output:
test.txt文件中的内容被覆写成了”你好,世界“
*/
3.输入流
InputStream是字节输入流,而Reader则是字符输入流。
(1)InputStream
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException {
String s1="C:\\User\\ASUS\\test.txt";
String s2="C:\\USer\\ASUS";
String s3="test.txt";
File f1=new File(s2,s3);
byte[] store=new byte[10];
InputStream in=new FileInputStream(f1);//f1为获取输入的的目标文件
System.out.print((char)in.read());//读取一个字节并强制转化为char输出
in.read(store,0,5);//从store数组的0位置开始从目标文件中读取5个字节并存入store
for(byte ele:store){
if(ele!=0)System.out.print((char)ele);
}
in.read(store);//从目标文件读取最多为store数组长度的字节数内容
for(byte ele:store){
if(ele!=0)System.out.print((char)ele);
}
in.close();//关闭资源流
}
}
/*
output:
Hello World
*/
(2)Reader
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException {
String s1="C:\\User\\ASUS\\test.txt";
String s2="C:\\USer\\ASUS";
String s3="test.txt";
File f1=new File(s2,s3);
char[] store=new char[10];
Reader in=new FileReader(f1);//f1为获取输入的的目标文件
System.out.print((char)in.read());//读取一个字符(返回为int类型)并强制转化为char输出
in.read(store,0,2);//从store数组的0位置开始从目标文件中读取2个字符并存入store
for(char ele:store){
if(ele!=0)System.out.print(ele);
}
in.read(store);//从目标文件读取最多为store数组长度的内容
for(char ele:store){
if(ele!=0)System.out.print(ele);
}
in.close();//关闭资源流
}
}
/*
output:
你好,世界
*/