文档视界 最新最全的文档下载
当前位置:文档视界 › 输入输出流注意点

输入输出流注意点

1.增强型for循环的更深理解

2.Collection接口,collections类
且collection类中的方法均为静态方法

3.File类的使用
实例如下:
package shurushuchu;
import java.io.File;
public class FileTest2 {
public static void main(String[] args){
//新建代表目录的file对象
File f=new File("D:\\有用软件");
if(f.exists()){
//获取一个目录下的所有的目录的文件,并将其保存在字符串数组names中
String[] names=f.list();
//增强型的for循环
for(String name:names){
//file的构造方法,File(String parent,String child)
//其中parent-代表父路径名字符串,child-子路径名字符串
File f1=new File(f,name);
//判断f路径下的对象是否为文件
if(f1.isFile()){
System.out.println("这是一个文件"+name+"最后修改时间:"+https://www.docsj.com/doc/dc11588612.html,stModified());
}else{
System.out.println("知识一个文件"+name+"最后修改时间:"+https://www.docsj.com/doc/dc11588612.html,stModified());
}

}
}
}
}

此处打出的时间格式并非我们常用的格式,那么如何将时间的格式改为我们常用的格式呢?要改则需要使用SimpleDateFromat类
修改代码如下:
package shurushuchu;
import java.io.File;
import java.util.Date;
import java.text.SimpleDateFormat;
public class FileTest3 {
public static void main(String[] args){
//新建代表目录的file对象
File f=new File("D:\\有用软件");
if(f.exists()){
//获取一个目录下的所有的目录的文件,并将其保存在字符串数组names中
String[] names=f.list();
//增强型的for循环
for(String name:names){
//file的构造方法,File(String parent,String child)
//其中parent-代表父路径名字符串,child-子路径名字符串
File f1=new File(f,name);
//获取最后修改时间
long t=https://www.docsj.com/doc/dc11588612.html,stModified();
//新建Date类的对象代表时间
Date date=new Date(t);
//创建SimpleDateFormat对象,用来设置日期和时间格式
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//格式化,即将时间按我们在构造方法中定义的格式输出
String t1=sdf.format(date);
//判断f路径下的对象是否为文件
if(f1.isFile()){
System.out.println("这是一个文件"+name+"最后修改时间:"+t1);
}else{
System.out.println("知识一个文件"+name+"最后修改时间:"+t1);
}

}
}
}
}

4.File类的常用方法的使用
实例如下:
package shurushuchu;
import java.io.File;
import java.io.IOException;
public class FileTest1 {
public static void main(String[] args){
//新建一个File类的对象,f表示文件d:/a.txt
File f=new File("d:/a.txt");
//由于Create方法抛出异常故要处理异常

try{
if(!f.exists()){
f.createNewFile();
System.out.println("创建文件成功!");
}
}catch(IOException e){
System.out.println(e.getMessage());
}

//新建指定路径的目录,ml表示多重目录d:/a/b/c,ml1表示单重目录d:/ml
File ml=new File("d:/a/b/c");
File ml1=new File("d:/ml");
//创建多重目录
ml.mkdirs();
//创建单重目录
ml1.mkdir();
if(ml.exists()){
//多重目录的删除只能删除最里面的目录
ml.delete();
System.out.println("删除目录成功!");
}
//判断该目录是否存在
if(ml1.exists()){
ml1.delete();
System.out.println("删除目录成功!");
}

//新建File对象mul2代表D:\\C语言目录
File mul2=new File("D:\\C语言");
//list方法获得(D:\\C语言)目录下的文件和目录,并将其存放在字符串数组c中
String[] names=mul2.list();
//使用增强型的for循环
for(String name:names){
//新建使用父目录和子字符串构造方法
File f1=new File(mul2,name);
//判断该对象是否为文件
if(f1.isFile()){
System.out.println("这是一个文件:"+f1.getName());
}
//判断该对象是否为目录
if(f1.isDirectory()){
//getName()获取文件或目录的名称
//getParent方法返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null。
System.out.println("这是一个目录:"+f1.getName()+"\t"+f1.getParent());
}
}
}
}

注意点:File f=new File("C:/file.txt");执行该语句后并未创建文件file.txt
若要创建该文件需要使用File中的ctreate方法

5.FileInputStream类的使用
package shurushuchu;
import java.io.InputStream;
import java.io.FileInputStream;
public class FileInputStreamTest {
public static void main(String[] args){
try{
//父类的引用指向子类的对象
InputStream is=new FileInputStream("D:\\迅博学习笔记\\java学习笔记\\第八章接口\\接口重难点和注意点.txt");
//read方法返回的是下一个字节
int ch=is.read();
//由于read方法是当文件到达末尾是返回-1,即
while(ch!=-1){
System.out.print((char)ch);
ch=is.read();
}
is.close();
}catch(Exception e){
e.printStackTrace();
}
}
}
//由于获取是一个一个字节获取,而一个汉字有两个字节,故如果有汉字则会出现错误

6.FileInputStream类的更深理解
作用:读取指定的文件
package shurushuchu;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.FileInputStream;
public class FileinputStream {
public static void main(String[] args){
//由于FileInputStream构造

函数抛出一个异常,故需要对异常进行处理
try{
InputStream is=new FileInputStream("D:\\迅博学习笔记\\java学习笔记\\第九章异常\\注意点.txt");
//由于read方法的返回值为int型,该方法的作用是从此输入流中读取一个数据字节
//所以若读取的文件中含有汉字则会出现乱码,由于一个汉字占两个字节
int ch=is.read();
while(ch!=-1){
System.out.print((char)ch);
//此句很关键
ch=is.read();
}
//特别注意最后要关闭流
is.close();
}
catch(FileNotFoundException e1){
e1.getStackTrace();
}catch(IOException e){
e.getStackTrace();
}

}
}

注意点:如果文件中有汉字则上面的方法读取会出现乱码,解决方案如下:
//以下方法可以解决如果文件中有汉字时出现乱码的问题,以此方法若有汉字不会出现乱码
package shurushuchu;
import java.io.InputStream;
import java.io.FileInputStream;
public class FileInputStreamTest2 {
public static void main(String[] args){
try{
//新创建FileInputStream对象
InputStream f=new FileInputStream("D:\\迅博学习笔记\\java学习笔记\\第八章接口\\接口重难点和注意点.txt");
//创建数组保存读取的字节
byte[] b=new byte[1024];
//读取数据
int ch=f.read(b);
if(ch!=-1){
//使用字符串public String(byte[] bytes, int offset, int length)构造方法,返回值为String类型
System.out.println(new String(b,0,ch));
}
f.close();
}catch(Exception e){
e.printStackTrace();
}
}
}

7.FileReader类的使用
注意FileReader类和FileOutputStream类的区别

字节流 字符流
InputStream Reader
OutputStream Writer

即FileReader读取的是一个字符,FileOutputStream读取的是一个字节
则可以使用该类解决一下读取汉字时的乱码问题,具体的实现方法如下:
package shurushuchu;
import java.io.IOException;
import java.io.FileNotFoundException;
import java.io.Reader;
import java.io.FileReader;
public class FileReaderTest {
public static void main(String[] args){
try{
Reader dq=new FileReader("D:\\迅博学习笔记\\java学习笔记\\第八章接口\\接口重难点和注意点.txt");
//FileReader类的read方法是读取的一个字符,read方法返回的是作为整数读取的字符
int a=dq.read();
while(a!=-1){
System.out.print((char)a);//将整数a强制转化为字符
a=dq.read();
}
dq.close();
}catch(FileNotFoundException e1){
e1.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}
此程序的关键在于FileReader类的read方法读取的是一个字符,读取汉字时不会出现乱码

8.FileOutputStrea

m类的使用方法
作用:向文件中写入数据
实例如下:
//FileOutputStream类的使用
package shurushuchu;
import java.io.OutputStream;
import java.io.FileOutputStream;
public class FileOutStreamTest {
public static void main(String[] args){
String str1="相信自己,最后的胜利将属于我";
try{
OutputStream os=new FileOutputStream("D:\\a\\b\\a.txt");
//write(byte[])将指定字节写入此文件输出流,str1.getBytes()返回值为一个字节数组
os.write(str1.getBytes());
System.out.println("写入数据成功!");
os.close();
}
catch(Exception e){
e.printStackTrace();
}
}
}

9.输入输出流同时使用的实例
实例如下;
package shurushuchu;
import java.io.InputStream;
import java.io.FileInputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
public class FoFosTest {
public static void main(String[] args){
try{
//创建输入流读取图像
InputStream is=new FileInputStream("E:/win7/004423c5uflfl12bq3f39c.png");
//创建输出流往文件中写入数据
OutputStream os=new FileOutputStream("D:/a/b/a.txt");
//为字节数组分配存储空间
byte[] b=new byte[1024];
//读取图片数据并
int len=is.read(b);
while(len!=-1){
//输出流写入数据到指定的文件中
os.write(b,0,len);
len=is.read(b);
}
//关闭输入流输出流
is.close();
os.close();
}catch(Exception e){
e.printStackTrace();
}
}
}

10.FileOutputStream类的构造方法
使用实例:
//FileOutputStream类的使用
package shurushuchu;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.FileOutputStream;
public class FileOutStreamTest {
public static void main(String[] args){
String str1="相信自己,最后的胜利将属于我";
File f=new File("D:\\a\\b\\b.txt");
try{
if(!f.exists()){
f.createNewFile();
}
else{
OutputStream os=new FileOutputStream("D:\\a\\b\\b.txt");
//write(byte[])将指定字节写入此文件输出流,str1.getBytes()返回值为一个字节数组
os.write(str1.getBytes());
System.out.println("写入数据成功!");
os.close();
//public FileOutputStream(String name,boolean append) throws FileNotFoundException
//创建一个向具有指定 name 的文件中写入数据的输出文件流。如果第二个参数为 true,则将字节写入文件末尾处,而不是写入文件开始处。
//创建一个新 FileDescriptor 对象来表示此文件连接。
OutputStream os1=new FileOutpu

tStream("D:\\a\\b\\b.txt",true);
String str2="java程序";
//字符串的getBytes()方法返回字节数组
os1.write(str2.getBytes());
System.out.println("添加数据成功!");
os1.close();
}
}catch(Exception e1){
e1.printStackTrace();
}
}
}
特别注意:构造方法FileOutputStream("D:\\a\\b\\b.txt",true)由于第二个参数为true,故表示将字节写入文件末尾处

11.读取和写入的经典实例:
//将路径D:\\迅博学习笔记\\java学习笔记\\第九章异常\\作业\\bookTest1.java下的bookTest1.java文件内容写入
//路径D:\\a\\b\\c.txt下的c.txt文件中去
package shurushuchu;
import java.io.Reader;
import java.io.FileReader;
import java.io.Writer;
import java.io.FileWriter;
public class FileReaderTest1 {
public static void main(String[] args){
try{
//rd代表文件bookTest1.java
Reader rd=new FileReader("D:\\迅博学习笔记\\java学习笔记\\第九章异常\\作业\\bookTest1.java");
//wt代表文件c.txt
Writer wt=new FileWriter("D:\\a\\b\\c.txt");
//为字符数组分配空间
char[] ch=new char[1024];
//读取文件中的字符,并将读取字符存入数组中,一次只能读取1024个字符,read方法的返回值为整型
int len=rd.read(ch);
while(len!=-1){
//将字符数组中的数据全部写如文件c.txt中
wt.write(ch,0,len);
//继续读取文件中的字符,并将读取字符存入数组中去,如果未到文件末尾,则继续讲1024个字符读出
len=rd.read(ch);
}
rd.close();
wt.close();
}catch(Exception e){
e.printStackTrace();
}
}
}

12.

相关文档
相关文档 最新文档