练习1:
3、创建c:/test.txt文件并在其中输入"hello world"
- 创建一个输入流读取该文件中的文本 并且把小写的l变成大写L再利用输出流写入到d:\test.txt中
- 3.1 实现步骤:
- 3.1.1 在本地硬盘C盘下创建一个文件test.txt
- 3.1.2 创建一个包含main()方法的类,并在main中编写代码
- 3.1.3 运行代码并且测试结果
package com.biubiubiu.demo01;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.junit.Test;
/**
* 3、创建c:/test.txt文件并在其中输入"hello world"
* 创建一个输入流读取该文件中的文本 并且把小写的l变成大写L再利用输出流写入到d:\test.txt中
* 3.1 实现步骤:
* 3.1.1 在本地硬盘C盘下创建一个文件test.txt
* 3.1.2 创建一个包含main()方法的类,并在main中编写代码
* 3.1.3 运行代码并且测试结果
* @author 11142
*
*/
public class DayTest {
@Test
public void fileTest() {
File file = new File("E:\\JAVA\\JAVA_WorkSpace\\src\\com\\biubiubiu\\demo01\\test1");
FileOutputStream fos = null;
if(!file.exists()) {
try {
file.createNewFile();
fos = new FileOutputStream(file);
String str = "hello world";
byte[] bytes = str.getBytes();
fos.write(bytes);
fos.flush();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
File newFile = new File("E:\\JAVA\\JAVA_WorkSpace\\src\\com\\biubiubiu\\demo01\\test2");
FileInputStream fis = null;
try {
fis = new FileInputStream(file);
byte[] bytes = new byte[(int)file.length()];
fis.read(bytes);
String newStr = new String(bytes);
byte[] b = newStr.replace('l', 'L').getBytes();
fos = new FileOutputStream(newFile);
fos.write(b);
fos.flush();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
fis.close();
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
练习2:FileWrite和FileRead
package com.biubiubiu.demo02;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.junit.Test;
public class FileDemo {
/**
* 向指定文件中写入内容
*/
@Test
public void FileWrite() {
String str = "s001,王五,23";
FileOutputStream out = null;
File file = new File("E:\\JAVA\\JAVA_WorkSpace\\KGC_Senior\\Senior1023\\src\\com\\biubiubiu\\demo02\\Student.txt");
try {
out = new FileOutputStream(file, true);
out.write(str.getBytes());
out.write("\n".getBytes());
} catch (Exception e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 从指定文件中读取内容
*/
@Test
public void FileRead() {
File file = new File("E:\\JAVA\\JAVA_WorkSpace\\KGC_Senior\\Senior1023\\src\\com\\biubiubiu\\demo02\\Student.txt");
byte[] content = new byte[(int) file.length()];
FileInputStream in = null;
try {
in = new FileInputStream(file);
in.read(content);
} catch (Exception e) {
e.printStackTrace();
}finally {
if (in != null) {
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println(new String(content));
}
}
练习3:FileFilter
package com.biubiubiu.demo02;
import java.io.File;
import java.io.FilenameFilter;
public class FileFilterTest {
public static void main(String args[]){
//用File 对象表示一个目录
File dir=new File("E:\\JAVA\\JAVA_WorkSpace\\KGC_Senior\\Senior1023\\src\\com\\biubiubiu\\demo02\\filedemo");
//生成一个名为java的过滤器
Filter filter=new Filter("java");
System.out.println("list java files in directory "+dir);
//列出目录dir下,文件后缀名为java的所有文件
String files[]=dir.list(filter);
for(int i=0;i<files.length;i++){
//为目录dir 下的文件或目录创建一个File 对象
File f=new File(dir,files[i]);
//如果该对象为后缀为java的文件则打印文件名
if(f.isFile())
System.out.println("file "+f);
else
System.out.println("sub directory "+f ); //如果是目录则打印目录名
}
}
}
class Filter implements FilenameFilter{
String extent;
public Filter(String extent){
this.extent=extent;
}
public boolean accept(File dir,String name){
return name.endsWith("."+extent); //返回文件的后缀名
}
}
练习4:FileChar
package com.biubiubiu.demo02;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.util.Arrays;
import org.junit.Test;
public class FileCharDemo {
@Test
public void FileChar() {
String str = "中国是最美的国家";
File f = new File("E:\\JAVA\\JAVA_WorkSpace\\KGC_Senior\\Senior1023\\src\\com\\biubiubiu\\demo02\\Student.txt");
FileWriter out;
try {
out = new FileWriter(f);
// out.write(str);
out.write(str, 2, 3);
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void Filecharwrite() {
File f = new File("D:\\kgc\\Student.txt");
// char[] c=new char[(int)f.length()/2];
char[] c = new char[0];
try {
FileReader r = new FileReader(f);
// r.read(c);
/*
* int i=r.read(); System.out.println(i+"/"+(char)i); int i1=r.read();
* System.out.println(i1+"/"+(char)i1); int i2=r.read();
* System.out.println(i2+"/"+(char)i2); int i3=r.read();
* System.out.println(i3+"/"+(char)i3);
*/
int i = -1;
while ((i = r.read()) != -1) {
c = Arrays.copyOf(c, c.length + 1);
c[c.length - 1] = (char) i;
}
r.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(new String(c));
}
}
练习5:ByteArrayInputStream、ByteArrayOutputStream
package com.biubiubiu.demo02;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
public class ByteArrayTest {
public static void main(String[] args) throws Exception {
String tmp="abcdefghijklmnopqrstuvwxyz";
byte [] src =tmp.getBytes();//src为转换前的内存块
ByteArrayInputStream input = new ByteArrayInputStream(src);//字节数组转为读入流对象
ByteArrayOutputStream output = new ByteArrayOutputStream();//创建一个输出流对象
int c=0;
while((c=input.read())!=-1)//read在读到流的结尾处返回-1
{
int C = (int)Character.toUpperCase((char)c);
output.write(C);
}
byte [] result = output.toByteArray();//输出流对象转为字节数组
System.out.println(new String(result));
}
}
练习6:DataStream
package com.biubiubiu.demo02;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public class DataStreamTest {
public static void main(String[] args){
try{
FileOutputStream fos = new FileOutputStream("D:\\kgc\\Student.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);
DataOutputStream dos = new DataOutputStream(bos);
dos.writeByte(2);
dos.writeInt(4);
dos.writeBoolean(false);
dos.writeDouble(8.8);
dos.close();
FileInputStream fis = new FileInputStream("D:\\kgc\\Student.txt");
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
System.out.println(dis.readByte());
System.out.println(dis.readBoolean());
System.out.println(dis.readDouble());
fis.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
练习7:PrintStream
package com.biubiubiu.demo02;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.io.PrintStream;
public class PipeDemo extends Thread{
PipedOutputStream output;
public PipeDemo(PipedOutputStream out) {
output = out; //copy to loacal member var
}
public void run() {
try {
// created a printstream for convenient writing
PrintStream p = new PrintStream(output);
//print message
p.println(" Hello from another thread via pipes!");
p.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
//created a pipe for writing
PipedOutputStream pout = new PipedOutputStream();
//created a pipe for reading,and connect it to output pipe
PipedInputStream pin = new PipedInputStream(pout);
//creat a new demo thread,to write to our pipe
PipeDemo pdemo = new PipeDemo(pout);
pdemo.start();
//read thread data;
int input = pin.read();
//Terminate when end of stream reached
while (input != -1) {
//Print message
System.out.print((char) input+" ");
//Read next byte
input = pin.read();
}
} catch (Exception e) {
System.err.println("Pipe error" + e);
}
}
}