黑马程序员 io流学习

Java培训、Android培训、iOS培训、.Net培训、期待与您交流!

网上摘抄的
File对象创建
方式一:
File f =new File(“a.txt”);
将a.txt封装成File对象。可以将已有的和未出现的文件或者文件夹封装成对象。
方式二:
File f2=newFile(“c:\abc”,”b.txt”);
将文件所在目录路径和文件一起传入,指定文件路径。
方式三:
File d=new File(“c:\abc”);
File f3=new File(d,”c.txt”);
File.separator表示目录分隔符,可以跨平台使用。相当于路径中的“\”(双斜杠\在windows中表示表示转义后的分隔符,但是在linux系统中就不是)。
File类的常见方法
1、创建
booleancreateNewFile();
//在指定位置创建文件,如果该文件已经存在,则不创建,返回false。和输出流不一样,输出流对象一建立就创建文件。而且文件已经存在,会覆盖。
boolean mkdir();//创建文件夹,只能创建一级文件夹
例:
File dir=new File(“abc”);
dir.mkdir();//创建abc这个文件夹
boolean mkdirs();//创建多级文件夹
2、删除
boolean delete();
//删除文件或目录。文件存在,返回true;文件不存在或者正在被执行,返回false。
void deleteOnExit();//在程序退出时删除指定文件
3、判断
boolean canExecute();//是否是可执行文件
boolean exists();//文件是否存在
boolean isFile();//是否是文件
boolean isDirectory();//是否是文件夹
boolean isHidden();//是否是隐藏文件
boolean isAbsolute();//文件是否是绝对路径
记住:在判断文件对象是否是文件或者目录时,必须要判断该文件对象封装的内容是否存在。通过exists判断。

4、获取信息
String getName();//获取文件名
String getPath();
//获取文件的相对路径(即创建的对象传入的参数是什么就获取到什么)
String getParent();
//获取文件父目录。返回的是绝对路径中的父目录。如果获取的是相对路径,返回null。如果相对路径中有上一层目录,那么该目录就是返回结果。
String getAbsolutePath();//获取文件的绝对路径
long lastModified();//返回文件最后一次被修改的时间

File file2 = new File(“D:\temp”);// D;/temp 为一个目录
File tempFile1= file2.createTempFile(“msg”, “.tmp”,file2);
File tempFile2 = file2.createTempFile(“msg”, “.tmp”);
System.out.println(tempFile2.getAbsolutePath());

