import java.io.FileInputStream;
/**
* 3、使用字节流读写数据
* 把文件中的数据写到程序中
*
*/
public class ReadByteStream {
public static void main(String[] args) {
Method1();
}
public static void Method1() {
try {
//实例化一个文件字节流对象
FileInputStream fileInputStream = new FileInputStream("test.txt");//文件的相对路径,在项目的根目录下
//定义一个字符串数组
byte[] inputStr = new byte[26];
int i = fileInputStream.read(inputStr);
int count = 0;
while (fileInputStream.read(inputStr) != -1) {
count++;
}
//把字节数组转化成字符串
String str = new String(inputStr, "UTF-8");//和系统一致
fileInputStream.close();
System.out.println("读到的字节数:" + i);
System.out.println(str);
System.out.println("读取了" + count + "次");
/*
* 读到的字节数:26
cdefghijklmnopqrstuvwxyz
读取了3次
说明了数组的空间只有26,文件有26*3的大小
数组虽然读取了3次但是任然是26个字母,因为数组空间只有26,读不进去了,不会数组越界
*/
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.zhh.stream;
import java.io.FileOutputStream;
/**
* 3、使用字节流读写数据
* 把程序中的数据写到文件中(当文件不存在时,会自动创建文件)
*
*/
public class WriteByteStream {
public static void main(String[] args) {
method1();
}
static void method1() {
try {
FileOutputStream fileOutputStream = new FileOutputStream("mytest.txt");
String str = "人的生命是有限的";
byte[] b = str.getBytes("UTF-8");//把字符串转换成字节数组
fileOutputStream.write(b);
fileOutputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.zhh.stream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* 3、使用字节流读写数据
* 使用字节流实现文件的拷贝
*
*/
public class CopyByByteStream {
public static void main(String[] args) {
method1();
}
static void method1() {
try {
FileInputStream fileInputStream = new FileInputStream("test.mp3");
FileOutputStream fileOutputStream = new FileOutputStream("test_new.mp3");
byte[] input = new byte[50];
while (fileInputStream.read(input) != -1) {//把文件渡到数组中
//当返回值是-1时,说明数组中没有数据
fileOutputStream.write(input);//把数组中把文件写出来
}
fileOutputStream.close();
fileInputStream.close();
System.out.println("文件已经考别成功。。。");
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.zhh.stream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
* 5、使用字符流读写数据
* 字符流只能读取文本数据
* 实现文件的拷贝
*
*/
public class RWByCharStream {
public static void main(String[] args) {
try {
//输入流
// File file = new File("test.txt");
FileInputStream inputStream = new FileInputStream("test.txt");
InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
//输出流
FileOutputStream outputStream = new FileOutputStream("test_new.txt");
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, "UTF-8");
char[] str = new char[100];
int l = 0;
while ((l = reader.read(str)) != -1) {
// System.out.println(new String(str, 0, l));
outputStreamWriter.write(str, 0, l);
}
outputStreamWriter.close();
outputStream.close();
reader.close();
inputStream.close();
System.out.println("文件拷贝成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.zhh.stream;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
/**
*6、使用带有缓冲的字符流读写数据
*
*/
public class RWByBufferedCharStream {
public static void main(String[] args) {
try {
//输入流
// File file = new File("test.txt");
FileInputStream inputStream = new FileInputStream("test.txt");
InputStreamReader reader = new InputStreamReader(inputStream, "UTF-8");
BufferedReader myBufferedReader = new BufferedReader(reader);//包装成带有缓冲区的流
//输出流
FileOutputStream outputStream = new FileOutputStream("test_new.txt");
OutputStreamWriter writer = new OutputStreamWriter(outputStream, "UTF-8");
// BufferedWriter myBufferedWriter = new BufferedWriter(writer);//没有自动换行功能
PrintWriter printWriter = new PrintWriter(writer);//自动换行
String input = null;
while ((input = myBufferedReader.readLine()) != null) {
// myBufferedWriter.write(input);//没有换行
printWriter.println(input);
}
//关闭流
// myBufferedWriter.close();
printWriter.flush();//把流中的数据强制输出,必须写(不谢有时候会出现问题)
printWriter.close();
writer.close();
outputStream.close();
myBufferedReader.close();
reader.close();
inputStream.close();
System.out.println("文件拷贝成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.zhh.stream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
/**
* 7、FileReader与FileWriter
* 用FileReader和FileWriter操作文件数据
* 专门操作文件
*
*
*/
public class FileReadWriter {
public static void main(String[] args) {
try {
//向程序中读的流
FileReader fileReader = new FileReader("test.txt");
BufferedReader reader = new BufferedReader(fileReader);
//从程序中往出写的流
FileWriter fileWriter = new FileWriter("test_new.txt");
BufferedWriter writer = new BufferedWriter(fileWriter);
String dataStr;
while ((dataStr = reader.readLine()) != null) {
writer.write(dataStr + "\n");//这个方法没有换行,需要手动换行
}
writer.flush();//强制输出,所有的代缓冲的流,都需要强制输出
//关闭流
writer.close();
fileWriter.close();
reader.close();
fileReader.close();
System.out.println("文件拷贝成功。。。");
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.zhh.stream;
import java.io.File;
/**
* 8、RandomAccessFile随机文件读写
* RandomAccessFile是一个随机读写文件的类
* 本类可实现断点续传
*
*/
public class RandomTest {
static File myFile = new File("mytest.txt");
public static void main(String[] args) {
//避免文件中的数据叠加
if (myFile.exists()) {
myFile.delete();
}
FileWriter f1 = new FileWriter(myFile, 1);
f1.start();
FileWriter f2 = new FileWriter(myFile, 2);
f2.start();
FileWriter f3 = new FileWriter(myFile, 3);
f3.start();
FileWriter f4 = new FileWriter(myFile, 4);
f4.start();
FileWriter f5 = new FileWriter(myFile, 5);
f5.start();
}
}
package com.zhh.stream;
import java.io.File;
import java.io.RandomAccessFile;
public class FileWriter extends Thread {
/**
* 1 2 3 4 5 block分成5个区域 每个区域是L = 17
* ---------------------------------
*/
File file;
int block; //写入的标号,从1开始
int L = 17;
public FileWriter(File file, int block) {
this.file = file;
this.block = block;
}
@Override
public void run() {
try {
RandomAccessFile randomAccess = new RandomAccessFile(file, "rw");//设置为可读,可写
randomAccess.seek((block - 1) * L);
randomAccess.writeBytes("this is a block" + block);
} catch (Exception e) {
e.printStackTrace();
}
}
}
package com.zhh.stream;
import java.io.File;
import java.io.IOException;
import org.apache.commons.io.FileUtils;
/**
* 9、使用Apache IO库操作IO与文件
* 导入Apache的commons-io-2.4.jar的架包
*
*/
public class TeseFileUtils {
public static void main(String[] args) {
// method1();
method2();
}
/**
* 文件读取为字符串
*/
static void method1() {
try {
/*
*一个方法就搞定了
*/
File file = new File("test.txt");
String s = FileUtils.readFileToString(file, "UTF-8");
System.out.println("读取到的字符串:" + s);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 拷贝文件
* @throws IOException
*/
static void method2() {
try {
File file1 = new File("test.txt");
File file2 = new File("test_new.txt");
FileUtils.copyFile(file1, file2);//一行代码是吸纳文件的拷贝
} catch (IOException e) {
e.printStackTrace();
}
}
}
源码下载:
http://download.csdn.net/detail/zhaihaohao1/8741715
视频下载:
http://c38.yunpan.360.cn/my/index/#%2F%E7%A8%8B%E5%BA%8F%E5%BC%80%E5%8F%91%2Fjava%2F