目录
9.(FileInputStream 和FileOutputStream) 利用FileInputStream 和FileOutputStream,完成下面的要求:
1)用FileOutputStream 在当前目录下创建一个文件“test.txt”,并向文件输出“Hello World”,如果文件已存在,则在原有文件内容后面追加。
2)用FileInputStream 读入test.txt 文件,并在控制台上打印出test.txt 中的内容。
3)要求用try-catch-finally 处理异常,并且关闭流应放在finally 块中。
package chp13;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class Work9 {
public static void main(String[] args) {
String s = "Hello Word\n";
byte[] bytes = s.getBytes();
OutputStream out = null;
InputStream in =null;
try {
out = new FileOutputStream("test.txt",true);//追加内容
out.write(bytes);//向文件输出
in = new FileInputStream("test.txt");
int length = in.available();//获取字节大小
byte[] r = new byte[length];//存储每次读取的数据
in.read(r);
System.out.println(new String(r));//读取,将字节数组转换字符输出
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
//关闭流
if(out!=null)
out.close();
if(in!= null)
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
10.(Data 流)利用Data 流,完成下面操作:
1)判断当前目录下是否存在一个“test.dat”的文件,如果该文件不存在,则往该文件中写入一个long 类型的数值:10000L
2)如果该文件存在,则从该文件中读出数值,并把该数值加1 之后,再存回文件中。
package chp13;
import java.io.DataInput;
import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
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;
public class Work10 {
public static void main(String[] args) {
File file = new File("Test.dat");
if(!file.exists()){//如果文件不存在
write(file,10000L);
}else{//存在就读取再+1
long num = read(file);
write(file, ++num);
}
}
public static void write(File file,long num) {
//创建一个字节输出流
OutputStream os=null;
DataOutput out =null;
try {
os = new FileOutputStream(file);
out = new DataOutputStream(os);
//输出数据
out.writeLong(num);
System.out.println("写入成功");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static long read(File file) {
InputStream in = null;
DataInput din = null;
try {
in = new FileInputStream(file);
din = new DataInputStream(in);
//读取数据
long readLong = din.readLong();
System.out.println(readLong);
return readLong;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return 0;
}
}
思考题、(File)
查询个人电脑D盘(没有d盘查自己有的盘)下所有文件,将文件名字进行输出(记住所有文件,包含子文件夹中的所有文件都要输出)
package sikao;
import java.io.File;
public class WorkReadD {
public static void main(String[] args) {
File file = new File("D:");
toshow(file);
}
public static void toshow(File file) {
if (file.exists()) {//文件是否存在
File[] filein = file.listFiles();
if(filein!=null){//判断目录是否为空
for (File file2 : filein) {
if(file2.isDirectory())//是否为目录
toshow(file2);
else
System.out.println(file2.getName()+"\t"+file2.getAbsolutePath());
}
}
}else{
System.out.println("文件不存在");
}
}
}