文件的创建与删除:
import java.io.File;
import java.io.IOException;
public class FileTest {
public static void main(String[] args)
{
//创建方法1
//File file=new File("/Users/yuwenqing/Desktop","hello.txt");
//创建方法2
//File file=new File("/Users/yuwenqing/Desktop/hello.txt");
//创建方法3
File parentfile=new File("/Users/yuwenqing/Desktop");
File file=new File(parentfile,"hello.txt");
if(!file.exists())
{
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("文件创建成功");
}
else
{
file.delete();
System.out.println("文件已删除");
}
}
}
运行结果
获取文件信息
常用函数如下:
案例:
import java.io.File;
import java.io.IOException;
public class FileTest {
public static void main(String[] args)
{
//创建方法1
//File file=new File("/Users/yuwenqing/Desktop","hello.txt");
//创建方法2
//File file=new File("/Users/yuwenqing/Desktop/hello.txt");
//创建方法3
File parentfile=new File("/Users/yuwenqing/Desktop");
File file=new File(parentfile,"hello.txt");
if(file.exists())
{
System.out.println("文件名:"+file.getName());
System.out.println("是否可读:"+file.canRead());
System.out.println("是否可写:"+file.canWrite());
System.out.println("是否存在:"+file.exists());
System.out.println("文件长度:"+file.length());
System.out.println("文件绝对路径:"+file.getAbsolutePath());
System.out.println("父路径:"+file.getParent());
System.out.println("是否目录:"+file.isDirectory());
System.out.println("是否隐藏文件:"+file.isHidden());
System.out.println("最后修改时间:"+file.lastModified());
}
else
{
System.out.println("文件不存在");
}
}
}
运行结果:
FileOutputStream和FileInputStream 基于字节流
案例:
import java.io.*;
public class FileTest {
public static void main(String[] args)
{
File parentfile=new File("/Users/yuwenqing/Desktop");
File file=new File(parentfile,"hello.txt");
try {
FileOutputStream fileOutputStream=new FileOutputStream(file);
byte[] bytes="我有一只小毛驴,我从来也不骑".getBytes();
fileOutputStream.write(bytes);
fileOutputStream.flush();
fileOutputStream.close();
FileInputStream fileInputStream=new FileInputStream(file);
byte[] newbytes=new byte[1024];
int len=fileInputStream.read(newbytes);
System.out.println("输出的信息是:"+new String(newbytes,0,len));
fileInputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:
上面是基于字节流的文件读写,但是读取汉字的时候可能会出现乱码的情况,而接下来要讲的FileReader和FileWriter是基于字符流的,可以避免上述问题
案例:
import java.io.*;
public class FileTest {
public static void main(String[] args)
{
File parentfile=new File("/Users/yuwenqing/Desktop");
File file=new File(parentfile,"hello.txt");
try {
FileWriter fileWriter=new FileWriter(file);
String s="我有一只小毛驴,从来也不骑";
fileWriter.write(s);
fileWriter.close();
FileReader fileReader=new FileReader(file);
char[] byt=new char[1024];
int len=fileReader.read(byt);
System.out.println("读取的内容是:"+new String(byt,0,len));
fileReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果:
BufferedReader和BufferedWriter 带有缓冲区的文件读写
案例
import java.io.*;
public class FileTest {
public static void main(String[] args)
{
File parentfile=new File("/Users/yuwenqing/Desktop");
File file=new File(parentfile,"hello.txt");
try {
FileWriter fileWriter=new FileWriter(file);
BufferedWriter bufferedWriter=new BufferedWriter(fileWriter);
String[] s={"apple","orange","watermelon","grape"};
for(int i=0;i<s.length;i++)
{
bufferedWriter.write(s[i]);
bufferedWriter.newLine();
}
bufferedWriter.flush();
bufferedWriter.close();
fileWriter.close();
FileReader fileReader=new FileReader(file);
BufferedReader bufferedReader=new BufferedReader(fileReader);
int i=1;
String s1=null;
while ((s1=bufferedReader.readLine())!=null)
{
System.out.printf("\n第%d行:"+s1,i);
i++;
}
fileReader.close();
bufferedReader.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果: