夜微凉、的博客

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  76 随笔 :: 24 文章 :: 22 评论 :: 24万 阅读

 I/O操作主要是指使用Java进行输入,Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。

 主要是通过下面两个类实现对文件的输入输出操作:

FileInputStream  输入类 

FileOutputStream输出类

可以参考 http://blog.csdn.net/hguisu/article/details/7418161 ,这篇文章写的挺详细。

下面代码是简单的一些对文件的操作:

1、读取TXT文件的两种方式:

复制代码
    /*
     * 第二种方式  按行读取
     */
    public void ReaderFile() {
        String paths = this.getClass().getResource("").getPath();
        System.out.println(paths);
        String path = "E:\\学习文档\\一个程序员的奋斗史.txt";
        File file = new File(path);
        if (file.exists()) {
            try {
                FileInputStream Input=new FileInputStream(file);
                //获取 StreamReader对象,对编码进行处理
                InputStreamReader StreamReader=new InputStreamReader(Input,"UTF-8"); 
                BufferedReader reader=new BufferedReader(StreamReader);
                String str=null;
                while (reader.readLine() != null) {
                    str=reader.readLine();
                    System.out.println(str);
                }
            } catch (IOException e) { 
                System.out.println("异常:"+e);
            }
        }
    }
    /*
     * 第二种方式  
     */
    public void ReaderFile() {
        String paths = this.getClass().getResource("").getPath();
        System.out.println(paths);
        String path = "E:\\学习文档\\一个程序员的奋斗史.txt";
        File file = new File(path);
        if (file.exists()) {
            try {
                FileInputStream Input=new FileInputStream(file);
                //获取 StreamReader对象,对编码进行处理
                byte[] buffer=new byte[Input.available()];
                Input.read(buffer);
                String str=new String(buffer,"utf-8");
                System.out.println(str);
            } catch (IOException e) { 
                System.out.println("异常:"+e);
            }
        }
    }
复制代码

 2、写TXT文件

复制代码
/*
     * 写文件
     */
    public void WriteFile() {  
        //创建一个文本文件
        File file=new File("E:\\学习文档","测试文本.txt");  
        try {
            FileOutputStream output=new FileOutputStream(file);
            byte[] buffer="这是一个测试文本的内容".getBytes();
            output.write(buffer);
            output.close();
            System.out.println("OK");
        } catch (IOException e) { 
            System.out.println(e);
        }
    }
复制代码

 3、在文本的后面继续写入文字

复制代码
//写文件 -- 继续下一行往下写 
    public void WriteLineFile() { 
        File file=new File("E:\\学习文档","wwj.txt");    
        try {
            if(!file.exists())
                file.createNewFile();
            FileInputStream input=new FileInputStream(file);  
            byte[] buffer=new byte[input.available()];        //创建数组,大小为流的大小
            input.read(buffer);                                     //将原来的文件流加入到缓冲区
            String content=new String(buffer,"utf-8")+"往下写下一行的内容------------------------\r\n";
            byte[] buffercontent=content.getBytes();                //将字符串转换为字节数组
            FileOutputStream out=new FileOutputStream(file);
            out.write(buffercontent);                               //将缓冲区数据写入
            out.close();                                            //关闭流
            input.close();
            System.out.println("完成");
        } catch (IOException e) {
            System.out.println(e);
        }
    }
复制代码

 4、获取一个文件的数据,输出到指定的目录(主要是用于下载文件)

复制代码
// 获取一个文件的数据,输出到另一个地方 
    public void GetWriteFile() {
        File Getfile = new File("E:\\学习文档", "学通ASP.NET的24堂课.pdf");
        try {
            // 获取文件输入流对象
            FileInputStream input = new FileInputStream(Getfile);
            // 创建字节数组 大小为流的的长度
            byte[] buffer = new byte[input.available()];
            // 写入到缓冲区
            input.read(buffer);
            // 获取输出对象
            FileOutputStream output = new FileOutputStream("C:\\Users\\wwj\\Desktop\\24堂课.pdf");
            output.write(buffer);
            output.close();
            input.close();
            System.out.println("输出成功");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }
复制代码

 

posted on   夜、微凉  阅读(227)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示