read方法+read和write一起用

原创 2018年04月16日 11:25:16

read()方法1:一个字节一个字节的读

import java.io.*;
public class Main {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        InputStream is = new FileInputStream("c:\\gx.txt");
        long l1 = System.currentTimeMillis();
        //1:一个字节一个字节的读
        /*int result = is.read();//返回读取的字符的编码,当返回值为-1,结束,关闭输入流
        while(result != -1){
            System.out.println(result);
            result = is.read();
        }*/

        int result;//返回读取的字符的编码,当返回值为-1,结束,关闭输入流
        while((result = is.read()) != -1){
            System.out.println(result);
        }
        is.close();

        //2
        long l2 = System.currentTimeMillis();
        System.out.println(l2-l1);
    }

}

read(byte [])方法2:一个字节数组一个字节数组的读

import java.io.*;
import java.util.Arrays;
public class Main {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        InputStream is = new FileInputStream("c:\\gx.txt");
        long l1 = System.currentTimeMillis();

        //2一个字节数组一个字节数组的读
        /*byte[] bytes = new byte[10];
        int len = is.read(bytes);//一次实际读取字节的数量
        while(len != -1){
            System.out.println(Arrays.toString(bytes));
            len = is.read(bytes);
        }*/

        byte[] bytes = new byte[10];

        int len = 0;
        while((len = is.read(bytes)) != -1){
            System.out.println(Arrays.toString(bytes));
        }

        long l2 = System.currentTimeMillis();
        System.out.println(l2-l1);
    }

}

输出结果:
[97, 102, 115, 106, 104, 118, 108, 107, 106, 97]
[98, 115, 105, 107, 97, 100, 102, 106, 108, 32]
[120, 122, 105, 107, 97, 59, 112, 59, 97, 115]
[107, 108, 100, 43, 56, 53, 54, 13, 10, 50]
[51, 56, 52, 53, 54, 52, 100, 115, 106, 108]
[83, -60, -38, -76, -26, 118, 107, 122, 67, 104]
[106, 118, 98, 32, 101, 46, 59, 119, 105, 103]
[98, 59, 113, 119, 50, 58, 116, 113, 104, 105]
[111, 59, 113, 119, 50, 58, 116, 113, 104, 105]
0

最后两行:
[98, 59, 113, 119, 50, 58, 116, 113, 104, 105]
[111, 59, 113, 119, 50, 58, 116, 113, 104, 105]
可以知道,最后一次读进去了8个字符(覆盖前8个),最后两个是上一次遗留的,并未覆盖

从一个文件中读取数据写到另一个文件中:

import java.io.*;
import java.util.Arrays;
public class Main {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {
        InputStream is = new FileInputStream("c:\\gx.txt");//从gx.txt文件中读数据。输入流
        OutputStream os = new FileOutputStream("c:\\aa.txt");//向aa.txt文件中写数据。输出流
        long l1 = System.currentTimeMillis();

        byte[] bytes = new byte[10];//一次读这些,一次也写这些

        int len = 0;
        while((len = is.read(bytes)) != -1){
            System.out.println(Arrays.toString(bytes));
//          os.write(bytes);//将一次读的10个写入待写文件.这种方法不可以,可能会多写
            os.write(bytes, 0, len);
        }

        long l2 = System.currentTimeMillis();
        System.out.println(l2-l1);
    }

}

把一个网站的网址当作输入流:

import java.io.*;
import java.net.URL;
import java.util.Arrays;
public class Main {

    /**
     * @param args
     * @throws IOException 
     */
    public static void main(String[] args) throws IOException {

        URL url = new URL("http://www.sdut.edu.cn");//输入流的来源:从一个网址
        InputStream is = url.openStream();

        OutputStream os = new FileOutputStream("c:\\index.html");//输出流的去向
        long l1 = System.currentTimeMillis();

        byte[] bytes = new byte[10];//一次读这些,一次也写这些

        int len = 0;
        while((len = is.read(bytes)) != -1){
            System.out.println(Arrays.toString(bytes));
//          os.write(bytes);//将一次读的10个写入待写文件.这种方法不可以,可能会多写
            os.write(bytes, 0, len);
        }

        long l2 = System.currentTimeMillis();
        System.out.println(l2-l1);
    }

}

