Java IO 文件操作完整版实例与说明

一个接口或抽象类的行为由其子类决定;子类的实现方式不同,表现的功能也不同;
涉及类或接口:File,InputStream,OutputStream,Reader,Writer,Serialzable接口;

1.File类:.io.File;
完成与平台无关的操作,创建、删除一个文件;
public File(String pathName);        // 指定路径名的实例化对象;
public boolean createNewFile();        // 创建新文件;
public boolean delete();        // 删除文件
夸平台全局常量:
public static final String pathSeparator;        // “;”,”:”表示路径分隔符
public static final String separator;        // 表示”\”,”/”, 分别对应
———–在磁盘上创建文件、删除文件:

package com.mldn;

 

import .io.File;

import .io.IOException;

 

public class FileDemo

{

public static String create(File file)

{

if (file.exists())

{

return “文件已存在!”;

}

 

try

{

if (file.createNewFile()) return “创建文件成功!”; // 创建新文件

}

catch (IOException e)

{

e.printStackTrace();

}

 

return “创建文件失败!”;

}

 

public static String delete(File file)

{

if (!file.exists())

{

return “文件不存在!”;

 

}

 

if (file.delete())

{

return “文件删除成功!”;

}

 

return “删除失败!”;

}

 

public static void main(String[] args)

{

String pathName = File.separator + “home” + File.separator + “administrator” + File.separator + “myfile.txt”; // 夸平台路径名

 

File file = new File(pathName);

 

System.out.println(create(file) + pathName);

 

try

{

System.out.println(“暂停5秒!”);

Thread.sleep(5000); // 停止10秒

}

catch (InterruptedException e)

{

e.printStackTrace();

}

 

System.out.println(delete(file));

}

}

/*

administrator@xu-desktop:~$ javac -d . work/FileDemo.

administrator@xu-desktop:~$ com.mldn.FileDemo

创建文件成功!/home/administrator/myfile.txt

暂停5秒!

文件删除成功!

 

*/

———–判断是否文件还是目录:
1.public boolean isFile();
2.public boolean isDirectory();

package com.mldn;

 

import java.io.File;

 

public class IsTest

{

public static void main(String[] args)

{ // 用完整的路径名实例化文件

File file1 = new File(File.separator + “home” + File.separator + “administrator” + File.separator + “myFile.txt”);

File file2 = new File(File.separator + “home” + File.separator + “administrator”);

 

if (!file1.exists())

System.out.println(“文件不存在!”);

System.out.println(file1.isFile()); // 判断是否文件

System.out.println(file2.isDirectory()); // 判断是否目录

}

}

/*

administrator@xu-desktop:~$ java com.mldn.IsTest

文件不存在!

false // 不是文件,不存在当然不算!

true // 是目录

 

*/

———–列出特定目录下的内容:
1.public String[] list();        // 返回所有当前目录下的文件以及目录的名称;
2.public File[] listFiles();        // 返回当前目录下的所有文件以及目录的完整文件名:全部是File对象;

package com.mldn;

 

import java.io.File;

 

public class ListFile

{

public static void main(String[] args)

{

File file = new File(File.separator + “home” + File.separator + “administrator”); // 目录对象

 

if (file.isDirectory() || file.exists()) // 使用文件对象,要判断是否为空

{

String[] list = file.list(); // 返回该文件目录下所有的名称;

 

File[] files = file.listFiles(); // 返回文件目录下所有文件

 

for (String l : list)

{

System.out.println(l); // 打印文件名

}

 

for (File f : files)

{

System.out.println(f.getParent() + “–>” + f); // 以文件对象打印文件

}

}

else

{

System.out.println(“不是目录或者文件不存在!”);

}

}

}

/*

administrator@xu-desktop:~$ java com.mldn.ListFile

.xsession-errors

图片

.stardict

.esd_auth

.macromedia

.ICEauthority

.gimp-2.6

~~~~list()列出的是当前目录下所有文件或子目录的名字;

 

/home/administrator–>/home/administrator/文档

/home/administrator–>/home/administrator/Naitional.java~

/home/administrator–>/home/administrator/.gnome2

/home/administrator–>/home/administrator/.wapi

/home/administrator–>/home/administrator/.local

/home/administrator–>/home/administrator/.pulse

/home/administrator–>/home/administrator/.gnupg

/home/administrator–>/home/administrator/Message_zh_CN.class

/home/administrator–>/home/administrator/Firefox_wallpaper.png

 

~~~~listFiles()列出的是当前目录下的所有文件对象;给出了完整路径名;

 

listFiles()更常用,便于对文件操作!

 

*/

———创建目录,并在目录下创建文件:

package com.mldn;

 

import java.io.File;

import java.io.IOException;

 

public class MkDir

