文章目录
文件
file类
首先导入 io.file包
import java.io.File
创建文件夹
boolean mkdir()
File f=new File("路径")
f.mkdir()//创建目录文件夹 会返回是否创建如果已经存在会返回false
只能创建已有路径的 如果父文件夹不存在 则返回flase
创建子文件
File f=new File("c:\\1\\2\\3")
f.mkdirs()//创建目录文件夹 会返回是否创建如果已经存在会返回false
//且父子目录一起创建 如果父不存在会创建父文件
查看文件夹是否存在
File f=new File("c:\\1\\2\\3")
Boolean z=f.exists();//如果存在返回true不存在返回flase
获取文件名
getAbsolutePath()
获取文件名 无论f是否存在
File f=new File("c:\\1\\2\\3")
Boolean z=f.getAbsolutePath();//"c:\\1\\2\\3"
getName()
返回文件名但是不返回路径
File f=new File("c:\\1\\2\\3")
Boolean z=f. getName();//"3"
判断file是否是文件夹
isDirectory
判断file是否是文件夹
File f=new File("c:\\1\\2\\3")
Boolean z=f.isDirectory();//ture
判断file是否是文件
isFile
判断file是否是文件
是返回ture
否则返回flase 不存在也返回flase
File f=new File("c:\\1\\2\\3")
Boolean z=f.isFile();//flase
文件或者文件夹大小
length
返回是b
结果除以1024是kb
File f=new File("c:\\1\\2\\3");
long z=f.length();
查看隐藏文件
isHidden
判断一个文件或许文件夹是否隐藏文件如果是返回ture
File f=new File("c:\\1\\2\\3");
long z=f.isHidden();
删除文件或文件夹
delete
删除文件或文件夹如果是文件夹则必须为空
删除成功返回ture
File f=new File("c:\\1\\2\\3");
long z=f.delete;
修改文件名
renameTO(新file)
如果成功返回ture
File f=new File("c:aaa");
File f1=new File("c:bbb");
boolean f.renameTo(f1)
文件夹列表
File[] listFiles()
File f=new File("C:\\")
File fs[]=f.listFiles();
for(File ff:fs){
system.out.ff.getAbsolutePath()
}
跨平台之\
File.separator
相当于分隔符\ 可以跨平台使用
IO流
定义
使用时候需要导入io
InputStream
输入字节流(byte 8位)以内存为中心
Reader
字符输入流(char 1位)
读取内容
OnputStream
输出字节流(byte 8位)以内存为中心
Writr
字符输出流(char 1位)
写入内容
注;字节流可以操作字节也可以操作字符及二进制
字符流只能操作字符不能操作二进制
FileReader
(文件字符输入流)
注:因为方法构造器会返回异常 所以必须抛出异常
读取单个字符
D:\ccc.txt中内容为
ABC
import java.io.FileReader;
import java.io.IOException;
public class file {
public static void main(String[] args) {
try {
FileReader f = new FileReader("D:\\ccc.txt");
char z= (char) f.read();
System.out.println(z);//A
char zz= (char) f.read();
System.out.println(zz);//B
zz= (char) f.read();
System.out.println(zz);//C
zz= (char) f.read();
System.out.println(zz);//-1
} catch (IOException e) {
e.printStackTrace();
}
}
}
注意 如果读取超过了文件长度 会返回-1
读取全部内容
利用read末尾返回值为-1去读取
import java.io.*;
public class file1 {
public static void main(String[] args) {
try {
FileReader f=new FileReader(new File("d:\\ccc.txt"));
int i;
while ((i= f.read())!=-1){
System.out.print((char)i);
}
f.close();//关闭f
} catch (IOException e) {
e.printStackTrace();
}
}
}
输出
ABC
读取一行
方法一
只需要在读取全部的时候加一个if判断即可
if((char)i=='\n') break;
import java.io.*;
public class file1 {
public static void main(String[] args) {
try {
FileReader f=new FileReader(new File("d:\\ccc.txt"));
int i;
while ((i= f.read())!=-1){
if((char)i=='\n') break;
System.out.print((char)i);
}
f.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
文件夹一行最多1026个字符其中最后一个为/n
方法二
用装饰流BufferedReader bin=new BufferedReader(f);
去把FileReader包起来去获取 一行 且时间会比原流快很多
import java.io.*;
public class file3 {
public static void main(String[] args) {
File F=new File("d:\\ccc.txt");
try {
FileReader f=new FileReader(F);
int i;
BufferedReader bin=new BufferedReader(f);
System.out.println(bin.readLine());
f.close();//关闭f
} catch (IOException e) {
e.printStackTrace();
}
}
}
读中文
BufferedReader r= new BufferedReader(new InputStreamReader(new FileInputStream(txt), "Utf-8"));
装饰流
BufferedReader —FileReader
BufferedWriter–FileWriter
BufferedInputStream—FileInputStream
BufferedOuputStream—FileOuputStream
包起来去获取 时间会比原流快很多
System
System.out 字节输出流
System.in 字节输入流
获取输入的一个
import java.io.*;
public class file4 {
public static void main(String[] args) throws IOException {
InputStream n= System.in;
int Z=n.read();//每次只能读一个
System.out.println(Z);
Z=n.read();//所以多次读取
System.out.println(Z);
}
}
获取输入的全部
先用InputStreamReader包装
后用BufferedReader包
import java.io.*;
public class file4 {
public static void main(String[] args) throws IOException {
InputStreamReader N=new InputStreamReader (System.in);
BufferedReader r=new BufferedReader(N);
String l=r.readLine();
System.out.println(l);
}
}