JavaSE I/O 流 文件读和写,javase
分享于 点击 27572 次 点评:82
JavaSE I/O 流 文件读和写,javase
package com.gzar;import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Arrays;
public class JavaIoDemo {
public static void main(String[] args) throws FileNotFoundException,
IOException {
File file = new File("D:\\Oracle\\JDeveloper\\mywork\\read.txt");
// readFile(file);
// writeFile(file);
// readFile(file);
// readFile2(file);
// readFile3(file);
// readFile4(file);
// readFile5(file);
// readFile6(file);
// readFile7(file);
readFile8(file);
}
/**
* 必须掌握,读取文件内容,将字节转为字符串,使用到字符串构造函数
* @param file
* @throws FileNotFoundException
* @throws IOException
*/
private static void readFile8(File file) throws FileNotFoundException,
IOException {
FileInputStream fis = new FileInputStream(file);
byte[] byt = new byte[1024];
int len = -1;
while((len = fis.read(byt)) != -1){
System.out.println(new String(byt, 0, len));
}
fis.close();
}
/**
* 如果缓冲一次读不完文件的数据,所以需要循环读取,
* 当读取的末尾返回值为-1则结束循环
* @param file
*/
private static void readFile7(File file) throws FileNotFoundException,
IOException {
FileInputStream fis = new FileInputStream(file);
byte[] byt = new byte[1024];
int len = -1;
while((len = fis.read(byt)) != -1){
for(int i = 0; i < len; i++){
System.out.println((char) byt[i]);
}
}
fis.close();
}
/**
* 为了解决缓冲区太小的问题,定义一个大的字节数字
* 长度1024
* @param file
*/
private static void readFile6(File file)throws FileNotFoundException,
IOException {
FileInputStream fis = new FileInputStream(file);
byte[] byt = new byte[1024];
int len = fis.read(byt);
System.out.println(Arrays.toString(byt));// 打印缓冲数组
System.out.println(len);
System.out.println(file.length());
for (int i = 0; i < len; i++) {
System.out.println((char) byt[i]);
}
fis.close();
}
/**
* 使用缓冲来读取文件以提高效率
* @param file
*/
private static void readFile5(File file)throws FileNotFoundException,
IOException {
FileInputStream fis = new FileInputStream(file);
byte[] b = new byte[5];
// 将数组传递给字节输入流
fis.read(b);
System.out.println(Arrays.toString(b));
for(int i= 0; i < b.length; i++){
System.out.println((char)b[i]);
}
fis.close();
}
/**
* <pre>
* 使用while的正常写法
* @param file
* </pre>
*/
private static void readFile4(File file) throws FileNotFoundException,
IOException {
FileInputStream fis = new FileInputStream(file);
int data = -1;
while((data = fis.read()) != -1){
System.out.println((char) fis.read());
}
fis.close();
}
/**
* 使用wile循环读取文件内容,如果返回-1,则结束循环
* @param file
*/
private static void readFile3(File file)throws FileNotFoundException,
IOException {
FileInputStream fis = new FileInputStream(file);
int data = -1;
// 读取一次
data = fis.read();
while(data != -1){
//显示数据
System.out.println((char)fis.read());
//在读取一次
data = fis.read();
}
fis.close();
}
/**
* 使用for循环读取文件内容
* @param file
* @throws FileNotFoundException
* @throws IOException
*/
private static void readFile2(File file)throws FileNotFoundException,
IOException {
FileInputStream fis = new FileInputStream(file);
System.out.println("文件长度:"+file.length());
for(int i=0; i < file.length(); i++){
System.out.println((char) fis.read()); //转为字符类型
}
//read()方法一次读取一个字节,返回的是ascii码,当文件读到末尾,没有内容值返回-1
System.out.println("read方法返回值:"+fis.read());
fis.close();
}
/**
* 1.读取文件
* @param file
*/
private static void readFile(File file) throws FileNotFoundException,
IOException {
FileInputStream fis = new FileInputStream(file);
System.out.println((char)fis.read());
System.out.println((char)fis.read());
System.out.println((char)fis.read());
System.out.println((char)fis.read());
System.out.println((char)fis.read());
System.out.println((char)fis.read());
System.out.println((char)fis.read());
fis.close();
}
/**
* 2.写入文件
* @param file
*/
private static void writeFile(File file) throws FileNotFoundException,
IOException {
FileOutputStream fos = new FileOutputStream(file);
fos.write('h');
fos.write('e');
fos.write('l');
fos.write('l');
fos.write('o');
fos.write('A');
fos.close();
}
}
相关文章
- 暂无相关文章
用户点评