File 类
创建File对象的构造方法有以下3个:
File(String filename);
File(String directoryPath,String filename);
File(File f,String filename);
文件的属性
public String getName(); 获取文件的名字
public boolean canRead(); 判断文件是否是可读的
public boolean canWrite(); 判断文件是否可以被写入
public boolean exists(); 判断文件是否存在
public long length(); 获取文件的长度
public String getAbsolutePath(); 获取文件的绝对路径
public String getParent(); 获取文件的父目录
public boolean isFile(); 判断文件是否是一个普通文件,而不是目录
public boolean isDirectory(); 判断文件是否是一个目录
public boolean idHidden(); 判断文件是否是隐藏文件
public long lastModified(); 获取文件最后的修改时间(毫秒数)
例:
package com.File_1;
import java.io.*;
public class Lianxi {
public static void main(String[] args) {
// TODO Auto-generated method stub
File file = new File("e:\\heool.txt");
System.out.println("文件的绝对路径:"+file.getAbsolutePath());
System.out.println("文件的名字:"+file.getName());
System.out.println("文件的大小:"+file.length());
System.out.println("文件的路径"+file.getPath());
File f = new File("e:\\nihao\\nana.txt");
File fi = new File("e:\\nihao"); //
if(!fi.isDirectory()){
fi.mkdir(); //创建文件夹
}
else{
System.out.println("已经存在!");
}
if(!f.exists()){
try {
f.createNewFile(); //创建文件
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else{
System.out.println("不需要创建!");
}
//File fi = new File("f:\\你好");
//if(!fi.exists()){
//fi.mkdir();
//}
//else{
//System.out.println("已经存在!");
//}
}
}
答案:
文件的绝对路径:e:\heool.txt
文件的名字:heool.txt
文件的大小:0
文件的路径e:\heool.txt
已经存在!
不需要创建!
目录
File对象调用方法pulic boolean mkdir()创建一个目录,如果创建成功,返回true,否则返回false(如果该目录存在将返回false).
如果File对象是一个目录,那么该对象可以调用下述方法列出该目录下的文件和子目录。
public String[] list(); 用字符串的形式返回目录下的所有文件
public File[] listFiles(); 用File对象形式返回目录下的所有文件
有时需要列出目录下指定类型的文件,可以调用File类的下列方法
public String[] list(FilenameFilter obj); 用字符串的形式返回目录下指定烈性的所有文件。
public File[] listFiles(); 用File对象形式返回目录下指定类型的所有文件
上述两个方法的参数FilenameFilter是一个接口,该接口有一个方法:
public boolean accept(File dir,String name);
例:
/**
*找出当前文件夹下的".txt"文件,并将他们打印出来
*/
package com.File_1;
import java.io.*;
public class nihao {
public static void main(String []args){
File file = new File("e:\\迅雷下载");
if(file.isDirectory()){
Filefilr fil = new Filefilr();
String fileName[] = file.list(fil);
for(String s:fileName){
System.out.println(s);
}
}
}
}
class Filefilr implements FilenameFilter{
public boolean accept(File dir,String name){ //方法重写
return name.endsWith(".txt"); //与name字符串后几位是".txt"的返回true
}
}
答案:
heool.txt
nana.txt
文件的创建和删除
public boolean createNewFile(); 创建一个新的文件
public boolean delete(); 删除当前文件
运行可执行程序
当执行本地机上的可执行文件是,可以使用java.lang包中的Runtime类。首先使用Runtime类声明一个对象。例如:
Runtime ec;
然后使用该类的getRuntime()静态方法创建这个对象:
Runtime ec = Runtime.getRuntime();
ec可以调用exec(String command)方法打开本地机上的可执行文件或执行一个操作。
例:
/**
* 练习Runtime,打开一个可执行文件
*/
package com.File_1;
import java.io.*;
public class Openexe {
public static void main(String[] args) {
// TODO Auto-generated method stub
try{
Runtime ce = Runtime.getRuntime();
ce.exec("f:\\安装包\\QQ8.1_v8.1.17202.0.exe");
}
catch(Exception e){
System.out.println(e);
}
//**********************************************************************
//或者以下方法也可以=_=
//**********************************************************************
//try{
//Runtime ce = Runtime.getRuntime();
//File file = new File("f:\\安装包\\QQ8.1_v8.1.17202.0.exe");
//ce.exec(file.getAbsolutePath());
//}
//catch(Exception e){
//System.out.println(e);
//}
}
}
文件字节流(必须做异常处理)
如果程序对文件的操作比较简单,那么可以使用FileInputStream和FileOutputStream类创建的流对文件进行读/写操作
文件字节输入流
FileInputStream 类创建对象的构造方法:
FileInputStream(String name);
FileInputStream(File file);
通过调用read()方法读出程序中的数据;
文件字节输入流调用read()方法顺序的读取源中的单个字节数据,该方法返回字节值(0~255的一个整数),如果读到文件的末尾,该方法返回-1.
int read(byte b[]);
int read(byte b[],int off,int len);
读取len个字节,并从字节数组b[]的第off个位置开始存放。
例:
/**
* 将文件中的内容显示在屏幕上
*/
package com.File_1;
import java.io.*;
public class wenjianzifchuruliu {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
File file = new File("d:\\rrr.txt");
FileInputStream fis = new FileInputStream(file);
byte b[] = new byte[1024];
int n = 0;
while((n=fis.read(b))!=-1){
String s = new String(b,0,n);
System.out.println(s);
}
fis.close();
}
}
答案:
nihao
dajiahao
jaj
hiuhf
oiuljl
ljhkfs
字节输出流
FileOutputStream 类创建的对象称为文件字节输出流,文件字节输出流提供了基本的文件写入能力。
FileOutputStream(String name);
FileOutputStream(File file);
write(byte b[]); 以字节为单位向文件顺序写入数据
FileOutputStream流的目的地是文件,所以文件输出流调用write(byte b[])方法把字节写到文件中。
public void write(byte b[]);
public void write(byte b[],int off,int len);
如果FileOutputStream流要写的文件不存在,该流就会先创建文件,然后在向文件写如内容。
例:
/**
* 向"d:\\xunleixiazai.txt"中写入内容,熟悉FileOutputStream类的用法
*/
package com.File_1;
import java.io.*;
import com.Stringbuffer.buffer;
public class Fileoutputstream {
public static void main(String[] args) {
// TODO Auto-generated method stub
File file = new File("d:\\xunleixiazai.txt");
byte b[] = "你好,近来忙吗?".getBytes();
try {
FileOutputStream fos = new FileOutputStream(file);
fos.write(b);
System.out.println(new String(b));
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
文件字符流
字符输入流FileReader的构造方法是:
FileReader(String filename);
FileReader(File filename);
int read(); 字符输入流调用该方法从源中读取一个字符,该方法返回一个整数(0~65535的一个整数),如果未读出字符返回-1.
int read(char b[]);
int read(char b[],int off,int len);
字符输入流和字符输出流的read和write方法使用字符数组读/写数据,即以字符为基本单位处理数据。
字符输出流FileWriter的构造方法分别是:
FileWriter(String filename);
FileWriter(File filename);
void write(int n); 字符输出流调用该方法向文件写入一个字符。
void write(char b[]);
void write(char b[],int off,int len);
例:
/**
* 将一句话写入文件,然后读出,熟悉FileReader类和FileWriter类的用法
*/
package com.File_1;
import java.io.*;
public class wenjainzifuliu {
public static void main(String[] args) {
// TODO Auto-generated method stub
File file = new File("e:\\hello.txt");
char s[] = "我是个中国人,a good boy!".toCharArray();
try {
FileWriter fw = new FileWriter(file);
fw.write(s);
fw.close();
FileReader fr = new FileReader(file);
int n = 0;
char a[] = new char[1024];
while((n=fr.read(a))!=-1){
String str = new String(a);
System.out.println(str);
}
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
答案:
我是个中国人,a good boy!