Java IO(一)

一、操作文件的类——File
File类的字段摘要:
public static final String pathSeparator //与系统有关的路径分隔符,Windows中表示“;”


public static final String sepatator //标识路径分隔符,Windows中标识“\”


public static final char pathSeparatorChar //与系统有关的路径分隔符。此字符用于分隔以路径列表
//形式给定的文件序列中的文件名。在 UNIX 系统上,
//此字段为 ':';在 Microsoft Windows 系统上,它为 ';'。 


public static final char separatorChar //与系统有关的默认名称分隔符。在 UNIX 系统上,
//此字段的值为 '/';在 Microsoft Windows 系统上,它为 '\\'。





File类的构造方法:
public File(String pathName) //创建File类的对象,传入完整的路径




File类的方法:
public boolean creatNewFile() throws IOException //创建新文件


public boolean delete() //删除文件


public boolean exists() //判断文件是否存在


public boolean isDirectory() //判断给定的文件是否是目录


public long length() //返回文件的大小


public String[] list() //列出指定目录的内容,只列出名称


public File[] listFile() //列出指定目录的全部内容,可以列出路径


public boolean mkdir() //创建目录


public boolean renameTo(File dest) //为已有的文件重命名




范例一:
创建一个文件
package com.zgy.javaio;


import java.io.File;
import java.io.IOException;


public class FileTest01 
{


public static void main(String[] args) 
{
File f = new File("d:"+File.separator+"test.txt"); //指定完整路径
        try //异常捕获
        {
        f.createNewFile();
        }
        catch(IOException e)
        {
        e.printStackTrace();
        }
}


}
在操作文件是一定要使用File.separator表示分隔符。因为不同的操作系统,对字符的结束不同,如果使用符号,则可能会出现各种问题




范例二:
删除一个文件
package com.zgy.javaio;


import java.io.File;




public class FileTest02 
{


public static void main(String[] args) 
{
File f = new File("d:"+File.separator+"test.txt");
if(f.exists())
{
f.delete();
}
}


}
如果存在则将该文件删除。如果不进行判断,直接f.delete()也不会报错!!




范例三:
删除给定路径下的文件,如果此文件存在则直接删除。如果此文件不存在,则创建该文件。
package com.zgy.javaio;


import java.io.File;
import java.io.IOException;


public class FileTest03 
{


public static void main(String[] args) 
{
File f = new File("d:"+File.separator+"test.txt"); //文件路径
        if(f.exists()) //如果文件存在
        {
        f.delete();
        }
        else
        {
        try 
{
f.createNewFile(); //文件不存在则创建文件

catch (IOException e) 
        {

e.printStackTrace();
}
        }
}


}






范例四:
创建目录:
package com.zgy.javaio;


import java.io.File;


public class FileTest04 
{


public static void main(String[] args) 
{
File f = new File("D:"+File.separator+"zgy"); //给出路径
f.mkdir();
}


}








范例五:
列出目录中的所有文件
package com.zgy.javaio;


import java.io.File;


public class FileTest05 
{


public static void main(String[] args) 
{
File f = new File("D:"+File.separator+"Program Files"); //给出完整的路径
String[] file = f.list(); //列出路径下的文件
for(String str : file) //foreach输出
{
System.out.println(str);
}
}


}






范例六:
带路径列出目录下所有的文件
package com.zgy.javaio;


import java.io.File;


public class FileTest06 
{


public static void main(String[] args) 
{
File f = new File("D:"+File.separator+"Program Files"); //给出完整的路径
File[] file = f.listFiles(); //列出路径下的文件
for(File str : file) //foreach输出
{
System.out.println(str);
}
}


}






范例七:
判断给定的路径是不是目录
package com.zgy.javaio;


import java.io.File;


public class FileTest07
{


public static void main(String[] args) 
{
File f = new File("D:"+File.separator+"Program Files"); //给出完整的路径
if(f.isDirectory())
{
System.out.println("是目录");
}
}


}






范例八:
列出一个给定目录下的所有内容,如果含有子文件夹,则将子文件夹中的文件列出
package com.zgy.javaio;


import java.io.File;


public class FileTest08 
{


public static void main(String[] args) 
{
File f = new File("D:"+File.separator); //给出完整路径名称
        list(f);    
}
public static void list(File file)
{
if(file != null)
{
if(file.isDirectory())
{
File[] f = file.listFiles();
if(f != null)
{
for(int i = 0 ; i < f.length ; i++)
{  
    list(f[i]);
 
}
}
}
else
{
System.out.println(file);
}
}
}
}










二、RandomAccessFile类
File类只是对文件本身进行操作,如果想要对文件内容进行操作,可以使用RandomAccessFile类。此类为随机读取类,可随机读取文件中指定位置的数据


RandomAccessFile类的构造方法:
public RandomAccessFile(File file,String mode) throws FileNotFoundException //接受File对象,指定操作路径。设置模式:r只读,w只写,rw读写


public RandomAccessFile(String name,String mode) throws FileNotFoundException //不使用File对象,而是输入固定的文件路径


RandomAccessFile类的方法:
public void close() throws IOException //关闭操作


public int read(byte[] b) throws IOException //将内容读取到一个byte数组中


public final byte readByte() throws IOException //读取一个字节


public final int readInt() throws IOException //从文件中读取整型数据、


public void seek(long pos) throws IOException //设置读指针的位置


public final void writeBytes(String s) throws IOException //将字符串写入文件中,按照自己方式处理


public final void writeInt(int v) throws IOException //将一个整型数据写入文件,长度为4位


public int skipBytes(int n) throws IOException //指针跳过多少字节






范例一:
使用RandomAccesFile类写入数据
package com.zgy.randomaccessfile;


import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;


public class RandomAccessFileTest 
{


public static void main(String[] args) 
{
File f = new File("d:"+File.separator+"test.txt");
try 
{
RandomAccessFile raf = new RandomAccessFile(f,"rw");
String name = null;
int age = 0;
name = "zhangsan";
age = 20;
raf.writeBytes(name);
raf.writeInt(age);
name = "lisi    ";
age = 21;
raf.writeBytes(name);
raf.writeInt(age);
name = "wangwu  ";
age = 22;
raf.writeBytes(name);
raf.writeInt(age);
raf.close();

catch (FileNotFoundException e) 
{
e.printStackTrace();

catch (IOException e)
{
e.printStackTrace();
}

}


}






范例二:
使用RandomAccesFile类读取数据
package com.zgy.randomaccessfile;


import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;


public class RandomAccessFileTest2 
{


public static void main(String[] args) 
{
File f = new File("D:"+File.separator+"test.txt");
RandomAccessFile raf;
try {
raf = new RandomAccessFile(f,"r");
byte[] b= new byte[8];
for(int i = 0 ; i < 8 ; i++)
{
b[i] = raf.readByte(); //循环读取前8个内容
}
System.out.println(new String(b));
System.out.println(raf.readInt());

catch (FileNotFoundException e1) 
{
e1.printStackTrace();

catch (IOException e) 
{
e.printStackTrace();
}
}


}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值