不过只有结构,没有样式

版权声明:正在学习中,有错误欢迎指出。感谢比❤❤~ https://blog.csdn.net/gx17864373822/article/details/79958343

使用目录内容建立菜单

目的:根据目录内容,建立一个菜单。菜单项为目录中的文件和子目录(以弹出方式显示)。解决方案:遍历子目录,建立一个文件路径数组。菜单项的ID是数组的索引。当用户单击某个菜单项时,从数组中读取文件路径并执...
  • jiangsheng
  • jiangsheng
  • 2001-08-02 22:58:00
  • 2065

黑马程序员——10_IO_read方法笔记

已字节流为例。 开始对于read方法返回值存在疑问,后通过最返回值打印,进一步确认具体返回内容,确信read()返回为下一个字节数据内容,而read(数组)和read(byte[] b,int of...
  • st88396920
  • st88396920
  • 2015-07-05 22:51:00
  • 231

read方法+read和write一起用

read()方法1:一个字节一个字节的读 import java.io.*; public class Main { /** * @param args * @th...
  • gx17864373822
  • gx17864373822
  • 2018-04-16 11:25:16
  • 8

JAVA IO中read()方法的返回值

以下是不太严谨的个人理解,有错误欢迎指出,共同进步:read()方法的作用是从输入流读取数据的下一个字节,返回的字节的值是一个0~255之间的整数。到达流的末尾返回-1。刚开始我以为这个返回值表示的是...
  • lamyourangle
  • lamyourangle
  • 2016-05-26 21:31:30
  • 4592

io学习之read(char[])方法的使用

public class FileReaderArray { public static void main(String[] args) { try { FileReader fr = new Fi...
  • fjx11223344
  • fjx11223344
  • 2016-07-04 16:00:39
  • 180

java.io.Reader.read()方法实例

Java.io.Reader.read()方法实例  来源:翻译整理    注:由于水平有限,欢迎指正。转载请务必注明出处。 0  上一篇下一篇   jav...
  • evilcry2012
  • evilcry2012
  • 2015-04-16 11:21:06
  • 2284

【IO】InputStream的read(byte[] b)方法

1、从运行结果可以看出: (1)InputStream中的read(byte[] b)方法是:从输入流中读取一定数量的字节,并将其存储在缓冲区数组 b 中。以整数形式返回实际读取的字节数。 (2)...
  • qq_35415600
  • qq_35415600
  • 2017-03-12 00:37:28
  • 860

(转)为什么IO读取流的read方法返回的是int而不是byte的原因!

原地址:http://blog.csdn.net/world_java/article/details/7539467 [java] view plain copy ...
  • duyiqun
  • duyiqun
  • 2017-01-28 14:27:36
  • 654

关于IO包装流中的两个read方法

刚开始学IO流,会经常感到奇怪,为什么read方法返回的都是int类型,而且,在包装流中经常会弄混淆,看了传智播客老师的视频,加上API文档的了解,总算是完全弄懂了。 下面贴出四个包装流的代码,分别...
  • hc1025808587
  • hc1025808587
  • 2014-01-30 19:07:19
  • 781

JAVA语言中<em>read方法</em>分析

数据, 如果需要通过键盘输入数据. InputStream类巾的<em>read方法</em>是最常用的输入方法...java中read()方法返回值解释 JAVA <em>IO</em>中read()方法的返回值 Java学习之Input...
  • 2018年04月13日 00:00
收藏助手
不良信息举报
您举报文章:read方法+read和write一起用
举报原因:
原因补充:

(最多只允许输入30个字)