java基础-输入输出流-大文本文件读取及写入另一文本-----(此程序print部分有bug,输出不正常,原因琢磨不清了。。。)

简介:如题

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

/**
 * @author czchina
 *
 */
public class TestStream {
    public static void main(String[] args) {

        FileInputStream fls = null;
        FileOutputStream fos =null;

        try{
            fls = new FileInputStream("E:/Android/AndroidStudioProjects/text.txt");
            fos = new FileOutputStream("E:/Android/AndroidStudioProjects/store.txt");
            //生成一个字节数组
            byte [] buffer= new byte [500];

            int num = 0;
            int tmp = 0;
            int tmp1 = 0;
            for(int i=0;i<3;i++){
                tmp = fls.read(buffer,0,buffer.length);
                if(-1 == tmp){
                    System.out.print("Read complete ! \n");

                    break;
                }

                //打印buffer
                String bufferToString = new String(buffer);
                bufferToString = bufferToString.trim();
                System.out.println("Print bufferToString:\n"+bufferToString+"\n");

                tmp1 = tmp;
                if(500 == tmp1){
                    num++;
                    tmp1 = 0;
                }
                fos.write(buffer,0,tmp);
            }
            //流的字节数
            num = num*500+tmp1;
            System.out.println("num: "+num);

        }
        catch(Exception e){
            System.out.println(e.toString());
        }
    }
}

输入流文本:

输出流文本:

可见:流的输入与输出都没有问题。

以下是console打印:

如上图:

1、问题:红圈内文本打印了两次,原因不明‘

2、num计数正确。

时间: 2024-10-23 00:04:51

java基础-输入输出流-大文本文件读取及写入另一文本-----(此程序print部分有bug,输出不正常,原因琢磨不清了。。。)的相关文章

JAVA基础-输入输出流

一,File类:文件的创建和删除 1.File(String pathname):pathname是指路径名称.用法 File file = new File("d:/1.txt "); 2.File(String parent, String child):parent是父路径字符串,child是子路径字符串.用法:File file = new File(" D:/", " letter.txt"); 3.File(File f, Strin

Java基础——输入/输出(一)

概述 Java的IO通过java.io包下是类和接口来支持,在java.io包下主要包括输入,输出两种IO流,每种输入.输出流又可分为字节流和字符流两大类.其中字节流以字节为单位来处理输入.输出操作,而字符流以字符来处理来处理输入.输出操作. 一.File类 File类可以使用文件路径字符串来创建File实例,该文件字符串可以是绝对路径,也可以是相对路径.在默认情况下,系统总是依据用户的工作路径来解释相对路径,这个路径由系统属性“userdir”指定. 一旦创建了File对象后,就可以调用Fil

java的输入输出流(一)

java中i/o流是java中核心的一部分,以前学过,但是理解不够深入,渐渐的也就忘了,现在在从新学习下java的io处理,写下我学习的笔记,便于记忆,和总结归纳: 本文原创,转载请注明:http://blog.csdn.net/j903829182/article/details/38407723 1.java.io包中定义了多个流类型(类或抽象类)来实现输入/输出功能:可以从不同的角度进行分类: 按数据流的方向不同可以分为输入流和输出流. 按处理数据的单位不同可以分为字节流和字符流. 按照功

java:I/O 一行一行读取和写入

BufferedReader逐行读取 import java.io.*; class Test { public static void main(String args []){ FileReader reader =null; BufferedReader bufferedReader =null; try{ reader = new FileReader("e://d/from.txt"); bufferedReader = new BufferedReader(reader);

Java底层代码实现单文件读取和写入(解决中文乱码问题)

需求: 将"E:/data/车站一次/阿坝藏族羌族自治州.csv"文件中的内容读取,写入到"E:/data//车站一次.csv". 代码: public class FileOpe { public static void main(String[] args) { sigle(); } public static void sigle(){ BufferedReader bufr = null; BufferedWriter bufw = null; try {

Java底层代码实现多文件读取和写入

需求: "E:/data/"目录下有四个文件夹,如下: 每个文件夹下有几个.csv文件,如下: 将每个文件夹下的.csv文件合并成一个以该文件夹命名的.csv文件. 做法: 找到"E:/data"这个目录,循环读取目录下的四个文件夹: 针对每个文件夹,循环读取目录下的文件列表: 将读取的文件写入要合并的文件中. 代码: public class FileOperation { public static void main(String[] args) { comb

java.IO输入输出流:过滤流:buffer流和data流

java.io使用了适配器模式装饰模式等设计模式来解决字符流的套接和输入输出问题. 字节流只能一次处理一个字节,为了更方便的操作数据,便加入了套接流. 问题引入:缓冲流为什么比普通的文件字节流效率高? 不带缓冲的操作,每读一个字节就要写入一个字节. 由于涉及磁盘的IO操作相比内存的操作要慢很多,所以不带缓冲的流效率很低. 带缓冲的流,可以一次读很多字节,但不向磁盘中写入,只是先放到内存里. 等凑够了缓冲区大小的时候一次性写入磁盘,这种方式可以减少磁盘操作次数,速度就会提高很多! 这就是两者的区别

浅谈Java的输入输出流(转)

Java语言的输入输出功能是十分强大而灵活的,美中不足的是看上去输入输出的代码并不是很简洁,因为你往往需要包装许多不同的对象.在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流....本文的目的是为大家做一个简要的介绍. 流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接.类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流.这时候你

Java基础——输入/输出(二)

一.字节流与字符流 1.1 InputStream和Reader InputStream是抽象类,本身并不能创建实例来执行输入,它里面包含如下几个方法: 1.Int read():从输入流中读取单个字节,返回所读取的字节数据. 2.int read(byte[] b):从输入流中最多读取b.length个字节的数据,并将其存储在字节数组b中,返回实际读取的字节数. 3.int read(byte[] b,int off,int len):从输入流中最多读取len个字节的数据,并将其存储在数组b中