文档章节

<BIO>以字节的方式(写入,读取)文本,以字符的方式(写入,读取)文本和<NIO>的写入,读取

1527
 1527
发布于 2016/05/08 00:34
字数 518
阅读 57
收藏 5
点赞 2
评论 0
package v2ch01.textFile;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;

import org.junit.Test;

public class FileTest {


	/**
	 * 以字符的方式写入文本
	 * @throws FileNotFoundException
	 * @throws UnsupportedEncodingException
	 */
	@Test
	public  void writeWenBen() throws FileNotFoundException, UnsupportedEncodingException {

		PrintWriter out = new PrintWriter(new File("e://test.txt"),"utf-8");
		out.write("abcde");
//		out.flush();
		out.close();
		
	}
	
	/**
	 * 以字符的方式读取文本
	 * @throws FileNotFoundException
	 */
	@Test
	public void readWenBen() throws FileNotFoundException{
		
		Scanner scanner = new Scanner(new FileInputStream(new File("e://test.txt")), "utf-8");
		while(scanner.hasNext())
			System.out.println(scanner.nextLine());
		
	}
	
	
	/**
	 * 以字节的方式写入文本
	 * @throws FileNotFoundException
	 */
	@Test
	public void writeByte() throws FileNotFoundException{
		
		OutputStream outputStream = new FileOutputStream(new File("e://test.txt"));
		String str = "I LOVE YOU EVE ";
		char[] ch = str.toCharArray();
//		char[] ch = {'a','b','c','d'};
		for (char c : ch) {
			try {
				outputStream.write(c);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		try {
			outputStream.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 以字节的方式读取文本
	 */
	@Test
	public void readByte(){
		
		try {
			InputStream inputStream = new BufferedInputStream(new FileInputStream("e://test.txt"));
			int i=0;
			StringBuilder builder = new StringBuilder();
			while((i=inputStream.read())!=-1){
				
				
				builder.append((char)i);
			}
			System.out.println(builder.toString());
			inputStream.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}
}

java NIO从一个文件写到另一个文件

    /**
     *通道之间的数据传输
     * transferFrom()方法将数据源从通道传输到FileChannel中
     * @throws IOException
     */
    @Test
    public void transferFrom() throws IOException{
        
        RandomAccessFile fromFile = new RandomAccessFile("e://1.txt", "rw");
        FileChannel fromChannel = fromFile.getChannel();
        
        RandomAccessFile toFile = new RandomAccessFile("e://2.txt", "rw");
        FileChannel toChannel = toFile.getChannel();
        
        long position = 0;
        long count = fromChannel.size();
        
        toChannel.transferFrom(fromChannel, position, count);
    }
    
    /**
     * transferTo()方法将数据从FileChannel传输到其他的channel中
     * @throws IOException
     */
    @Test
    public void transferTo() throws IOException{
        
        RandomAccessFile fromFile = new RandomAccessFile("e://1.txt", "rw");
        FileChannel fromChannel = fromFile.getChannel();
        
        RandomAccessFile toFile = new RandomAccessFile("e://2.txt", "rw");
        FileChannel toChannel = toFile.getChannel();
        
        long position=0;
        long count = fromChannel.size();
        
        fromChannel.transferTo(position, count, toChannel);
    }
    

Java NIO读取文件(可能中文输出乱码)

/**
     * FileChannel无法设置为非阻塞模式,总是运行在阻塞模式下
     * @throws IOException 
     */
    @Test
    public void testReadFromChannel() throws IOException{
        
        Charset charset = Charset.forName("utf-8");
        
        RandomAccessFile file = new RandomAccessFile(new File("e://2.txt"), "rw");
        FileChannel channel = file.getChannel();
        
        ByteBuffer buf = ByteBuffer.allocate(40000);
        int byteRead = channel.read(buf);
        
        StringBuilder sb = new StringBuilder();
        
        while(byteRead!=-1){
            
            buf.flip();
            while(buf.hasRemaining()){
                sb.append((char)buf.get());
            }
            buf.clear();
            byteRead = channel.read(buf);
        }
        
        System.out.println(sb.toString());
        
        
    }

Java NIO写数据到文件

/**
     * 向FileChannel中写数据
     * @throws IOException 
     */
    @Test
    public void testWriteToChannel() throws IOException{
        
        @SuppressWarnings("resource")
        RandomAccessFile file = new RandomAccessFile("e://2.txt", "rw");
        FileChannel channel = file.getChannel();
        String newData = "New String to write to 我是阿凡达 ..... "+System.currentTimeMillis();
        ByteBuffer buf = ByteBuffer.allocate(1024);
        buf.clear();
        
        buf.put(newData.getBytes());
        buf.flip();
        
        while(buf.hasRemaining()){
            channel.write(buf);
        }
        
        channel.close();
    }

 

 

 

© 著作权归作者所有

共有 人打赏支持
1527
粉丝 5
博文 86
码字总数 34652
作品 0
成都
程序员
理解Java中字符流与字节流的区别

什么是流 字节流 public abstract int read() throws IOException; public int read(byte b[]) throws IOException { } public int read(byte b[], int off, int len) throws IOException {......

清尘V
2016/04/21
105
0
Java文件操作中流编码格式的设定 及 嵌套流的使用

文件读操作: BufferedReader: 可以从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。也可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,我们都是使用...

地瓜2013
2014/09/24
0
0
NIO入门教程

关于本教程 新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的。NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。通过定义包含数据的类,以及通过以块的形式处理...

磨砂轮
2016/09/22
9
0
Java【基础系列】-文件编码与格式

本章主题: 简要的回顾java的基础知识 读文件: BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。 可以指定缓冲区的大小,或者可使用默认的大小。...

止静
2014/07/31
0
0
Java IO流(二)

IO流常用基类 字节流的抽象基类: 字符流的抽象基类: 注意:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀的。例如,InputStream的子类——FileInputStream,Reader的子类—...

yerenyuan_pku
2017/10/14
0
0
流之阅读器和书写器(过滤器阅读器和过滤器书写器)

InputStreamReader和OutputStreamWriter类就是相当于输入和输出流之上的装饰器,把面向字节的接口改为面向字符的接口。完成之后,就可以在它们之上使用面向字符的过滤器阅读器或过滤器书写器...

柳哥
2014/10/31
0
0
文件操作之 ADODB.Stream

示例: set stream = Server.CreateObject("ADODB.Stream") stream.mode = 3 '1-读,2-写,3-读写 stream.type = 1 '1-二进制,2-文本 stream.Open dataStream.position = index dataSt......

哈狮子
2015/02/10
0
0
14. Java NIO vs IO

当学习Java的NIO和IO时,有个问题会跳入脑海当中:什么时候该用IO,什么时候用NIO? 下面的章节中笔者会试着分享一些线索,包括两者之间的区别,使用场景以及他们是如何影响代码设计的。 NI...

逝去的回忆
2016/11/19
7
0
Java IO--字符流--BufferedReader和BufferedWriter

从昨天开始没事情干时,决定梳理梳理Java IO流,因为觉得太混乱这个东西,妈的,咋就这么多类型,想累死谁啊,这里并不是埋怨创造者,而是气自己看着看着老跑偏,实在看不进去,太多了,想睡...

黑色code
2016/12/14
9
0
Learn Python3:IO操作

一、读文件 1、读取整个文件 准备好一个非空的txt文件 在和中,文件路径中使用斜杠(),在Windows中,文件路径中使用反斜杠(),但是为了防止反斜杠和后边跟的字母发生转义,建议在路径前加...

Othershe
2017/11/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

javascript前端AES加密解密

参考了一下网上的代码加上自已的一些想法,修改,key也可以是中文, 要引入一个aes.js的js文件。 html代码 <html> <head> <title>AES加解密</title> <meta http-equiv="Content-Type"......

oisan_
11分钟前
0
0
MacOS和Linux内核的区别

有些人可能认为MacOS和Linux内核有相似之处,因为它们可以处理类似的命令和类似的软件。甚至有人认为苹果的MacOS是基于linux的。事实上,这两个内核的历史和特性是非常不同的。今天,我们来看...

六库科技
15分钟前
0
0
Vue.js-自定义事件例子

自定义组件的 v-model 2.2.0+ 新增 一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,但是像单选框、复选框等类型的输入控件可能会将 value 特性用于不同的目的。m...

tianyawhl
18分钟前
0
0
mybatis中获取sqlSession的源码分析

0 SqlSessionFactoryBuilder类 SqlSessionFactoryBuilder sqlSessionFacotory=SqlSessionFactoryBuilder().build(reader) public SqlSessionFactory build(Reader reader) { return build(re......

writeademo
19分钟前
0
0
RobotThread.cpp

#include "RobotThread.h"RobotThread::RobotThread(int argc, char** pArgv, const char * topic) :m_Init_argc(argc), m_pInit_argv(pArgv), m_topic(topic){/** ......

itfanr
21分钟前
0
0
防御ddos攻击的常见方法

DDoS攻击是一种特殊形式的拒绝服务攻击。它利用多台已经被攻击者所控制的机器对某一台单机发起攻击,在带宽相对的情况下,被攻击的主机很容易失去反应能力。分布式拒绝服务攻击(DDoS) 是一种...

上树的熊
21分钟前
0
0
Vue全家桶问题合集(很多eslint规范问题)

自己使用Vue全家桶问题合集(很多eslint规范问题) 遇到很多问题一一道来。 1.vue报错 Do not use built-in or reserved HTML elements as component id:header 组件,不能和html标签重复 he...

kisshua
23分钟前
0
0
Spring框架中的设计模式(四)​

Spring框架中的设计模式(四) 本文是Spring框架中使用的设计模式第四篇。本文将在此呈现出新的3种模式。一开始,我们会讨论2种结构模式:适配器和装饰器。在第三部分和最后一部分,我们将讨...

瑞查德-Jack
28分钟前
0
0
如何玩转小程序+公众号?手把手教你JeeWx小程序CMS与公众号关联

随着微信小程序新功能、新入口的不断更新,小程序的商业价值逐步增强,特别是小程序与公众号的深度融合,已经让小程序成为各行业新的营销渠道。Jeewx平台专注小程序的开发,逐步完善小程序生...

Jeecg
34分钟前
0
0
IDEA开发vue.js卡顿

由于新项目使用了vue.js。在执行cnpm install后会在node_modules这个文件下面生成vue的相关依赖文件,这个时候当执行npm run dev命令时,会导致IDEA出现卡死的问题。 解决办法:在idea中设置...

落雪飞声
36分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部