可以使用File类创建一个文件对象。File有以下三种构造方法(注意:其中所指的文件必须存在!如果不存在,File类对象可以通过调用createNewFile();方法创建该文件):
1、通过将给定路径名字字符串转换为抽象路径名来创建一个新File实例
new File(String pathname);
//其中pathname指路径名称(包含文件名)如("d:/word.txt");
2、根据定义的父路径和子路径字符串(包含文件名)创建一个新的File对象。
new File(String parent, String child);
//parent:父类路径字符串,如(D:/或D:/doc); child:子类路径,如(word.txt);
3、根据parent抽象路径名和child路径名字符串创建一个新File实例。
new File(File f, String child);
//f:父路径对象,如(D:/doc/); child:子路径字符串,如(word.txt);
文件的创建与删除 代码如下:
package hhh;
import java.io.File;
import java.io.IOException;
/**
* 文件的创建与删除
* 该代码可以反复执行(反复创建与删除)!
* @author hanjiangbo
*
*/
public class FileTest {
public static void main(String[] args) {
File file = new File("word.txt");
if(file.exists()) {
file.delete();
System.out.println("文件已删除!");
}
else {
try {
file.createNewFile();
System.out.println("文件已创建!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
文件的输入/输出流 :
FileOutputStream类和FileInputStream类都用来操纵磁盘文件。(存在不足,这两个类都只给出了对字节或字节数组的读取方法,而一个汉字占两个字节,所以一旦读取的字节不合适就有可能乱码,解决方法见后面的FileReader和FileWriter类)
FileOutputStream类和FileInputStream类对应,提供了基本文件写入能力。
FileInputStream(String name);
该方法使用给定的文件名name创建一个FileInputStream对象
FileInputStream(File file);
该方法使用File对象创建一个FileInputStream对象。允许把文件链接输入流之前对文件作进一步分析。
FileInputStream类与FileOutputStream类有相同的参数构造方法,创建一个FileOutputStream对象时,可以指定不存在的文件名,但此文件不能是一个已经被其他程序打开的文件。
代码如下:
package hhh;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class Test {
public static void main(String[] args) {
String s = "asdfasdf";
System.out.println(s.length());
File file = new File("word.txt");
try {
FileOutputStream out = new FileOutputStream(file);
byte buy[] = "asdfsadf".getBytes();
out.write(buy);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
try {
FileInputStream in = new FileInputStream(file);
byte byt[] = new byte[1024];
int len = in.read(byt);
System.out.println(len);
System.out.println(new String(byt,0,len));
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
FileReader和FileWriter类
FileReader和FileWriter字符流对应了FileInputStream和FileOutputStream类。
FileReader流顺序地读取文件,只要不关闭流,每次调用read();方法就顺序地读取源中的其余内容,一直到最后或者流被关闭。(代码与FileInputStream和FileOutputStream的相仿)
代码如下:
package hhh;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Scanner;
public class Student {
public static void main(String[] args) {
Scanner f=new Scanner(System.in);
int a=f.nextInt();
if(a == 1) {
actionPerFormed();
}
else {
actionPerFormed2();
}
}
private static void actionPerFormed() { //写入文件!!!!!!
File file = new File("word.txt");
try {
FileWriter out = new FileWriter(file);
out.write("asdfasdf");
out.close();
System.out.println("写入文件成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
private static void actionPerFormed2() { //读取文件!!!!!!
File file = new File("word.txt");
try {
FileReader in = new FileReader(file);
char byt[] = new char[1024];
int len = in.read(byt);
System.out.println("文件内容:" + new String(byt, 0, len));
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
未完待续。。。