Java基础(极客)——23、Java中的IO操作(补充)

package com.zhh.stream;


import java.io.FileInputStream;


/**
 * 3、使用字节流读写数据
 * 把文件中的数据写到程序中
 * 
 */
public class ReadByteStream {


    public static void main(String[] args) {
        Method1();
    }


    public static void Method1() {
        try {
            //实例化一个文件字节流对象
            FileInputStream fileInputStream = new FileInputStream("test.txt");//文件的相对路径,在项目的根目录下
            //定义一个字符串数组
            byte[] inputStr = new byte[26];


            int i = fileInputStream.read(inputStr);
            int count = 0;
            while (fileInputStream.read(inputStr) != -1) {
                count++;
            }
            //把字节数组转化成字符串         
            String str = new String(inputStr, "UTF-8");//和系统一致
            fileInputStream.close();


            System.out.println("读到的字节数:" + i);
            System.out.println(str);
            System.out.println("读取了" + count + "次");
            /*
             * 读到的字节数:26
               cdefghijklmnopqrstuvwxyz
                                         读取了3次
                                         说明了数组的空间只有26,文件有26*3的大小
                                         数组虽然读取了3次但是任然是26个字母,因为数组空间只有26,读不进去了,不会数组越界                          
                                         


             */


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


    }

}




package com.zhh.stream;


import java.io.FileOutputStream;


/**
 * 3、使用字节流读写数据
 * 把程序中的数据写到文件中(当文件不存在时,会自动创建文件)
 * 
 */
public class WriteByteStream {


    public static void main(String[] args) {
        method1();
    }


    static void method1() {
        try {


            FileOutputStream fileOutputStream = new FileOutputStream("mytest.txt");
            String str = "人的生命是有限的";
            byte[] b = str.getBytes("UTF-8");//把字符串转换成字节数组
            fileOutputStream.write(b);
            fileOutputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }


    }


}



package com.zhh.stream;


import java.io.FileInputStream;
import java.io.FileOutputStream;


/**
 * 3、使用字节流读写数据
 * 使用字节流实现文件的拷贝
 * 
 */
public class CopyByByteStream {


    public static void main(String[] args) {
        method1();
    }


    static void method1() {
        try {
            FileInputStream fileInputStream = new FileInputStream("test.mp3");
            FileOutputStream fileOutputStream = new FileOutputStream("test_new.mp3");
            byte[] input = new byte[50];


            while (fileInputStream.read(input) != -1) {//把文件渡到数组中


                //当返回值是-1时,说明数组中没有数据
                fileOutputStream.write(input);//把数组中把文件写出来


            }


            fileOutputStream.close();
            fileInputStream.close();
            System.out.println("文件已经考别成功。。。");
        } catch (Exception e) {
            e.printStackTrace();
        }


    }


}



package com.zhh.stream;


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


/**
 * 5、使用字符流读写数据
 * 字符流只能读取文本数据
 * 实现文件的拷贝
 * 
 */
public class RWByCharStream {


    public static void main(String[] args) {
        try {
            //输入流
            // File file = new File("test.txt");
            FileInputStream inputStream = new FileInputStream("test.txt");
            InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
            //输出流
            FileOutputStream outputStream = new FileOutputStream("test_new.txt");
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-8");


            char[] str = new char[100];
            int l = 0;
            while ((l = reader.read(str)) != -1) {
                // System.out.println(new String(str, 0, l));
                outputStreamWriter.write(str, 0, l);


            }
            outputStreamWriter.close();
            outputStream.close();
            reader.close();
            inputStream.close();
            System.out.println("文件拷贝成功");


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


    }
}



package com.zhh.stream;


import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;


/**
 *6、使用带有缓冲的字符流读写数据
 * 
 */
public class RWByBufferedCharStream {


