Java IO流
Posted 菜菜小谭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java IO流相关的知识,希望对你有一定的参考价值。
字节 字符
输入 InputStream Reader
输出 OutputStream Writer
**********************字节写***********************************
FileOutputStream
1.public void write(int b) throws IOException
每次写1个字节
2.public void write(byte[] b) throws IOException
每次写1个字节数组
知识点:
1. 写的时候 如果运行2次,第二次还会创建一个新的文件,重新写(相当于覆盖)
建立通道的时候 传入一个boolean类型的变量 true 表示追加
2. 产生的文件的编码方式 由 getBytes("utf-8") 决定
演示代码:
package com.chapter13.演示字节写;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
/**
* 公司:蓝桥软件学院
* 作者:zhangzy
* 时间:2017年7月24日 上午9:37:41
* 功能:演示字节写
*/
public class TestFileOutputStream {
public static void main(String[] args) {
//一.建立通道
String s = "你好";
byte[] byteArr = null;
try {
byteArr = s.getBytes("utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
//写的时候 如果写入的文件不存在 会先创建这个文件
FileOutputStream fos = null;
try {
fos = new FileOutputStream("d:\jidi16\io\HelloIO.txt",true);//true 追加
} catch (FileNotFoundException e) {
System.out.println("文件夹没有找到");
e.printStackTrace();
System.exit(-1);
}
//二.利用write写
try {
//fos.write(65);
fos.write(byteArr);
} catch (IOException e) {
System.out.println("写入失败");
e.printStackTrace();
}finally{
//三.关闭通道
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
System.out.println("关闭fos通道失败");
e.printStackTrace();
}
}
}
}
}
**********************字符写***********************************
FileWriter
常用方法
1. public void write(int b) throws IOException
每次写1个字符
2. public void write(char[] b) throws IOException
每次写1个字符数组
3. public void write(String s) throws IOException
每次写1个字符串
演示代码:
package com.chapter13.演示字节写;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
/**
* 公司:蓝桥软件学院
* 作者:zhangzy
* 时间:2017年7月24日 上午9:54:57
* 功能:演示字符写
*/
public class TestFileWriter {
public static void main(String[] args) {
//一.建立通道
char c = ‘你‘;
char[] charArr = {‘你‘,‘好‘,‘啊‘};
String s = "你好世界";
//写的时候 如果写入的文件不存在 会先创建这个文件
FileWriter fos = null;
try {
fos = new FileWriter("d:\jidi16\io\HelloIO.txt",true);//true 追加
} catch (IOException e) {
System.out.println("文件夹没有找到");
e.printStackTrace();
System.exit(-1);
}
//二.利用write写
try {
//fos.write(c);//每次写一个字符
//fos.write(charArr);//每次写一个字符数组
fos.write(s);//每次写一个字符串
} catch (IOException e) {
System.out.println("写入失败");
e.printStackTrace();
}finally{
//三.关闭通道
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
System.out.println("关闭fos通道失败");
e.printStackTrace();
}
}
}
}
}
***********************************文件复制***********************************
原理: 读进来 马上把它写出去
演示代码:
package com.chapter13.演示字节写;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
/**
* 公司:蓝桥软件学院
* 作者:zhangzy
* 时间:2017年7月21日 下午2:10:56
* 功能:演示文件复制
*/
public class TestFileCopy {
public static void main(String[] args) {
//一.建立通道
FileInputStream fis = null;
int b;
try {
fis = new FileInputStream("d:\jidi16\io\test.jpg");
} catch (FileNotFoundException e) {
System.out.println("文件没有找到");
e.printStackTrace();
System.exit(-1);
}
FileOutputStream fos = null;
try {
fos = new FileOutputStream("d:\jidi16\io\copy.jpg");
} catch (FileNotFoundException e1) {
System.out.println("文件夹不存在");
e1.printStackTrace();
}
byte[] byteArr = new byte[1024];
long startTime = System.currentTimeMillis();//获取举例1970年1月1日 00:00:00 的毫秒数
//二.利用read循环读
//fis.read() 每次读一个字节 把读到的这1个字节 存到int类型的低8位中
// read() 如果读到了文件末尾 返回-1
try {
while((b=fis.read(byteArr))!=-1){
fos.write(byteArr);
}
} catch (IOException e) {
System.out.println("复制文件失败");
e.printStackTrace();
}finally{
//三.关闭通道
if(fis!=null){
try {
fis.close();
} catch (IOException e) {
System.out.println("关闭fis通道失败");
e.printStackTrace();
}
}
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
System.out.println("关闭fos通道失败");
e.printStackTrace();
}
}
long endTime = System.currentTimeMillis();//获取举例1970年1月1日 00:00:00 的毫秒数
System.out.println("一共使用了" + (endTime-startTime) + "毫秒");
System.out.println("复制完成");
}
}
}
以上是关于Java IO流的主要内容,如果未能解决你的问题,请参考以下文章