{

public static void main(String[] args)

{

String path = File.separator + “myFile.txt”;

File file = new File(File.separator + “home” + File.separator + “administrator” + File.separator + “myDir” + path);

 

//file.mkdir(); // 创建目录, 创建的是当前文件的完整路径名所有的目录,把最后一个文件名也当成了目录创建

file.getParentFile().mkdir(); // 在当前文件名父目录下创建目录,不会包含最后一个文件名

 

System.out.println(“目录创建成功!”);

 

//if (!file.exists()) // 文件不存在才有必要

{

try

{

file.createNewFile(); // 创建文件

new File(“/home/administrator/www/myfile.xtx”).createNewFile();

System.out.println(“文件创建成功!”);

}

catch (IOException e)

{

e.printStackTrace();

}

}

//else

{

// System.out.println(“文件已存在!”);

}

}

}

/*

administrator@xu-desktop:~$ java com.mldn.MkDir

目录创建成功!

文件创建成功!

administrator@xu-desktop:~$ java com.mldn.MkDir

目录创建成功!

文件已存在!

~~~~~····目录创建和文件创建一样,当已存在时,不再覆盖,而是不执行创建操作!

!创建文件时,指定的路径必须是已经存在的!

java.io.IOException: No such file or directory

at java.io.UnixFileSystem.createFileExclusively(Native Method)

at java.io.File.createNewFile(File.java:883)

at com.mldn.MkDir.main(MkDir.java:23)

 

*/

————-列出当前目录以及子目录所有文件:

package com.mldn;

 

import java.io.File;

 

public class ListDirectory

{

public static void main(String[] args)

{

File file = new File(File.separator + “home” + File.separator + “administrator”); // 新建目录

 

list(file); // 列出子目录

}

 

public static void list(File file)

{

if (file.isDirectory())

{

File[] lists = file.listFiles(); // 列出所有当前目录的文件

 

if (lists != null) // 有的目录下可能为空

{

for (File f : lists)

{

list(f); // 列出内容

}

}

}

 

System.out.println(file);

}

}

/*

/home/administrator/.gnupg/secring.gpg

/home/administrator/.gnupg/gpg.conf

/home/administrator/.gnupg/trustdb.gpg

/home/administrator/.gnupg/pubring.gpg

/home/administrator/.gnupg

/home/administrator/Message_zh_CN.class

/home/administrator/Firefox_wallpaper.png

/home/administrator

~~~~~~~~~~~~““`列出当前目录所有文件以及子目录文件

*/

————RandomAccessFile类:
1.java.io.RandomAccessFile;实现对文件的随机读写操作;
2.可以在文件不存在是创建文件;需要写权限:
        1.只读:r;
        2.只写:w;
        3.读写:rw;
3.public RandomAccessFile(String name,
                        String mode)
                 throws FileNotFoundException;
4.RandomAccessFile

public RandomAccessFile(File file,
                        String mode)
                 throws FileNotFoundException;
                 
5.public int skipBytes(int n)
              throws IOException;// 从当前访问点跳过n个字节:8*nbit
6.public void seek(long pos)
          throws IOException;        // 设置访问点
7.public void close()
           throws IOException;        // 关闭文件读写
8.public final byte readByte()
                    throws IOException; // 读一个字节:8bit

 

package com.mldn;

 

import java.io.File;

import java.io.RandomAccessFile;

import java.io.IOException;

 

public class RandAccess

{

public static void main(String[] args) throws IOException

{

File file = new File(File.separator + “home” + File.separator + “administrator” + File.separator + “myFile.txt”);

 

RandomAccessFile raf = new RandomAccessFile(file, “rw”); // 以读写权限访问文件,确保文件不存在时可以创建

 

String name = “zhansan “;

int age = 20;

 

raf.writeBytes(name); // 以字节写入

raf.writeInt(age); // 写入整型

 

name = “wangwu “; // 8个字节

age = 25; // 4个字节

 

raf.writeBytes(name);

raf.writeInt(age);

 

byte[] bytes = new byte[8]; // 定义bytes为8×8位二进制

 

raf.seek(0); // 定位文件头

raf.skipBytes(12); // 跳过12个字节后定位

 

for (int x = 0; x

{

bytes[x] = raf.readByte(); // 按位读取

}

 

age = raf.readInt(); // 读取整型

 

System.out.println(“姓名:” + new String(bytes)); // 用字节初始化字符串

System.out.println(“年龄:” + age);

 

raf.seek(0); // 置位开始处:

 

for (int x = 0; x

{

bytes[x] = raf.readByte(); // 按位读取

}

 

age = raf.readInt(); // 读取整型

 

System.out.println(“姓名:” + new String(bytes)); // 用字节初始化字符串

System.out.println(“年龄:” + age);

 

raf.close(); // 关闭文件读写,释放资源

 

}

}

/*

administrator@xu-desktop:~$ java com.mldn.RandAccess

姓名:wangwu

年龄:25

姓名:zhansan

年龄:20

~~~~~~~~~~~“““`对于已经创建好并含有内容的文件,可以采用只读权限打开;

*/

 

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《Java IO 文件操作完整版实例与说明
本文地址:https://www.zhiletu.com/archives-80.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微