Java之IO流与多线程

编辑: 来源: 时间: 2017-10-12 16:15 阅读:

     

光环大数据的大数据培训大数据课程分为13大阶段90大模块课程+6大企业真实项目实战,每个阶段都有实力案例和项目结合,从简单到专业一步一步带领学生走进大数据开发的世界,帮助学生顺利走上大数据工程师的道路!

Java作为大数据培训课程的技术基础,也是其中重要的课程之一,我们先来了解下。

一、IO流的分类

1.按流向不同:输入流、输出流(以程序为主体)

2.按数据不同:字节流、字符流(字节流操作非文本文件.jpg.avi.rmvb.mp3字符流操作文本本件.txt.java)

3.按角色不同:节点流、处理流

二、IO流的结构体系

抽象基类节点流缓冲流(处理流的一种)

InputStreamFileInputStreamBufferedInputStream

OutputStreamFileOutputStreamBufferedOutputStream(flush()-用于清空缓冲区)

ReaderFileReaderBufferedReader(readLine())

WriterFileWriterBufferedWriter(newLine())

//使用缓冲流完成文件的复制

publicstaticvoidcopyFile(Stringsrc,Stringdest){

//2.创建缓冲流对象(BufferedInputStream),包装现有节点流

BufferedInputStreambis=null;

//4.创建缓冲流对象(BufferedOutputStream),包装现有节点流

BufferedOutputStreambos=null;

try{

//1.创建FileInputStream对象,同时打开指定文件

FileInputStreamfis=newFileInputStream(src);

bis=newBufferedInputStream(fis);

//3.创建FileOutputStream对象,同时打开指定文件

FileOutputStreamfos=newFileOutputStream(dest);

bos=newBufferedOutputStream(fos);

//5.使用缓冲流读取指定文件的内容

byte[]b=newbyte[1024];

intlen=0;

while((len=bis.read(b))!=-1){

//6.使用缓冲流将读取的内容写到目标文件

bos.write(b,0,len);

}

//bos.flush();//用于强制清空缓冲区

}catch(IOExceptione){

e.printStackTrace();

}finally{

//7.关闭流

if(bos!=null){

try{

bos.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

if(bis!=null){

try{

bis.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

}

}

三、对象流:ObjectInputStream&ObjectOutputStream

序列化:将内存中的对象永久的以二进制形式保存到磁盘中

①创建节点流对象

②使用缓冲流包装节点流(可选的)

③使用对象流包装缓冲流对象

④进行序列化操作

⑤关闭流

⑥需要序列化对象所属的类需要实现java.io.Serializable接口

⑦提供一个序列号privatestaticfinallongserialVersionUID=1234256L;

注意:static和transient修饰的属性不能被序列化

//对象的序列化

@Test

publicvoidtest3(){

Personp1=newPerson("张三",18,newComputer(),"唐朝");

Personp2=newPerson("李四",28,newComputer(),"唐朝");

Personp3=newPerson("王五",25,newComputer(),"唐朝");

ObjectOutputStreamoos=null;

try{

FileOutputStreamfos=newFileOutputStream("person.dat");

BufferedOutputStreambos=newBufferedOutputStream(fos);

oos=newObjectOutputStream(bos);

oos.writeObject(p1);

oos.writeObject(p2);

oos.writeObject(p3);

}catch(IOExceptione){

e.printStackTrace();

}finally{

if(oos!=null){

try{

oos.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

}

}

反序列化:将磁盘中的对象读取

//对象的反序列化

@Test

publicvoidtest4(){

ObjectInputStreamois=null;

try{

FileInputStreamfis=newFileInputStream("person.dat");

BufferedInputStreambis=newBufferedInputStream(fis);

ois=newObjectInputStream(bis);

Personp1=(Person)ois.readObject();

Personp2=(Person)ois.readObject();

Personp3=(Person)ois.readObject();

System.out.println(p1);

System.out.println(p2);

System.out.println(p3);

}catch(ClassNotFoundExceptione){

e.printStackTrace();

}catch(IOExceptione){

e.printStackTrace();

}finally{

if(ois!=null){

try{

ois.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

}

}

四、控制台IO:

System.in:“标准”的输入流

System.out:“标准”的输出流----通过System类中setOut()方法可以改变println()的默认输出位置

System.err:“标准”的错误输出流

打印流:PrintStream&PrintWriter

五、转换流:InputStreamReader&OutputStreamWriter

@Test

publicvoidtest1(){

BufferedReaderbr=null;

try{

InputStreamin=System.in;

InputStreamReaderisr=newInputStreamReader(in);

br=newBufferedReader(isr);

Stringstr=null;

while((str=br.readLine())!=null){

System.out.println("--"+str);

}

}catch(IOExceptione){

e.printStackTrace();

}finally{

if(br!=null){

try{

br.close();

}catch(IOExceptione){

e.printStackTrace();

}

}

}

}

七、其他IO流

数据流:DataInputStream&DataOutputStream

随即存取文件流:RandomAccessFile

>seek(longl)

>getFilePointer();

八、java.io.File类:用于表示文件/目录。可用于新建、删除、重命名等基本功能的操作

但是若需要操作文件的内容,File就无能为力,需要使用IO流

通常File对象与IO流配合使用

访问文件名:

getName()

getPath()

getAbsoluteFile()

getAbsolutePath()

getParent()

renameTo(FilenewName)

文件检测

exists()

canWrite()

canRead()

isFile()

isDirectory()

获取常规文件信息

lastModified()

length()

文件操作相关

createNewFile()

delete()

目录操作相关

mkDir()

mkDirs()

list()

listFiles()

大数据培训,就选光环大数据!

原创文章,转载请注明出处:光环大数据http://hadoop.aura.cn


大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服

你可能也喜欢这些

在线客服咨询

领取资料

X
立即免费领取

请准确填写您的信息

点击领取
#第三方统计代码(模版变量) '); })();
'); })();