精华内容
下载资源
问答
  • Java 字节流读写文件

    千次阅读 2019-05-07 09:49:31
    Java字节流读写文件 针对文件的读写,JDK专门提供了两个类,分别是 FileInputStream 和 FileOutputStream ,它们都是InputStream 的子类。 FileInputStream 是操作文件的字节输入流,专门用于读取文件中的数据。 ...

    Java:字节流读写文件

    针对文件的读写,JDK专门提供了两个类,分别是 FileInputStreamFileOutputStream ,它们都是InputStream 的子类。

    • Example01:以字节流形式读取文件中的数据
    • Example02:将数据以字节流形式写入文件(覆盖文件内容)
    • Example03:将数据以字节流形式写入文件(追加文件内容)

    1.FileInputStream 是操作文件的字节输入流,专门用于读取文件中的数据。

    public class Example01 {
       public static void main(String[] args) throws IOException  {
       	FileInputStream in = new FileInputStream("Example1.txt");
       	int b = 0;
       	while(true) {
       		b = in.read();
       		if(b == -1) {
       			break;
       		}
       		System.out.println(b);
       	}
       	in.close();	
       }
    }
    

    注意:首先要确保文件 Example1.txt 存在并且可读,否则会抛出文件找不到的异常 FileNotFoundException

    2.FileOutputStream 是操作文件的字节输出流,专门用于把数据写入文件。

    public class Example02 {
    	public static void main(String[] args) throws IOException {
    		//创建一个文件字节输出流
    		FileOutputStream out = new FileOutputStream("Example2.txt");
    		String str = "****写入数据****";
    		byte[] b = str.getBytes();
    		for(int i=0; i<b.length; i++) {
    			out.write(b[i]);
    		}
    		out.close();
    	}
    }
    

    注意:程序运行后,会自动生成一个新的文本文件 Example2.txt 。如果 Example2.txt 已经存在数据,那么该文件中的数据会先被清空,再写入新的数据。

    3.FileOutputStream 的构造函数 FileOutputStream(String fileName,boolean append) ,用于把数据追加写入文件。

    public class Example03 {
    	public static void main(String[] args) throws IOException {		
    		FileOutputStream out = new FileOutputStream("Example2.txt", true);		
    		String str = "----追加数据----";		
    		byte[] b = str.getBytes();
    		for(int i=0; i<b.length; i++) {
    			out.write(b[i]);
    		}
    		out.close();
    	}
    }
    

    注意:程序通过字节输出流对象向文件 Example2.txt 追加了数据。

    由于IO流在进行数据读写操作时会出现异常,如果一旦遇到异常,IO流的 close() 方法将无法得到执行,流对象所占有的系统资源将得不到释放,因此,为了保证IO流的 close() 方法必须执行,通常将关闭流的操作写在 finally 代码块中。

    finally{
    	try{
    		if(in != null)
    			in.close();
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    	try{
    		if(out != null)
    			out.close();
    	}catch(Exception e){
    		e.printStackTrace();
    	}
    }
    

    希望能够帮助到大家! Java:字节数组和字符串的相互转化

    展开全文
  • JAVA字节流读写中文

    千次阅读 2019-02-08 21:24:16
    1.字节流读取中文的问题 字节流在读中文的时候有可能会读到半个中文,造成乱码  2.字节流写出中文的问题 字节流直接操作的字节,所以写出中文必须将字符串转换成字节数组,写出回车换行 write("\r\n"....

    一、问题

    1.字节流读取中文的问题

    字节流在读中文的时候有可能会读到半个中文,造成乱码 

    2.字节流写出中文的问题

    字节流直接操作的字节,所以写出中文必须将字符串转换成字节数组,写出回车换行 write("\r\n".getBytes());

    二、代码

    public static void main(String[] args) throws IOException {
       FileInputStream fis = new FileInputStream("yyy.txt");
       FileOutputStream fos = new FileOutputStream("zzz.txt");
    
       byte[] arr = new byte[4];
       int len;
       while((len = fis.read(arr)) != -1) {
          fos.write(new String(arr,0,len).getBytes());
       }
       fos.write("\r\n".getBytes());
       fos.write("我读书少,你不要骗我".getBytes());
    
       fis.close();
       fos.close();
    }

     

    展开全文
  • Java字节流与字符流读写文件

    万次阅读 2018-12-11 19:04:04
    字节流读写 Java中文件读写有多种方式,但有一种读写方式可以处理任何场景的文件读写,就是字节流的读写。 package com.main.stream; import java.io.File; import java.io.FileInputStream; import java.io....

     

    字节流读写

    Java中文件读写有多种方式,但有一种读写方式可以处理任何场景的文件读写,就是字节流的读写。

    package com.main.stream;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    /**
     * 字节流文件读写
     * @author PC
     *
     */
    public class FileRwByByte {
    
    	public static void main(String[] args) throws IOException {
    		// 定义源文件
    		File file = new File("D:\\springboot学习\\34116codes.zip");
    		InputStream fis = new FileInputStream(file);
    		
    		// 获取文件名
    		String fileName = file.getName();
    		
    		// 定义写文件路径
    		String aimPath = "E:\\stream\\" + fileName;
    		OutputStream fos = new FileOutputStream(aimPath);
    		
    		// 定义字节,接收读取到的源文件字节内容
    		int by;
    		while ((by = fis.read()) != -1) {
    			fos.write(by);
    		}
    		
    		fos.flush();
    		fis.close();
    		fos.close();
    	}
    }

    这里按照一个字节一个字节的读取,将读取到的字节写入到新的文件中,达到文件复制粘贴的效果。

    上面程序可以正常执行,但是执行过程中,如果遇到10MB 以上的文件,可能会感觉特别的慢,原因就在于,程序中一个字节一个字节的读取,会增大文件读写的次数。

     

    如何改进,使用字节数组,一次读取多个字节,减少文件读写次数,提交程序执行效率。

    将程序中,按照字节单字节读取的部分,修改为按照字节数组读取。这时,输入流一次读取1024个字节,然后将读取到的字节直接输出写到文件中,大大增加程序的整体效率。

    // 定义字节数组,接收读取到的源文件字节内容
    byte[] bytes = new byte[1024];
    while (fis.read(bytes) != -1) {
    	fos.write(bytes);
    }

    附整段代码

    package com.main.stream;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    /**
     * 字节流文件读写
     * @author PC
     *
     */
    public class FileRwByByte {
    
    	public static void main(String[] args) throws IOException {
    		// 定义源文件
    		File file = new File("D:\\springboot学习\\34116codes.zip");
    		InputStream fis = new FileInputStream(file);
    		
    		// 获取文件名
    		String fileName = file.getName();
    		
    		// 定义写文件路径
    		String aimPath = "E:\\stream\\" + fileName;
    		OutputStream fos = new FileOutputStream(aimPath);
    		
    		// 定义字节数组,接收读取到的源文件字节内容
    		byte[] bytes = new byte[1024];
    		while (fis.read(bytes) != -1) {
    			fos.write(bytes);
    		}
    		
    		fos.flush();
    		fis.close();
    		fos.close();
    	}
    }

     

    字符流读写

    上面看了字节流的读写,有单字节的读写和读取字节数组两种方式。同样,字符流的读写也有单字符读写和字符数组两种方式。

    package com.main.stream;
    
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Reader;
    import java.io.Writer;
    
    /**
     * 字符流文件读写
     * @author PC
     *
     */
    public class FileReaderDemo {
    
    	public static void main(String[] args) throws IOException {
    		// 定义源文件
    		File file = new File("E:\\test.txt");
    		Reader reader = new FileReader(file);
    		
    		// 获取文件名
    		String fileName = file.getName();
    		
    		// 定义写文件路径
    		String aimPath = "E:\\stream\\" + fileName;
    		Writer writer = new FileWriter(aimPath);
    		
    		// 定义字符,接收读取到的源文件字符内容
    		int ch;
    		while ((ch = reader.read()) != -1) {
    			writer.write(ch);
    		}
    		
    		writer.flush();
    		writer.close();
    		reader.close();
    	}
    }
    

    同样的原因,单字符读写会稍微慢一点,那么换字符数组读取呢?

    // 定义字符数组,接收读取到的源文件字符内容
    char[] chars = new char[1024];
    while (reader.read(chars) != -1) {
    	writer.write(chars);
    }

    只需要将读写操作方式的按单字符读写修改为按照数组的方式即可。

    附完整代码:

    package com.main.stream;
    
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.Reader;
    import java.io.Writer;
    
    /**
     * 字符流文件读写
     * @author PC
     *
     */
    public class FileReaderDemo {
    
    	public static void main(String[] args) throws IOException {
    		// 定义源文件
    		File file = new File("E:\\test.txt");
    		Reader reader = new FileReader(file);
    		
    		// 获取文件名
    		String fileName = file.getName();
    		
    		// 定义写文件路径
    		String aimPath = "E:\\stream\\" + fileName;
    		Writer writer = new FileWriter(aimPath);
    		
    		// 定义字符数组,接收读取到的源文件字符内容
    		char[] chars = new char[1024];
    		while (reader.read(chars) != -1) {
    			writer.write(chars);
    		}
    		
    		writer.flush();
    		writer.close();
    		reader.close();
    	}
    }
    

     

    纯粹防止自己忘记,文章记录。

    展开全文
  • java IO字节流读写操作
    package com.yang.stream;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class FileDemo {
        public static void main(String[] args) {
            String oldpath = "d:/a.txt";
            String newpath = "d:/b.txt";
            BufferedInputStream in = null;
            BufferedOutputStream os = null;
            try {
                in = new BufferedInputStream(new FileInputStream(new File(oldpath)));
                os = new BufferedOutputStream(new FileOutputStream(new File(newpath)));
                byte[] b = new byte[1024];
                int len = 0;
                while((len=in.read(b))!=-1){
                    os.write(b, 0, len);
                }
                os.flush();
            } catch (FileNotFoundException e) {
                System.out.println("文件不存在");
            } catch (IOException e) {
                System.out.println("输入输出异常");
            } finally {
                if(os!=null){
                    try {
                        os.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                if(in!=null){
                    try {
                        in.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
            System.out.println("文件传输成功");
        }
    }
    
    展开全文
  • 输入经常会看到read(参数:通常为数组),作用是把文件中的数据读取到该数组中,以提高效率(该数组叫做字节流缓冲区); 输出中的参数数组的形式为 write(数组) ,作用是把该数组中的数据写入到输出流中(输出...
  • 简单的文件读写 public static void main(String[] args) { String inFile = "D:\\Program Files (x86)\\kqUpJPG\\1.jpg"; String outFile = "D:\\Program Files (x86)\\2.jpg"; FileInputStream input = ...
  • Java基础-3】吃透Java IO:字节流、字符流、缓冲流

    万次阅读 多人点赞 2020-09-23 20:12:33
    什么是Java-IO?字符流和字节流的区别与适用场景是什么?缓冲流到底实现了什么?如何高效地读写文件? 本文用大量的示例图和实例,带你吃透Java IO。
  • import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamRea...
  • Java_基础—字节流读写中文

    千次阅读 2017-07-24 09:35:37
    * 字节流读取中文的问题 * 字节流在读中文的时候有可能会读到半个中文,造成乱码 * 字节流写出中文的问题 * 字节流直接操作的字节,所以写出中文必须将字符串转换成字节数组 * 写出回车换行 write("\r\n"....
  • c++,java,php,c# 的网络字节流读写文件,文件的所有读写方式都采用的是大端,只有php有大端和小端2种选择。
  • 浅谈JAVA字节流读写文件)

    千次阅读 2014-02-12 17:41:21
    此抽象类是表示字节输入的所有类的超类。需要定义 InputStream 的子类的应用程序必须始终提供返回下一个输入字节的方法。  int available()  返回此输入方法的下一个调用方可以不受阻塞地从此输入读取...
  • JAVA IO :使用带缓冲的字节流读写数据 /**  * 使用带缓冲的字节流读取数据  * 比没有使用缓冲的方法COP所用的时间要长很多  * BufferedInputStream():带缓冲的字节流  *  */ public class ...
  • java字节流形式读写文件

    千次阅读 2017-08-21 22:15:13
    java中以字节流的形式读取文件采用的是FileInputStream,将指定路径的文件以字节数组的形式循环读取,代码如下:public void ReadFileByByte(String path){ try { int length = 0; byte[] Buff = new byte...
  • java:IO流(字节流读写中文)

    千次阅读 2018-10-26 18:27:02
    * 字节流读取中文的问题  * 字节流在读中文的时候有可能会读到半个中文,造成乱码  FileInputStream fis=new FileInputStream("yyy.txt"); byte[] arr=new byte[4]; int len; while((len=fis....
  • java处理文件的类里面,stream结尾都是采用字节流,reader和writer结尾都是采用字符流。两者的区别就是读写的时候一个是按字节读写,一个是按字符。 字符流的底层就是字节流。而字符流主要是读取文本文件内容的,...
  • java import java.io.*; public class ShowFile { public static void main(String[] args) { int i; String filename = "1.txt"; //要打开文件的名称 FileInputStream fin=null; //fin初始化为空 ...
  • 1、IO的分类A、按照流向【参照物JVM】 输入流 : 读取数据 ...(1)字节流 a、字节输入流 读取数据 InputStream b、字节输出流 写出数据 OutputStream (2)字符流 a、字符输入流 读取数据 Read
  • Java 字节流实现文件读写操作(InputStream-OutputStream) 备注:字节流比字符流底层,但是效率底下。 字符流地址:http://pengyan5945.iteye.com/blog/1092354 package com.frank.io; import ...
  • //仅作为学习笔记 ...字节流(操作图片要用到字节流) InputStream (读) OutputStream(写) 需求:想要操作图片数据,这时就需要用到字节流 */ import java.io.*; class FileStream { public s
  • 前言 Java有一套非常强大的文件...在字节流中,我们使用FileOutputStream进行对字节的输出。字节的表示可以使用byte表示单个的字节,也可以使用byte[] 表示字节数组。主要的方法除了常规的打开和关闭文件,主要有 r...
  • 新手小白学JAVA IO流 File 字节流 字符流

    万次阅读 多人点赞 2021-05-17 22:23:59
    IO简介 1 流Stream 在学习IO流之前,我们首先需要学习的概念就是Stream流 为了方便理解,我们可以把数据的读写...在java中,根据处理的数据单位不同,可以把流分为字节流和字符流 字节流 : 针对二进制文件 字符流 : 针对
  • 字节流 InputStream(读)和OutputStream(写) 其实字节流和字符流很相似,我们掌握其中的规律即可掌握。 任务1:用字节流将数据写入目标文本 import java.io.*; public class FileStream { public ...
  • 文章目录java中以二进制方式读写主要有:1. InputStream/OutputStream1.1 InputStream java中的文件主要分为两大类,一类按照二进制的方式处理文件;另一类按照文本的方式处理; 其中,按照二进制方式进行处理...
  • 不能将很大数据内容一次...例子:大文件字节流读写,输入输出流的关闭,try、catch用法import java.io.*; class test { public static void main(String[] args) { //声明输入流引用,字节输入常用类FileInputStream
  • import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; public cla

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 84,949
精华内容 33,979
关键字:

java字节流读写方式

java 订阅