Java IO流
《文件传输基础——Java IO流》学习笔记 1.编码问题 main(String[] args) = "慕课ABC"[] bytes1 = s.getBytes();
(
System.out.print(Integer.toHexString(b & 0xff) + " "
</span><span style="color: #0000ff;">byte</span>[] bytes2 = s.getBytes("gbk"<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">c4 bd bf ce 41 42 43
</span><span style="color: #008000;">//</span><span style="color: #008000;">gbk 中文占2个字节 英文占1个字节</span>
<span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">byte</span><span style="color: #000000;"> b: bytes2) {
System.out.print(Integer.toHexString(b </span>& 0xff) + " "<span style="color: #000000;">);
}
System.out.println();
</span><span style="color: #0000ff;">byte</span>[] bytes3 = s.getBytes("utf-8"<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">e6 85 95 e8 af be 41 42 43
</span><span style="color: #008000;">//</span><span style="color: #008000;">utf-8 中文占3个字节 英文占1个字节</span>
<span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">byte</span><span style="color: #000000;"> b: bytes3) {
System.out.print(Integer.toHexString(b </span>& 0xff) + " "<span style="color: #000000;">);
}
System.out.println();
</span><span style="color: #008000;">//</span><span style="color: #008000;"> Java是双字节编码utf-16be</span>
<span style="color: #0000ff;">byte</span>[] bytes4 = s.getBytes("utf-16be"<span style="color: #000000;">);
</span><span style="color: #008000;">//</span><span style="color: #008000;">61 55 8b fe 0 41 0 42 0 43
</span><span style="color: #008000;">//</span><span style="color: #008000;">utf-16be中文占2个字节 英文占2个字节</span>
<span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">byte</span><span style="color: #000000;"> b: bytes4) {
System.out.print(Integer.toHexString(b </span>& 0xff) + " "<span style="color: #000000;">);
}
System.out.println();
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
* 当字节序列采用某种编码时 将字节序列转换成字符串 也需要使用相同编码
</span><span style="color: #008000;">*/</span><span style="color: #000000;">
String str1 </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> String(bytes4);
System.out.println(str1); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 乱码</span>
String str2 = <span style="color: #0000ff;">new</span> String(bytes4,"utf-16be"<span style="color: #000000;">);
System.out.println(str2); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 正常</span>
<span style="color: #000000;"> } 文本文件 就是字节序列 可以是任意编码的字节序列 如果在中文机器上直接创建文本文件,那么该文件只认识ANSI编码,但是粘贴过来的文件可以是任意格式。 Eclipse中一个只能识别项目默认的编码。 2.File类 Java.io.File类用于表示文件/目录 File只用于表示文件信息(名称、大小等),不能用于文件内容的访问。 <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.File;
<span style="color: #0000ff;">import<span style="color: #000000;"> java.io.IOException; <span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> FileDemo {
<span style="color: #000000;"> e.printStackTrace(); <div class="cnblogs_code" onclick="cnblogs_code_show('26e1cc31-9d94-4b40-a01a-bb669f3740df')"> <span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> FileUtils { <span style="color: #008000;"> 列出指定目录下(包括子目录)所有文件<span style="color: #0000ff;">public <span style="color: #0000ff;">static <span style="color: #0000ff;">void listDirectory(File dir) <span style="color: #0000ff;">throws<span style="color: #000000;"> IOException { <span style="color: #0000ff;">if (!<span style="color: #000000;">dir.exists()) { <span style="color: #0000ff;">throw <span style="color: #0000ff;">new IllegalArgumentException("目录:" + dir + "不存在."<span style="color: #000000;">); } <span style="color: #0000ff;">if (!<span style="color: #000000;">dir.isDirectory()) { <span style="color: #0000ff;">throw <span style="color: #0000ff;">new IllegalArgumentException(dir+"不是目录."<span style="color: #000000;">); } <span style="color: #008000;">//<span style="color: #008000;">String[] filenames = dir.list(); <span style="color: #008000;">//<span style="color: #008000;"> 返回子目录名称的字符处数组 File[] files =<span style="color: #000000;"> dir.listFiles(); <span style="color: #0000ff;">for<span style="color: #000000;"> (File file: files) { <span style="color: #0000ff;">if<span style="color: #000000;"> (file.isDirectory()) { FileUtils.listDirectory(file); } <span style="color: #0000ff;">else<span style="color: #000000;"> { System.out.println(file); } } }
} 3.RandomAccessFile Java提供的对文件内容的访问类,读写文件。可以随机访问文件。 Java文件模型,在硬盘上是Byte存储,是数据的集合。 打开文件,有两种模式"rw"(读写),"r"(只读) 写方法,raf.write(int)-->只写一个字节(后八位) 读方法, int b=raf.read()-->读一个字节 读完文件一定要关闭。 <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.File;
<span style="color: #0000ff;">import<span style="color: #000000;"> java.io.IOException; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.RandomAccessFile; <span style="color: #0000ff;">import<span style="color: #000000;"> java.util.Arrays; <span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> RafDemo {
<span style="color: #000000;"> raf.writeInt(i);
} 4.字节流(char流)InputStream/OutputStream 1)字节流 InputStream(抽象类)抽象了应用程序读取数据方式 OutputStream(抽象类)抽象了应用程序写数据方式 2)EOF= End 读到-1就读到结束 3)输入流基本方法 int b = in.read();//读取一个字节填充到int第八位 -1是EOF in.read(byte[] buf) in.read(byte p[] buf,int start,int size); 4)输出流基本方式 out.write(int b) 写一个byte到流 out.write(byte[] buf) 将buf字节数组写入到流 out.write(byte[] buf,int size); 5)FileInputStream--->具体实现了在文件上读取数据
<div class="cnblogs_code" onclick="cnblogs_code_show('bec021d9-2061-48db-a56a-06190910b4bb')"> <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.BufferedInputStream;<span style="color: #0000ff;">import<span style="color: #000000;"> java.io.BufferedOutputStream; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.DataInputStream; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.DataOutputStream; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.File; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.FileInputStream; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.FileNotFoundException; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.FileOutputStream; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.IOException; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.InputStream; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.ObjectInputStream; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.ObjectOutputStream; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.OutputStream; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.Serializable; <span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> TestIOStream {
<span style="color: #000000;"> out.write(i);
<span style="color: #000000;"> testDataStream(); 5.字符流 字符流处理的一般是文本文件 1、字符流的基本实现 ??完成byte流解析为char流,按照编码解析 ??提供char流到byte流。 2、 FileWriter/FileWriter : 和InputStreamReader/OutputStreamWriter功能差不多,但是字符编码等设置是默认的。 3、字符流的过滤器 BufferedReader/BufferedWriter <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.BufferedReader;
<span style="color: #0000ff;">import<span style="color: #000000;"> java.io.BufferedWriter; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.FileInputStream; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.FileNotFoundException; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.FileOutputStream; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.FileReader; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.FileWriter; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.IOException; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.InputStream; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.InputStreamReader; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.OutputStreamWriter; <span style="color: #0000ff;">import<span style="color: #000000;"> java.io.PrintWriter; <span style="color: #0000ff;">public <span style="color: #0000ff;">class<span style="color: #000000;"> TestCharSteam {
<span style="color: #000000;">
<span style="color: #008000;">//<span style="color: #008000;"> BufferedWriter bw = new BufferedWriter(
<span style="color: #000000;"> testBuffered(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |