File类
exists()判断是否存在文件目录
isFile()是否是文件
isDirectory()判断是否为目录
String getAbsolutePath( )返回绝对路径
String getPath( )返回相对路径
getName()f返回文件名
createNewFile()创建空文件
length()返回文件大小
以下代码演示:操作
public class MyFileTest {
public static void main(String[] args)throws Exception {
File file=new File("D:/helloo.txt");
if (file.exists()){
System.out.println("已存在");
}else {
file.createNewFile();
System.out.println("文件名称" + file.getName());
System.out.println("文件路径" + file.getAbsolutePath());
System.out.println("文件大小" + file.length());
System.out.println("是否是文件" + (file.isFile() ? "是" : "否"));
System.out.println("是否是目录" + (file.isDirectory() ? "是" : "否"));
}
}
}
流:
字符流
Writer输出流
write(String str)
write(String str,int off,int len)
void close()
void flush()
Reader输入流
int read( )
int read(byte[] c)
read(char[] c,int off,int len)
void close( )
字节流
OutputStream输出流
void write(int c)写入
void write(byte[] buf)
void write(byte[] b,int off,int len)
void close( )关闭
构造方法
FileOutputStream (File file)
FileOutputStream(String name)
FileOutputStream(String name,boolean append)写入内容师父会覆盖之前内容 boolean值
InputStream输入流
int read( )读取
int read(byte[] b)
int read(byte[] b,int off,int len)
void close( )关闭流
int available()返回长度
输入与输出
输出
import java.io.FileOutputStream;
import java.io.OutputStream;
public class OutputStreamTest {
public static void main(String[] args)throws Exception {
String str="大家好,我叫张三丰";
OutputStream os=new FileOutputStream("D:/name.txt");
byte[]bytes=str.getBytes();
os.write(bytes,0,bytes.length);
os.close();
}
}
操作时应该捕捉异常,这里作为练习声明了异常
把字符串放到数组里
然后循环写入
写入对象为数组,从0开始一直写到最大长度结束
关闭流
输入
public class InputStreamTest {
public static void main(String[] args)throws Exception {
File file=new File("D:rbw.txt");
if (file.exists()){
System.out.println("已存在");
}else {
file.createNewFile();
}
InputStream is=new FileInputStream(file);
int b=0;
System.out.println(is.available());//大小
while ((b=is.read())!=-1){
System.out.println((char)b);
}
is.close();
}
}
把这段字母读取到控制台中
用InputStream输入流
完成复制的操作:
public class CopeFile {
public static void main(String[] args) throws Exception {
InputStream is = new FileInputStream("d:/hello.txt");
OutputStream os = new FileOutputStream("c:/abc.txt");
int b = 0;
while ((b = is.read()) != -1) {
os.write(b);
}
os.close();
is.close();
}
}
声明两个流
输入流InputStream
输出流OutputStream
while循环读取后再循环写入
最后关闭两个流
处理流
就是使原本的流效率更高
public class TestBufferedStream {
public static void main(String[] args)throws Exception {
FileReader reader=new FileReader("e:/dog.txt");
BufferedReader br=new BufferedReader(reader);
String str=null;
int num=0;
while ((str=br.readLine())!=null){
System.out.println(str);
num++;
}
br.close();
reader.close();
System.out.println(num);
}
}
声明BufferedReader的时候把reader套进去
reader是按字符一个一个读的
而BufferedReader流的读取方法
是按行数读取的效率更高