    public static void main(String[] args) {
        try {
            //输入流
            // File file = new File("test.txt");
            FileInputStream inputStream = new FileInputStream("test.txt");
            InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
            BufferedReader myBufferedReader = new BufferedReader(reader);//包装成带有缓冲区的流
            //输出流
            FileOutputStream outputStream = new FileOutputStream("test_new.txt");
            OutputStreamWriter writer = new OutputStreamWriter(outputStream, "UTF-8");
            //            BufferedWriter myBufferedWriter = new BufferedWriter(writer);//没有自动换行功能
            PrintWriter printWriter = new PrintWriter(writer);//自动换行


            String input = null;
            while ((input = myBufferedReader.readLine()) != null) {
                //                myBufferedWriter.write(input);//没有换行
                printWriter.println(input);
            }


            //关闭流
            //            myBufferedWriter.close();
            printWriter.flush();//把流中的数据强制输出,必须写(不谢有时候会出现问题)
            printWriter.close();
            writer.close();
            outputStream.close();


            myBufferedReader.close();
            reader.close();
            inputStream.close();


            System.out.println("文件拷贝成功");


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


    }
}



package com.zhh.stream;


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;


/**
 * 7、FileReader与FileWriter
 * 用FileReader和FileWriter操作文件数据
 * 专门操作文件
 * 
 *
 */
public class FileReadWriter {


    public static void main(String[] args) {
        try {
            //向程序中读的流
            FileReader fileReader = new FileReader("test.txt");
            BufferedReader reader = new BufferedReader(fileReader);
            //从程序中往出写的流
            FileWriter fileWriter = new FileWriter("test_new.txt");
            BufferedWriter writer = new BufferedWriter(fileWriter);
            String dataStr;
            while ((dataStr = reader.readLine()) != null) {
                writer.write(dataStr + "\n");//这个方法没有换行,需要手动换行
            }
            writer.flush();//强制输出,所有的代缓冲的流,都需要强制输出
            //关闭流
            writer.close();
            fileWriter.close();
            reader.close();
            fileReader.close();
            System.out.println("文件拷贝成功。。。");


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


    }
}



package com.zhh.stream;


import java.io.File;


/**
 * 8、RandomAccessFile随机文件读写
 * RandomAccessFile是一个随机读写文件的类
 * 本类可实现断点续传
 * 
 */
public class RandomTest {
    static File myFile = new File("mytest.txt");


    public static void main(String[] args) {
        //避免文件中的数据叠加
        if (myFile.exists()) {
            myFile.delete();


        }
        FileWriter f1 = new FileWriter(myFile, 1);
        f1.start();
        FileWriter f2 = new FileWriter(myFile, 2);
        f2.start();
        FileWriter f3 = new FileWriter(myFile, 3);
        f3.start();
        FileWriter f4 = new FileWriter(myFile, 4);
        f4.start();
        FileWriter f5 = new FileWriter(myFile, 5);
        f5.start();


    }


}


package com.zhh.stream;


import java.io.File;
import java.io.RandomAccessFile;


public class FileWriter extends Thread {
    /**
     * 1       2       3       4       5 block分成5个区域 每个区域是L = 17
     * ---------------------------------
     */
    File file;
    int  block; //写入的标号,从1开始
    int  L = 17;


    public FileWriter(File file, int block) {
        this.file = file;
        this.block = block;
    }


    @Override
    public void run() {
        try {
            RandomAccessFile randomAccess = new RandomAccessFile(file, "rw");//设置为可读,可写
            randomAccess.seek((block - 1) * L);
            randomAccess.writeBytes("this is a block" + block);


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


    }


}



package com.zhh.stream;


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


import org.apache.commons.io.FileUtils;


/**
 * 9、使用Apache IO库操作IO与文件
 * 导入Apache的commons-io-2.4.jar的架包
 *
 */
public class TeseFileUtils {


    public static void main(String[] args) {
        //        method1();
        method2();
    }


    /**
     * 文件读取为字符串
     */
    static void method1() {
        try {
            /*
             *一个方法就搞定了 
             */
            File file = new File("test.txt");
            String s = FileUtils.readFileToString(file, "UTF-8");
            System.out.println("读取到的字符串:" + s);


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


    }


    /**
     * 拷贝文件
     * @throws IOException 
     */
    static void method2() {
        try {
            File file1 = new File("test.txt");
            File file2 = new File("test_new.txt");
            FileUtils.copyFile(file1, file2);//一行代码是吸纳文件的拷贝
        } catch (IOException e) {
            e.printStackTrace();
        }


    }


}






源码下载:
http://download.csdn.net/detail/zhaihaohao1/8741715
视频下载:
http://c38.yunpan.360.cn/my/index/#%2F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91%2Fjava%2F


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值