Java 文件字节字符数据转换

package io;
//: io/BufferToText.java
//Converting text to and from ByteBuffers
import java.nio.*;
import java.nio.channels.*;
import java.nio.charset.*;
import java.io.*;
/*
 * 转换数据:
 * 缓冲器容纳的是普通的字节,为了把他们转换成字符,要么在输入的时候对其进行解码,要么将其从缓冲器输出时对他们进行解码。*/
public class BufferToText {
private static final int BSIZE = 1024;
public static void main(String[] args) throws Exception {

 FileChannel fc = new FileOutputStream("data2.txt").getChannel();
 fc.write(ByteBuffer.wrap("Some text".getBytes()));
 fc.close();
 fc = new FileInputStream("data2.txt").getChannel();
 ByteBuffer buff = ByteBuffer.allocate(BSIZE);
 fc.read(buff);
 buff.flip();
 // Doesn't work:
 System.out.println(buff.asCharBuffer());
 // Decode using this system's default Charset:
 buff.rewind();
 String encoding = System.getProperty("file.encoding");
 System.out.println("Decoded using " + encoding + ": " + Charset.forName(encoding).decode(buff));
 // Or, we could encode with something that will print:
 fc = new FileOutputStream("data2.txt").getChannel();
 fc.write(ByteBuffer.wrap("Some text".getBytes("UTF-16BE")));
 fc.close();
 // Now try reading again:
 fc = new FileInputStream("data2.txt").getChannel();
 buff.clear();
 fc.read(buff);
 buff.flip();
 System.out.println(buff.asCharBuffer());
 // Use a CharBuffer to write through:
 fc = new FileOutputStream("data2.txt").getChannel();
 buff = ByteBuffer.allocate(24); // More than needed
 buff.asCharBuffer().put("Some text");
 fc.write(buff);
 fc.close();
 // Read and display:
 fc = new FileInputStream("data2.txt").getChannel();
 buff.clear();
 fc.read(buff);
 buff.flip();
 System.out.println(buff.asCharBuffer());
}
} 

时间: 2024-07-30 23:54:55

Java 文件字节字符数据转换的相关文章

Java——文件操作字符流和字节流的区别

转:http://blog.csdn.net/joephoenix/articles/2283165.aspx java的IO流分两种流 字节流 InputStream OutputStream 字符流 Reader Writer 他们都是抽象类 具体实现 字节流 FileInputStream FileOutputStream 字符流 FileReader FileWriter 字符流处理的单元为2个字节的Unicode字符,分别操作字符.字符数组或字符串,而字节流处理单元为1个字节,操作字节

java中的字符与字节

经常听大家谈论"java使用的是Unicode编码",真不知道他们是真知道,还人云亦云 ! 首先说一下,java中class文件中使用的是utf-8编码,而在jvm运行时使用的是utf-16(如char). 一.字节的形式写.读取文件 // 以字节流的形式写出 FileOutputStream out = new FileOutputStream("text.txt"); out.write("IamChinese".getBytes("

Android——检测TXT文件中是否含有双字节字符

在读取双字节字符时,主要涉及到编码的选取: Java代码   public static boolean isRightfulTXT(File f) { // TODO Auto-generated method stub String regexp="[^\\x00-\\xff]";//双字节字符 Pattern p=Pattern.compile(regexp); try { FileInputStream fis=new FileInputStream(f); //"G

由“Java中一个字符占两个字节”引起

起因 Java中一个字符占两个字节,这和C/C++稍有区别.在C/C++中我们可以通过sizeof运算符方便地知道某个变量类型或对象的大小,那在Java中又如何? 问题出现 Java为什么没有提供sizeof运算符? 要回答这个问题,我们可以从另一个角度来看,那就是为什么C/C++中提供sizeof运算符.这就让人忍不住想到C/C++和Java在内存管理上的区别. 在C中,内存分配和释放的任务交给了程序员,当我们尝试用malloc为某个对象分配一块堆内存时,一个无法逃避的问题是,这个即将被创建的

JAVA之旅(二十五)——文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine

JAVA之旅(二十五)--文件复制,字符流的缓冲区,BufferedWriter,BufferedReader,通过缓冲区复制文件,readLine工作原理,自定义readLine 我们继续IO上个篇幅讲 一.文本复制 读写都说了,我们来看下其他的操作,我们首先来看复制 复制原理:其实就是将C盘下的文件数据存储到D盘的一个文件中 实现的步骤: 1.在D盘创建一个文件,用于存储文件中的数据 2.定义读取流和文件关联 3.通过不断的读写完成数据的存储 关闭资源 package com.lgl.hel

jdk编译java文件时出现:编码GBK的不可映射字符

出现此问题的几种解决办法: 1.cmd下使用javac编译java文件 如: javac test.java 解决办法:编译时加上encoding选项 javac -encoding UTF-8 test.java or javac -encoding UTF-8 -d . test.java 2.IntelliJ IDEA 导入单独的java文件时编译出现此错误   解决办法:由于IDEA不具有自动转换字符编码类型,所以需要先点击右下角的UTF-8保存为GBK类型保存,再次点击点击GBK保存为

Java以缓冲字符流向文件写入内容(如果文件存在则删除,否则先创建后写入)

功能:Java以缓冲字符流向文件写入内容(如果文件存在则删除,否则先创建后写入) public void Save_local(XinJian xinJian,String files) throws Exception//xieru xinjian de xiangxi xingxi { File file=new File("D:\\javaxiangmu\\beiJinXinJian\\WebContent\\outfile"+File.separator+files); //要

java文件读写操作

Java IO系统里读写文件使用Reader和Writer两个抽象类,Reader中read()和close()方法都是抽象方法.Writer中 write(),flush()和close()方法为抽象方法.子类应该分别实现他们. Java IO已经为我们提供了三个方便的Reader的实现类,FileReader,InputStreamReader和BufferedReader.其中最重要的类是InputStreamReader, 它是字节转换为字符的桥梁.你可以在构造器重指定编码的方式,如果不

Java IO4:字符编码

前言 字符编码,这本不属于IO的内容,但字节流之后写的应该是字符流,既然是字符流, 那就涉及一个"字符编码的"问题,考虑到字符编码不仅仅是在IO这块,Java中很多场景都涉及到这个概念,因此这边文章就专门详细写一下字符编码,具体 的网上有很多,但本文目的是尽量讲清楚各种编码方式的作用,个人认为,不求.也没有必要对字符编码理解地多么深入. 字符集和字符编码 第一个概念就是字符集和字符编码之间的区别: 1.字符集(charset) 字符集指的是一个系统支持的所有抽象字符的集合.字符是各种文