(1).使用File类进行文件操作。
(2).使用字节流读写文件。
(3).使用字符流读写文件。
使用File类操作目录:
File类主要常量及方法 :
方法或常量 | 类型 | 描述 |
String separator | 常量 | 文件路径分隔符 |
public File(String filename) | 构造方法 | 创建File类对象并传入完整路径 |
public boolean createNewFile() | 方法 | 创建新文件 |
public boolean delete() | 方法 | 删除文件 |
public boolean exists() | 方法 | 判断文件是否存在 |
public boolean isDirectory() | 方法 | 判断给定的路径是否为目录 |
public long length() | 方法 | 返回文件的大小 |
public String[] list() | 方法 | 列出指定目录的全部内容,只列出名称 |
public File[] listFiles() | 方法 | 列出指定目录的全部内容 |
public boolean mkdir() | 方法 | 创建目录 |
public boolean renameTo(File dest) | 方法 | 为已有的文件重命名 |
示例:
判断文件是否存在,不存在则创建,存在则删除
- package
com.soft.test; -
- import
java.io.File; - import
java.io.IOException; -
- public
class Test1 { - public
static void main(String[] args) { -
File f=new File("c:/1.txt"); -
if(f.exists()){ -
f.delete(); -
}else{ -
try { -
f.createNewFile(); -
} catch (IOException e) { -
// TODO Auto-generated catch block -
e.printStackTrace(); -
} -
} -
System.out.println("文件的名称"+f.getName()); -
System.out.println("文件的路径"+f.getPath()); -
System.out.println(f.canWrite()?"文件可写":"文件不可写"); -
System.out.println(f.isDirectory()?"文件是目录":"文件不是目录"); -
System.out.println("文件的长度:"+f.length()); - }
- }
列出指定目录下的文件:
- package
com.soft.test; -
- import
java.io.File; -
-
- public
class Test3 { - public
static void main(String[] args) { -
File f=new File("d:"); -
String[] str=f.list(); -
for(int i=0;i<str.length;i++){ -
System.out.println(str[i]); -
} - }
- }
RandomAccessFile类读写文件
方法 | 类型 | 描述 |
public RandomAccessFile(File f,String mode) | 构造方法 | 接收File类,并设置r为只读、w为只写、rw为读写模式 |
public RandomAccessFile(String name,String mode) | 构造方法 | 输入固定的文件路径并设置模式 |
public int read(byte[] b) | 方法 | 将内容读取到byte数组中 |
public final byte readByte() | 方法 | 读取一个字节 |
public final int readInt() | 方法 | 从文件中读取整型数据 |
public void seek(long pos) | 方法 | 设置读指针的位置 |
public final void writeBytes(String s) | 方法 | 将一个字符串写入文件中 |
public final void writeInt(int v) | 方法 | 将一个整型数据写入文件 |
public int skipBytes(int n) | 方法 | 指针跳过多少个字节 |
例:
- package
com.soft.test; -
- import
java.io.File; - import
java.io.FileNotFoundException; - import
java.io.IOException; - import
java.io.RandomAccessFile; -
-
- public
class Test4 { - public
static void main(String[] args) { -
File f=new File("c:"+File.separator+"demo.txt"); -
try { -
RandomAccessFile rdf=new RandomAccessFile(f,"rw"); -
String name=null; -
int age=0; -
name="tome"; -
age=18;//整数在内存中占四个字节大小 -
try { -
rdf.writeBytes(name); -
rdf.writeInt(age); -
name="mike"; -
age=90; -
rdf.writeBytes(name); -
rdf.writeInt(age); -
rdf.close(); -
} catch (IOException e) { -
// TODO Auto-generated catch block -
e.printStackTrace(); -
} -
-
} catch (FileNotFoundException e) { -
// TODO Auto-generated catch block -
e.printStackTrace(); -
} - }
- }
字节流:InputPutStream和OutputStream
方法 | 描述 |
public void close() | 关闭输入流 |
public abstract int read() | 以数字的方式读取内容 |
public int read(byte[] b) | 将内容读到byte数组中,同时返回读入的个数 |
方法 | 描述 |
public void close() | 关闭输出流 |
public abstract void write(int b) | 在数据流中写入一个字节 |
public void write(byte[] b,int off,int len) | 在数据流中写入一个指定范围的byte数组 |
public void write(byte[] b) | 在数据流中写入一个byte数组 |
public void flush() | 刷新缓冲区 |
- package
com.soft.test; -
- import
java.io.File; - import
java.io.FileInputStream; - import
java.io.FileNotFoundException; - import
java.io.FileOutputStream; - import
java.io.InputStream; - import
java.io.OutputStream; -
- public
class Test6 { - public
static void main(String[] args) throws Exception { -
File f=new File("c:/demo.txt");//打开文件 -
OutputStream os=new FileOutputStream(f); -
String str="hello word!"; -
os.write(str.getBytes()); -
-
InputStream is=new FileInputStream(f); -
byte[] b=new byte[1024]; -
int len=is.read(b); -
System.out.println(new String(b,0,len)); - }
- }
BufferedInputStream(InputStream in)
BufferedOutputStream(OutputStream in)
BufferedOutputStream(OutputStream in,int size)
- package
com.soft.test; -
- import
java.io.BufferedInputStream; - import
java.io.BufferedOutputStream; - import
java.io.FileInputStream; - import
java.io.FileNotFoundException; - import
java.io.FileOutputStream; - import
java.io.IOException; - import
java.io.InputStream; - import
java.io.OutputStream; -
-
- public
class Test7 { - public
static void main(String[] args) throws IOException { -
byte[] b=new byte[1]; -
InputStream is=new FileInputStream("c:/demo.txt"); -
OutputStream os=new FileOutputStream("c:/demo1.txt"); -
BufferedInputStream bui=new BufferedInputStream(is); -
BufferedOutputStream buo=new BufferedOutputStream(os); -
while(bui.read(b)!=-1){ -
buo.write(b); -
} -
buo.flush();//强制输出缓冲区的数据 -
bui.close(); -
buo.close(); - }
- }
字符流
方法 | 描述 |
public abstract void close() | 关闭输入流 |
public int read() | 读取单个字符 |
public int read(char[] c) | 将内容读取到字符数组中,并返回读取的长度 |
方法 | 描述 |
public abstract void close() | 关闭输出流 |
public void write(String str) | 输出字符串 |
public void write(char[] c) | 输出字符数组 |
public abstract void flush() | 强制清空缓存 |
- File
f = new File("d:/demo.doc"); - Writer
out = new FileWriter(f); -
- out.write("hello
world"); - out.close();
- Reader
reader = new FileReader(f); - char
c[] = new char[1024]; - int
len = reader.read(c);//将内容读取到字符数组中 - System.out.println(new
String(c,0,len)); - out.close();
- reader.close();
- File
f = new File("d:/demo.txt"); - OutputStreamWriter
os = new OutputStreamWriter(new FileOutputStream(f)); - os.write("hello
world"); - os.close();
File f = new File("d:/demo.txt");
//字节流变为字符流
- InputStreamReader
reader= new InputStreamReader(new FileInputStream(f)); -
- char[]
c = new char[1024]; -
- int
len = reader.read(c); -
- System.out.println(new
String(c,0,len)); -
- reader.close();
方法 | 类型 | 描述 |
public BufferedReader(Reader in) | 构造方法 | 接收Reader类实例 |
public String readLine() | 方法 | 从缓冲区中读取一行文本 |
public int read() | 方法 | 读取单个字符 |
public int read(char[] c,int off,int len) | 方法 | 读取字符数组的一部分 |
方法 | 类型 | 描述 |
public BufferedWriter(Writer out) | 构造方法 | 接收Writer类实例 |
public void newLine() | 方法 | 写入一个行分隔符 |
public void write(int c) | 方法 | 写入单个字符 |
public void write(char[] c,int off,int len) | 方法 | 写入字符数组的一部分 |
public void write(String s,int off,int len) | 方法 | 写入字符串的一部分 |
-
File f = new File("d:/demo.txt"); - FileWriter
writer = new FileWriter(f); - BufferedWriter
bufWriter = new BufferedWriter(writer); - bufWriter.write("hello
world"); -
-
bufWriter.close(); -
writer.close(); -
-
FileReader reader = new FileReader(f); -
BufferedReader bufReader = new BufferedReader(reader); -
-
System.out.println(bufReader.readLine());
- PrintWriter
pw = new PrintWriter("d:/test.txt"); - pw.println("hello
world"); - pw.write("java");
- pw.flush();
-
- pw.close();
字节流 | 字符流 |
以字节为单位输入输出数据 | 以字符为单位输入输出数据 |
操作时不会用到缓冲区(内存) | 操作时使用了缓冲区(内存) |
字节流按照8位传输 | 字符流按照16位传输 |