• 文件的读取和写出


    要读取一个文件,有以下几个步骤:

    1.建立与文件的联系:File对象,文件必须存在

    2.选择流:按字节流读取,文件输入流 InputStream FileInputStream

    3.操作:byte[] car=new byte[1024]+read

    4.释放资源,注意jdk1.7后会自动关闭了

    InputStream是一个抽象类,不能new一个新的对象,所以这里使用多态

    InputStream is=new FileInputStream(......);

    选择构造方法,第一个和第三个比较常用,本质上来说这两种方法是一致的,通过String name 创建一个新对象,

    它内部还是会通过name包装成File

    在读取文件时,使用循环不断进行读取,定义一个制定长度的byte数组,则这个数组就是每次读取文件的长度,

    如果要输出,就创建一个String对象,String info = new String(car, 开始, 结束); 

    样例:

    复制代码
    package com.pony1223.byteio;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.io.InputStream;
    
    public class Demo01 {
        public static void main(String[] args) 
        {
            // 1、建立联系 File对象
            File src = new File("E:/study/java/HelloWorld.java");
            // 2、选择流
            InputStream is = null; // 提升作用域
            try 
            {
                is = new FileInputStream(src);
                // 3、操作 不断读取 缓冲数组
                byte[] car = new byte[1024];
                int len = 0; // 接收 实际读取大小
                // 循环读取
                StringBuilder sb = new StringBuilder();
                while (-1 != (len = is.read(car)))
                {
                    // 输出 字节数组转成字符串
                    String info = new String(car, 0, len);
                    sb.append(info);
                }
                System.out.println(sb.toString());
    
            } 
            catch (FileNotFoundException e) 
            {
                e.printStackTrace();
                System.out.println("文件不存在");
            } catch (IOException e) 
            {
                e.printStackTrace();
                System.out.println("读取文件失败");
            }
            finally 
            {
                try 
                {
                    // 4、释放资源
                    if (null != is) 
                    {
                        is.close();
                    }
                }
                catch (Exception e2) 
                {
                    System.out.println("关闭文件输入流失败");
                }
            }
        }
    
    }
    复制代码

    文件写出,有以下几个步骤:

    1.建立与文件的联系:File对象,文件可不存在

    2.选择流:按字节流写出,文件输出流 OutputStream FileOutputStream

    3.操作:write+flush

    4.释放资源,注意jdk1.7后会自动关闭了

    FileOutputStream的构造方法

    FileOutputStream(File file,boolean append) 如果选择true,则是追加,false则覆盖

    构造方法中没有append参数的,则默认false,覆盖

    复制代码
    package com.pony1223.byteio;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    
    public class Demo02
    {
        public static void main(String[] args) 
        {
            File dest=new File("E:/study/java/test.txt");  
            OutputStream os=null;  
            try {  
                os=new FileOutputStream(dest);  
                String str="hahahaha";  
                //字符串转字节数组  
                byte[] data=str.getBytes();  
                  
                os.write(data,0,data.length);  
                  
                //强制刷新出去  
                os.flush();  
                  
            } 
            catch (FileNotFoundException e) 
            {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            } 
            catch (IOException e)
            {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }finally
            {  
                  
                try {  
                    if(null!=os){  
                        os.close();  
                    }  
                } catch (IOException e) {  
                    // TODO Auto-generated catch block  
                    e.printStackTrace();  
                }  
            }  
        }  
    }
    复制代码
  • 相关阅读:
    串口摄像头得到了一张图像的JPEG数据,我把这些数据复制到txt文档了,想将这些数据变为图像
    继承CListCtrl后,可以改变行的颜色,程序出现错误。
    保存数据到数据库
    mfc的定时器函数
    working copy locked 问题
    从网站上复制代码到MyEclipse后每行都是字符编码错误的解决办法
    SpringMVC控制器设值原理分析(ModelAndView的值通过HttpServletRequest直接取到的原因)
    EditPlus去行号/行标
    Java compiler level does not match the version of the installed Java project facet. springmvc1 和 Target runtime Apache Tomcat v7.0 is not defined.
    SPServices介绍之三:使用SPSerivces对象调用Web Service
  • 原文地址:https://www.cnblogs.com/chinaifae/p/10328836.html
Copyright © 2020-2023  润新知