文件IO流

//字节流读写含有中文的文本文件会出现问题,我在实践中居然没有检验出该问题,新人小菜,希望大家能指出:

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Wenjian {

    public static void main(String[] args) throws IOException, InterruptedException {
//        字节流1个字节复制纯文本 可以加true
//        FileInputStream fis = new FileInputStream("tt.txt");
//        FileOutputStream fos = new FileOutputStream("C:\\Users\\issuser\\Desktop\\ttt.txt",true);
//        int rr = 0;
//        while((rr=fis.read())!=-1){
//            fos.write(rr);
//        }
//        fis.close();
//        fos.close();

//        字节流1个字节复制非纯文本 不能加true 在结尾加字节会导致,文件不断累加
//        FileInputStream fis = new FileInputStream("美女1.jpg");
//        FileOutputStream fos = new FileOutputStream("C:\\Users\\issuser\\Desktop\\meinv.jpg");
//        int rr = 0;
//        while((rr=fis.read())!=-1){
//            fos.write(rr);
//        }
//        fis.close();
//        fos.close();

        //字节流多个个字节复制非纯文本 不能加true 在结尾加字节会导致,文件不断累加
//        FileInputStream fis = new FileInputStream("美女1.jpg");
//        FileOutputStream fos = new FileOutputStream("C:\\Users\\issuser\\Desktop\\meinv1.jpg");
//        int rr = 0;
//        byte[] arr = new byte[1024*8];
//        while((rr=fis.read(arr))!=-1){
//            fos.write(arr,0,rr);
//        }
//        fis.close();
//        fos.close();

        //字节流多个个字节复制非纯文本 不能加true 在结尾加字节会导致,文件不断累加   应该有读取中文问题
        FileInputStream fis = new FileInputStream("checked.html");
        FileOutputStream fos = new FileOutputStream("C:\\Users\\issuser\\Desktop\\xx.html");
        int rr = 0;
        byte[] arr = new byte[5];
        while((rr=fis.read(arr))!=-1){
            fos.write(arr,0,rr);
        }
        fis.close();
        fos.close();

        //字节流Buff复制非纯文本 不能加true 在结尾加字节会导致,文件不断累加
//        BufferedInputStream bi = new BufferedInputStream(new FileInputStream("美女1.jpg"));
//        BufferedOutputStream bo = new BufferedOutputStream(new FileOutputStream("C:\\Users\\issuser\\Desktop\\meinv1.jpg"));
//        int rr = 0;
//        while((rr=bi.read())!=-1){
//            bo.write(rr);
//        }
//        bi.close();
//        bo.close();

        //字符流1个字符复制 可以加true
//        FileReader fr = new FileReader("tt.txt");
//        FileWriter fw = new FileWriter("C:\\Users\\issuser\\Desktop\\ttt.txt",true);
//        int rr=0;
//        while((rr=fr.read())!=-1){
//            fw.write(rr);
//        }
//        fr.close();
//        fw.close();

        //字符流多个字符复制 可以加true
//        FileReader fr = new FileReader("tt.txt");
//        FileWriter fw = new FileWriter("C:\\Users\\issuser\\Desktop\\ttt.txt",true);
//        int rr=0;
//        char[] arr = new char[1024];
//        while((rr=fr.read(arr))!=-1){
//            fw.write(arr,0,rr);
//        }
//        fr.close();
//        fw.close();

        //字符流Buffer复制 可以加true
//        BufferedReader br = new BufferedReader(new FileReader("tt.txt"));
//        BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\issuser\\Desktop\\ttt.txt"));
//
//        int rr = 0;
//        while((rr=br.read())!=-1){
//            bw.write(rr);
//        }
//        br.close();
//        bw.close();

        // 创建输入流
//                FileReader fr = new FileReader("tt.txt");
//                FileWriter fw = new FileWriter("C:\\Users\\issuser\\Desktop\\ttt.txt");
//                // 带缓冲的字符流
//                BufferedReader br = new BufferedReader(fr);
//                BufferedWriter bw = new BufferedWriter(fw);
//
//                String c;
//                while ((c = br.readLine()) != null) {  // 没有换行
//                    bw.write(c);
//                    // 添加新行
//                    bw.newLine();       // 跨平台
//                    // bw.write("\r\n");    // 只在Windows下有用
//                }
//
//                // 关闭流
//                br.close();
//                bw.close();
//            }

//        // 创建LineNumberReader对象
//            LineNumberReader lnr = new LineNumberReader(new FileReader("tt.txt"));
//
//            // 设置当前行号
//            lnr.setLineNumber(100);
//
//            String line;
//            while( (line = lnr.readLine()) != null ){
//                // 获取当前行号
//                System.out.println(lnr.getLineNumber() + ":" +   line);
//            }
//
//            // 关闭流
//            lnr.close();
        InputStreamReader isr = new InputStreamReader(new FileInputStream("utf-8.txt"), "UTF-8");
        OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("gbk.txt"), "GBK");

    }
}
时间: 2024-10-12 20:30:14

