Java IO 文件操作完整版实例与说明
一个接口或抽象类的行为由其子类决定;子类的实现方式不同,表现的功能也不同;
涉及类或接口:File,InputStream,OutputStream,Reader,Writer,Serialzable接口;
1.File类:java.io.File;
完成与平台无关的操作,创建、删除一个文件;
public File(String pathName); // 指定路径名的实例化对象;
public boolean createNewFile(); // 创建新文件;
public boolean delete(); // 删除文件
夸平台全局常量:
public static final String pathSeparator; // “;”,”:”表示路径分隔符
public static final String separator; // 表示”\”,”/”, 分别对应windows,linux
———–在磁盘上创建文件、删除文件:
package com.mldn;
import java.io.File;
import java.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.java
administrator@xu-desktop:~$ java 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
关注公众号:
微信赞赏支付宝赞赏