demo
public class CreateFileUtil {

public static boolean createFile(String destFileName) {
    File file = new File(destFileName);
    if(file.exists()) {
        System.out.println("创建单个文件" + destFileName + "失败,目标文件已存在!");
        return false;
    }
    if (destFileName.endsWith(File.separator)) {
        System.out.println("创建单个文件" + destFileName + "失败,目标文件不能为目录!");
        return false;
    }
    //判断目标文件所在的目录是否存在
    if(!file.getParentFile().exists()) {
        //如果目标文件所在的目录不存在,则创建父目录
        System.out.println("目标文件所在目录不存在,准备创建它!");
        if(!file.getParentFile().mkdirs()) {
            System.out.println("创建目标文件所在目录失败!");
            return false;
        }
    }
    //创建目标文件
    try {
        if (file.createNewFile()) {
            System.out.println("创建单个文件" + destFileName + "成功!");
            return true;
        } else {
            System.out.println("创建单个文件" + destFileName + "失败!");
            return false;
        }
    } catch (IOException e) {
        e.printStackTrace();
        System.out.println("创建单个文件" + destFileName + "失败!" + e.getMessage());
        return false;
    }
}
public static boolean createDir(String destDirName) {
    File dir = new File(destDirName);
    if (dir.exists()) {
        System.out.println("创建目录" + destDirName + "失败,目标目录已经存在");
        return false;
    }
    if (!destDirName.endsWith(File.separator)) {
        destDirName = destDirName + File.separator;
    }
    //创建目录
    if (dir.mkdirs()) {
        System.out.println("创建目录" + destDirName + "成功!");
        return true;
    } else {
        System.out.println("创建目录" + destDirName + "失败!");
        return false;
    }

public static String createTempFile(String prefix, String suffix, String dirName) {
File tempFile = null;
try{
if(dirName == null) {
// 在默认文件夹下创建临时文件
tempFile = File.createTempFile(prefix, suffix);
return tempFile.getCanonicalPath();
}
else {
File dir = new File(dirName);
// 如果临时文件所在目录不存在,首先创建
if(!dir.exists()) {
if(!CreateFileUtil.createDir(dirName)){
System.out. println(“创建临时文件失败,不能创建临时文件所在目录!”);
return null;
}
}

读取文件内容存入 Properties prop
public static void method()throws IOException
{
//使用字符读取缓冲流关联文件
BufferedReader bufr = new BufferedReader(new FileReader(“info.txt”));

    String line = null;  
    //定义Properties集合  
    Properties prop = new Properties();  

        while((line=bufr.readLine())!=null)  
    {  
        String[] arr = line.split("=");//将一行数据以“=”号进行分割  
        //将=左边作为键存入,将=右边作为值存入  
        prop.setProperty(arr[0],arr[1]);  
    }  

    bufr.close();//关流  

    System.out.println(prop);  
}  

打印
class PrintStreamDemo
{
public static void main(String[] args) throws IOException
{
//键盘录入
BufferedReader bufr =
new BufferedReader(new InputStreamReader(System.in));

    //打印流关联文件,自动刷新  
    PrintWriter out = new PrintWriter(new FileWriter("a.txt"),true);  

    String line = null;  

    while((line=bufr.readLine())!=null)  
    {  
        if("over".equals(line))//结束字符  
            break;  
        out.println(line.toUpperCase());  
        //out.flush();  
    }  

    //关流  
    out.close();  
    bufr.close();  

}     

}
class SplitFile
{
public static void main(String[] args) throws IOException
{
//指定要切割的文件
File file=new File(“C:\Users\asus\Desktop\苏芮 - 一样的月光.mp3”);
//将指定文件进行切割
splitFile(file);

    //指定要合并到的文件  
    File file1=new File("E:\\Java Study\\Practice\\day20\\splitFile\\一样的月光.mp3");  
    //将部分文件进行合并指定文件中  
    merge(file1);  

}  
//接收一个文件,将其按1M大小进行切割  
public static void splitFile(File file)throws IOException  
{  
    //关联要切割的文件  
    BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));  

    BufferedOutputStream bos=null;  

    //定义1M大小存储容器  
    byte[] buf=new byte[1024*1024];  
    int len=0,x=0;  
    while ((len=bis.read(buf))!=-1)  
    {  
        //每满1M就写入一个新文件中  
        bos=new BufferedOutputStream(new FileOutputStream("E:\\Java Study\\Practice\\day20\\splitFile\\"+(++x)+".part"));  
        bos.write(buf,0,len);  
        bos.close();//没写完一个文件要记得关流  
    }  
    //关流  
    bis.close();  
}  

//将部分文件合并为一个可执行文件  
public static void merge(File file)throws IOException  
{  
    //定义一个集合存储这些部分文件关联路径数据  
    ArrayList<FileInputStream> al=new ArrayList<FileInputStream>();  

    for (int x=1;x<=6 ; x++)  
    {  
        al.add(new FileInputStream("E:\\Java Study\\Practice\\day20\\splitFile\\"+x+".part"));  
    }  

    //因为Enumeration是Vector特有的迭代方法,所以这里创建一个Enumeration类型的匿名内部类  
    final  ListIterator<FileInputStream> it=al.listIterator();  
    Enumeration<FileInputStream> en=new Enumeration<FileInputStream>()  
    {  
        public boolean hasMoreElements()  
        {  
            return it.hasNext();  
        }  

        public FileInputStream nextElement()  
        {  
            return it.next();  
        }  
    };  

    //关联枚举对象  
    SequenceInputStream sis=new SequenceInputStream(en);  

    //将合并的文件数据写入指定文件中  
    FileOutputStream fos=new FileOutputStream(file);  

    //定义临时存储数据的数组  
    byte[] buf=new byte[1024];  
    int len=0;  
    while((len=sis.read(buf))!=-1)  
    {  
        fos.write(buf,0,len);//写数据  
    }  

    //关流  
    fos.close();  
    sis.close();  

}  

}
//将部分文件合并为一个可执行文件
public static void merge(File file)throws IOException
{
//定义一个集合存储这些部分文件关联路径数据
ArrayList al=new ArrayList();

    for (int x=1;x<=6 ; x++)  
    {  
        al.add(new FileInputStream("E:\\Java Study\\Practice\\day20\\splitFile\\"+x+".part"));  
    }  

    //因为Enumeration是Vector特有的迭代方法,所以这里创建一个Enumeration类型的匿名内部类  
    final  ListIterator<FileInputStream> it=al.listIterator();  
    Enumeration<FileInputStream> en=new Enumeration<FileInputStream>()  
    {  
        public boolean hasMoreElements()  
        {  
            return it.hasNext();  
        }  

        public FileInputStream nextElement()  
        {  
            return it.next();  
        }  
    };  

    //关联枚举对象 
    SequenceInputStream sis=new SequenceInputStream(en); 

    //将合并的文件数据写入指定文件中  
    FileOutputStream fos=new FileOutputStream(file);  

    //定义临时存储数据的数组  
    byte[] buf=new byte[1024];  
    int len=0;  
    while((len=sis.read(buf))!=-1)  
    {  
        fos.write(buf,0,len);//写数据  
    }  

    //关流  
    fos.close();  
    sis.close();  

}  

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值