1.文件的创建
public class FileCreat {
public static void main(String[] args) {
//File构造函数直接输入文件名,创建的是相对目录(也就是相对路径)下的文件,就是当
//前工作空间下
//如果想要创建上一级的文件夹的文件,则需要改为File("../hello.txt")
//上上一级的就为File("../../hello.txt")
File file = new File("hello.txt");
if(file.exists())
{
//用来判断file是否为文件
System.out.println(file.isFile());
//用来判断file是否为目录
System.out.println(file.isDirectory());
System.out.println("文件存在");
}
else {
System.out.println("文件不存在");
System.out.println("创建文件");
try {
//创建文件
file.createNewFile();
System.out.println("文件成功创建!");
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("文件创建失败!");
}
}
}
}
2.文件删除
//可以直接删除用名字初始化的文件
file.delete();//用来删除file文件的
3.文件重命名
File file = new File("hello.txt");
File newName = new File("newNameFile.txt");
if(file.exits())
{
System.out.println("文件存在");
file.renameTo(newName);//注意renameTo函数只接受File的对象,不接受“newNameFile.txt”
System.out.println("文件创建成功");
}
else
{
System.out.println("文件不存在,文件改名失败");
}
4.文件移动
//没想到这种重命名的可以移动文件
//不过需要注意的是,这种移动只能在同一分区下,如果是不同分区就不可以了
//MAC是同一分区的,windows下面的就不可以用这种方式进行不同分区移动
//windows系统下如果想要进行文件的移动需要进行拷贝删除,进而实现文件的移动
File file = new File("newName.txt");
File newName = new File("src/newName.txt");
if(file.exists())
{
System.out.println("文件存在");
file.renameTo(newName);
}
5.文件的读取
public static void main(String[] args)
{
File file = new File("src/readTest");
try
{
//读前操作,FileInputStream是文件字节输入流,一般情况下用文件字节输入流会更好一点
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
//开始读
String str;
while((str = br.readLine()) != null)
{
System.out.println(str);
}
//注意关闭的顺序是倒序的
br.close();
isr.close();
fis.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
6.创建文件夹、创建多层文件夹、文件夹的重命名、移动、删除
public class CreatFolder {
public static void main(String[] args) {
File folder = new File("newFolder");
//创建文件夹的时候,如果这个文件夹存在,mkdir方法会返回一个false,即创建不成功
//mkdir方法也不支持创建多层的文件夹,比如newFolder/a/b/c...类似这种的
//因为newFolder不存在,a,b,c文件夹都不存在无法创建
//但是可以使用mkdirs方法来创建多层文件夹
if(folder.mkdir())
{
System.out.println("创建成功");
}
else {
System.out.println("创建失败");
}
File multiLayer = new File("multiLayer/1/2/3");
if(multiLayer.mkdirs())
{
System.out.println("多层文件夹创建成功");
}
else {
System.out.println("多层文件夹创建失败");
}
//---------------文件夹的重命名----------------------
//文件夹的重命名,原先的文件夹的名字为multiLayer1/a/b/c,
//更改后的名字为multiLayer1/a/2222
//新名字后面不能再有路径了,
//比如multiLayer1/a/2222/c,新名字后面有路径c,这样会创建失败的
File ff = new File("multiLayer1/a/b");
File newName = new File("multiLayer1/a/2222");
if (ff.renameTo(newName)) {
System.out.println("multiLayer1/a/b/c重命名成功");
}
//--------------------------------------------------
//---------------文件夹的移动------------------------
//要注意必须是在同一分区,且文件夹存在,任何一个不成立都会失败
File f =new File("multiLayer1/a/b/c");
if (f.mkdirs()) {
System.out.println("multiLayer1/a/b/c.文件夹创建成功");
} else {
System.out.println("multiLayer1/a/b/c.创建失败");
}
File ff = new File("multiLayer1/a/c");
if (f.renameTo(ff)) {
System.out.println("已成功将c文件夹移入a文件夹里面");
}
//--------------------------------------------------
//-------------------文件夹的删除---------------------
//需要注意的是要删除的文件夹里面必须是没有内容的
//如果文件夹里面有内容会删除失败
File fFile = new File("multiLayer1/a/c");
if (fFile.delete()) {
System.out.println("c文件夹删除成功");
}
//---------------------------------------------------
}
}
7.文件的属性获取
public static void main(String[] args) {
File file = new File("FileProperty.txt");
//判断文件是否存在
System.out.println("文件是否存在:"+file.exists());
//读取文件的名称
System.out.println("文件的名称:"+file.getName());
//读取文件相对路径
System.out.println("获取文件的相对路径:"+file.getPath());
//读取文件绝对路径
System.out.println("获取文件的绝对路径:"+file.getAbsolutePath());
//获取当前文件的父路径,
//getParent()方法获取的是绝对路径的父路径
//因为绝对路径为FileProperty.txt,所以是没有父路径的
System.out.println("文件当前路径的父路径:"+file.getParent());
System.out.println("文件当前路径的父路径:"+new File(file.getAbsolutePath()).getParent());
//读取文件大小
System.out.println("获取文件的大小:"+file.length()+"byte");
//判断文件是否被隐藏
System.out.println("文件是否被隐藏:"+file.isHidden());
//判断文件是否可写
System.out.println("文件是否可写:"+file.canWrite());
//判断文件是否可读
System.out.println("文件是否可读:"+file.canRead());
//判断文件是否为文件夹
System.out.println("文件是否为文件夹:"+file.isDirectory());
if(file.exists())
{
//设置文件属性为可写
file.setWritable(true);
//设置文件属性为只读
file.setReadOnly();
//设置文件属性为可读
file.setReadable(true);
}
}
8.遍历文件夹
public class FolderScaner {
public static void main(String[] args) {
printFilesDirection(new File("D:/eclipse/workplace/FileDemo"), 1);
}
public static void printFilesDirection(File dir,int tab)
{
if(dir.isDirectory()) {
File listDir[] = dir.listFiles();
for (int i = 0; i < listDir.length; i++) {
for (int j = 0; j < tab; j++) {
System.out.print("|--");
}
System.out.println(listDir[i].getName());
if (listDir[i].isDirectory()) {
printFilesDirection(listDir[i], tab + 1);
}
}
}
}
}
9.将数据写入新文件(复制)
//此代码的写入是具有覆盖性的,如果直接在末尾追加,则之前写入的数据是会全部丢失的
//注意使用缓冲进行输出的时候,如果最后一次缓冲区内的数据没填充满,那么这部分数据可能无法打印出来
//所以需要在结束之前调用flush方法,将最后一次的缓冲区内的数据一次性输出
public static void main(String[] args) {
File file = new File("src/readTest");
//将数据写入文件
try {
FileInputStream fis = new FileInputStream(file);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
//这里不用创建新文件,如果在下面的流中发现没有该文件
//那么系统会自动的生成该文件,然后继续执行
File newFile = new File("copyReadTest.txt");
FileOutputStream fos = new FileOutputStream(newFile);
//最好使用带编码的构造函数,避免写出来的文件是乱码的
OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
//用BufferedWriter的话,在打印输出的时候需要自己加上换行符,不然的话出来的结果是一整行
BufferedWriter bos = new BufferedWriter(osw);
//如果不想添加换行的话,可以使用PrintWriter,该构造函数里有flush,只需将其设为true即可
//PrintWriter pw = new PrintWriter(osw,true);
String str;
while((str = br.readLine()) != null)
{
bos.write(str);
bos.write("\n");
//pw.println(str);//只需一行
}
bos.flush();//强制输出缓冲区的内容
br.close();
isr.close();
fis.close();
//pw.close();//使用PrintWriter才加
bos.close();//使用PrintWriter,这个就要删
osw.close();
fos.close();
System.out.println("写入完成");
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}

被折叠的 条评论
为什么被折叠?



