java中使用文件输入流和文件输出流进行文件读写的用例!
2008-07-25 17:47
477 查看
package com.cfkyit.io;
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.OutputStream;
/**
*
* @author michael
* 用例内容:文件输入流和文件输入流结合用例,字节流方式
* 时间:2008-07-22
* 注意事项:文件输入流和文件输出流都是相对与内存来说的,例如通过程序读取文件时往内存输入数据就是文件输入流
*/
public class FileInputOrOutput {
public static void main(String[] args) {
// 文件或者路径名的抽象表现形式,意思就是说之后如果进行操作的话就是全部在这个抽象路径名所指向的文件或者文件加中
File file = new File("e:/test.txt");
File file2 = new File("e:/test1.txt");
// 文件字节数的个数
// System.out.println(file.length());
try {
/*------------------------------------------读操作部分-----------------------------------------------*/
//文件输入流对象
InputStream fis = new FileInputStream(file);
// 文件输入流对象所读取的字节数大小
// System.out.println(fis.available());
/**
* 1.按照一个字节为单位进行读取数据,弊端是遇到中文就会把中文的汉字拆开从而出现乱码
*/
// //流对象读出的返回值是每次所读到的一个字符所对应的ascii码值
// int i = fis.read();
//
// //如果已经读到文件尾则i==-1,此时终止循环
// while(i!=-1){
// System.out.print((char)i);
// 保证每一次循环都继续往后读取一个字符,否则i的值不变会成为死循环
// i = fis.read();
// }
/**
* 2.按照一个字节数组所指定的大小为单位进行读取,每次最多可以读取数组定义的大小的字节个数
*/
// 每次读取都以1K字节作为单位来进行
byte b[] = new byte[1024];
// 流对象读出并返回的是每次读取字节的个数,最大每次读取自己数可以和数组b.length相同
// b中存储了每次所读取的所有数据
int i = fis.read(b);
String str = "";
// 如果已经读到文件尾则i==-1,此时终止循环
while (i != -1) {
// 把每次读取的字节数组解码为字符串
// 参数1:要解码为字符的字节
// 参数2:要解码的首字符的索引
// 参数3:要解码的字节的个数,如果文件个数大于所设定的一次读取文件的大小时i的取值就是
// b.length,否则小于数组的字节大小时则为实际的读取出自己数的大小
str = str + new String(b, 0, i);
// 保证每一次都往文件的下一部分进行读取,否则i值没有变化会成为死循环
i = fis.read(b);
}
// System.out.print(str);
// 关闭输入流对象
fis.close();
/*------------------------------------------写操作部分-----------------------------------------------*/
//文件输出流对象
OutputStream fos = new FileOutputStream(file2);
//str是从file所指定的文件中读出的所有内容,将此内容写入另一个文件中
//将字符解码为字节数组
byte b2[] = str.getBytes();
//将解码后的字节数组,通过文件输出流对象写入到缓冲区中
fos.write(b);
//强制将缓冲区中的内容输出到文件中
fos.flush();
//关闭输出流对象
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
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.OutputStream;
/**
*
* @author michael
* 用例内容:文件输入流和文件输入流结合用例,字节流方式
* 时间:2008-07-22
* 注意事项:文件输入流和文件输出流都是相对与内存来说的,例如通过程序读取文件时往内存输入数据就是文件输入流
*/
public class FileInputOrOutput {
public static void main(String[] args) {
// 文件或者路径名的抽象表现形式,意思就是说之后如果进行操作的话就是全部在这个抽象路径名所指向的文件或者文件加中
File file = new File("e:/test.txt");
File file2 = new File("e:/test1.txt");
// 文件字节数的个数
// System.out.println(file.length());
try {
/*------------------------------------------读操作部分-----------------------------------------------*/
//文件输入流对象
InputStream fis = new FileInputStream(file);
// 文件输入流对象所读取的字节数大小
// System.out.println(fis.available());
/**
* 1.按照一个字节为单位进行读取数据,弊端是遇到中文就会把中文的汉字拆开从而出现乱码
*/
// //流对象读出的返回值是每次所读到的一个字符所对应的ascii码值
// int i = fis.read();
//
// //如果已经读到文件尾则i==-1,此时终止循环
// while(i!=-1){
// System.out.print((char)i);
// 保证每一次循环都继续往后读取一个字符,否则i的值不变会成为死循环
// i = fis.read();
// }
/**
* 2.按照一个字节数组所指定的大小为单位进行读取,每次最多可以读取数组定义的大小的字节个数
*/
// 每次读取都以1K字节作为单位来进行
byte b[] = new byte[1024];
// 流对象读出并返回的是每次读取字节的个数,最大每次读取自己数可以和数组b.length相同
// b中存储了每次所读取的所有数据
int i = fis.read(b);
String str = "";
// 如果已经读到文件尾则i==-1,此时终止循环
while (i != -1) {
// 把每次读取的字节数组解码为字符串
// 参数1:要解码为字符的字节
// 参数2:要解码的首字符的索引
// 参数3:要解码的字节的个数,如果文件个数大于所设定的一次读取文件的大小时i的取值就是
// b.length,否则小于数组的字节大小时则为实际的读取出自己数的大小
str = str + new String(b, 0, i);
// 保证每一次都往文件的下一部分进行读取,否则i值没有变化会成为死循环
i = fis.read(b);
}
// System.out.print(str);
// 关闭输入流对象
fis.close();
/*------------------------------------------写操作部分-----------------------------------------------*/
//文件输出流对象
OutputStream fos = new FileOutputStream(file2);
//str是从file所指定的文件中读出的所有内容,将此内容写入另一个文件中
//将字符解码为字节数组
byte b2[] = str.getBytes();
//将解码后的字节数组,通过文件输出流对象写入到缓冲区中
fos.write(b);
//强制将缓冲区中的内容输出到文件中
fos.flush();
//关闭输出流对象
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
相关文章推荐
- java 如何使用缓冲区对文件进行读写操作
- Java使用RandomAccessFile类对文件进行读写
- Java使用jxl对excel文件进行简单的读写
- android 向内存中 读写 文件数据 》》》java基础---- 文件输入流,文件输出流
- java使用文件或字节数组方式加载图片,并修改图片后进行保存、输出等
- 使用基本字节输入流,字节输出流一次读写一个字节来复制文本 文件
- JAVA中inputStream/OutputStream字节输入流、输出流读写文件
- java里如何使用输入流和输出流实现读取本地文件里内容和写出到本地文件里
- java读写文件的几种方式(不断完善),方便日后使用
- 用java的i/o读写文件,举一反三看清io的使用 推荐
- 【我的Java笔记】IO流_使用IO流进行文件的复制和粘贴
- 使用AES算法对文件进行加密/解密的操作(JAVA)
- 使用Java的代理机制进行日志输出
- 使用java读写properties文件属性
- 使用Java实现对dbf文件的简单读写
- 使用缓冲输入流和缓冲输出流复制文件
- Java基础———重温关于的文件读写操作,File类,FileInputStream类等的使用
- java学习总结(16.05.08)在windows下使用cmd命令行对java文件进行编译和执行
- java使用Servlet进行文件下载
- 使用Java读写本地文件(使用流方法)。