文件IO流的相关文章

Java文件IO流的操作总结

流就是管道,向管道里面写数据用输出流.write 从管道里面读数据,用输入流.read 流,按照不同的维度有不同的分类,按照从流中每次读取数据单位不同,划分为字节流字符流 按照流-对应操作的角色的不同(是IO设备,还是其他流)是否能够直接向特定的IO设备如文件.网络.磁盘等,能够直接与这些进行读写的称之为节点流, 对节点流进一步封装的流,通过封装后的流来实现读写功能,处理流也被称为高级流 流和数组不一样,不能通过索引读写数据.在流中,你也不能像数组那样前后移动读取数据,除非使用RandomAcc

文件IO流完成文件的复制(复杂版本主要用来演示各种流的用途,不是最佳复制方案哦)

package io; import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;

文件IO流的修饰者设计模式

public class Page3 { /** * 装饰者设计模式 * InputStream为父类下面有7个直接子类 * FileInputStream ByteArrayInputStream StringBufferInputStream * PipedInputStream ObjectInputStream SequenceInputStream * FilterInputStream * FilterInputStream下有三个修饰类 * BufferedInputStream

Java中常用IO流之文件流的基本使用姿势

所谓的 IO 即 Input(输入)/Output(输出) ,当软件与外部资源(例如:网络,数据库,磁盘文件)交互的时候,就会用到 IO 操作.而在IO操作中,最常用的一种方式就是流,也被称为IO流.IO操作比较复杂,涉及到的系统调用比较多,相对操作内存而言性能很低.然而值得兴奋的是,Java提供了很多实现类以满足不同的使用场景,这样的实现类有很多,我只挑选些在日常编码中经常用到的类进行说明,本节主要介绍和文件操作相关的流,下面一起来瞧瞧吧. File File是Java在整个文件IO体系中比较

Java 之文件IO编程 之读取

1 package com.sun; 2 /* 3 * 这里是对文件IO流读取的操作 4 * 2014-08-10 5 */ 6 import java.io.*; 7 public class File_test { 8 9 10 public static void main(String[] args) { 11 //创建一个文件对象 12 FileInputStream fis=null; 13 14 File srcFile = new File("d:\\aa.txt");

IO流总结补充

1.File类(java.io.File)可表示文件或者目录(在JAVA中文件和目录都属于这个类中,而且区分不是非常的明显). File下的方法是对磁盘上的文件进行磁盘操作,但是无法读取文件的内容. 注意:创建一个文件对象和创建一个文件在JAVA中是两个不同的概念.前者是在虚拟机中创建了一个文件,但却并没有将它真正地创建到OS的文件系统中,随着虚拟机的关闭,这个创建的对象也就消失了.而创建一个文件才是在系统中真正地建立一个文件. 例如:File f=new File("11.txt")

day20<IO流>

IO流(IO流概述及其分类) IO流(FileInputStream) IO流(read()方法返回值为什么是int) IO流(FileOutputStream) IO流(FileOutputStream追加) IO流(拷贝图片) IO流(拷贝音频文件画原理图) IO流(字节数组拷贝之available()方法) IO流(定义小数组) IO流(定义小数组的标准格式) IO流(BufferedInputStream和BufferOutputStream拷贝) IO流(flush和close方法的区

Java基础-IO流(123

IO流用来处理设备之间的数据传输.可以实现文件复制,上传文件和下载文件. IO流分类 IO流可以吧数据存储到文件,也可以从文件中读取数据 输出流(写数据用) FileWriter void write(String str) //写一个字符串数据 void write(String str,int index,int len) //写一个字符串中的一部分数据 void write(int ch) //写一个字符数据,写int类型好处是既可以写char类型的数据,也可以写插入对应的int类型数据

Java:IO流与文件基础

Java:IO流与文件基础 说明: 本文所有内容包含图片均为MrSaber自己编写,转载请练习我哦. 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象称作 输入流,可以向其中写入一个字节序列的对象称作 输出流. ? 这些字节序列的来源可以是:文件.网络连接.内存块等. ? 抽象类InputStream和OutputStream是构成输入/输出(I/O)的基础. ? 因为面向字节的流