`
zhangxiang390
  • 浏览: 216708 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Java的文件和流(上)

阅读更多

Java I/O系统的类实在是太多了,这里我们只学习一些基本的和常用的,相信能够掌握这些就可以解决我们以后的普通应用了。     

 

1.什么是数据流
    数据流是指所有的数据通信通道有两类 流,InputStream and OutputStream,Java中每一种流的基本功能依赖于它们,InputStream 用于read,OutputStream 用于write, 读和写都是相对与内存说的,读就是从其他地方把数据拿进内存,写就是把数据从内存推出去,这两个都是抽象类,不能直接使用。

 

2.InputStream 的方法
    read() 从流中读入数据 有3中方式:
    int read() 一次读一个字节
    int read(byte[]) 读多个字节到数组中
    int read(byte[],int off,int len) 指定从数组的哪里开始,读多长
    skip() 跳过流中若干字节
    available() 返回流中可用字节数,但基于网络时无效,返回0
    markSupported() 判断是否支持标记与复位操作
    mark() 在流中标记一个位置,要与markSupported()连用
    reset() 返回标记过的位置
    close() 关闭流

3.OutputStream 的方法
    write(int) 写一个字节到流中
    write(byte[]) 将数组中的内容写到流中
    write(byte[],int off,int len) 将数组中从off指定的位置开始len长度的数据写到流中
    close() 关闭流
    flush() 将缓冲区中的数据强制输出

4.File 类
    File 可以表示文件也可以表示目录,File 类控制所有硬盘操作
    构造器:
    File(File parent,String child) 用父类和文件名构造
    File(String pathname) 用绝对路径构造
    File(String parent,String child) 用父目录和文件名构造
    File(URI uri) 用远程文件构造
    常用方法:
    boolean createNewFile();
    boolean exists();

    例子:
    //建立 test.txt 文件对象,判断是否存在,不存在就创建

import java.io.*;

public class CreateNewFile{
public static void main(String args[]){
    File f=new File("test.txt");
        try{
            if(!f.exists())
            f.createNewFile();
            else
            System.out.println("exists");
        }catch(Exception e){
            e.printStackTrace();
        }
     }
}

    boolean mkdir()/mkdirs()
    boolean renameTo(File destination)
    例子://看一下这 mkdir()/mkdirs() 的区别和 renameTo 的用法

import java.io.*;
public class CreateDir{
    public static void main(String args[]){
    	File f=new File("test.txt");
    	File f1=new File("Dir");
    	File f2=new File("Top/Bottom");
    	File f3=new File("newTest.txt");
	    try{
		    f.renameTo(f3);
		    f1.mkdir();
		    f2.mkdirs();
	    }catch(Exception e){
	    	e.printStackTrace();
	    }
    }
}
 

    String getPath()/getAbsolutePath()
    String getParent()/getName()
    例子://硬盘上并没有parent 目录和 test.txt 文件,但我们仍然可以操作,因为我们创建了他们的对象,是对对象进行操作

import java.io.*;
public class Test{
	    public static void main(String args[]){
		    File f=new File("parent/test.txt");
		    File f1=new File("newTest.txt");
		    try{
			    System.out.println(f.getParent());
			    System.out.println(f.getName());
			    System.out.println(f1.getPath());
			    System.out.println(f1.getAbsolutePath());
		    }catch(Exception e){
		    	e.printStackTrace();
		    }
	    }
}
 

    String list[] //显示目录下所有文件
    long lastModified() //返回 1970.1.1 到最后修改时间的秒数
    boolean isDirectory()

    例子://列出目录下的所有文件和目录,目录的后面标出最后修改时间,文件后面标出文件的长度。

import java.io.*;
import java.util.*;
public class Dir{
    public static void main(String args[]){
	    File f=new File("Dir");
	    String[] listAll=null;
	    File temp=null;
	    try{
		    listAll=f.list();
		    for(int i=0;itemp=new File(listAll);
		    System.out.print(listAll+"\t");
		    if(temp.isDirectory())
		    System.out.print("\t
		    \t");
		    else
		    System.out.print(temp.length()+"\t");
		    System.out.println(new Date(temp.lastModified()));
	    }catch(Exception e){
	    	e.printStackTrace();
	    }
    }
}
 

    5.文件流的建立

    File f=new File("temp.txt");
    FileInputStream in=new FileInputStream(f);
    FileOutputStream out=new FileOutputStream(f);

    例子:文件拷贝

import java.io.*;
public class Copy{
    public static void main(String args[]){
	    FileInputStream fis=null;
	    FileOutputStream fos=null;
	    try{
		    fis=new FileInputStream("c2.gif");
		    fos=new FileOutputStream("c2_copy.gif");
		    int c;
		    while((c=fis.read()) != -1)
		    	fos.write(c);
	    }catch(Exception e){
	    	e.printStackTrace();
	    }finally{
		    if(fis != null) try{ fis.close(); }catch(Exception e){ e.printStackTrace(); }
		    if(fos!= null) try{ fos.close(); }catch(Exception e){ e.printStackTrace(); }
	    }
	}
}
 

    6.缓冲区流
    BufferedInputStream
    BufferedOutputStream
    他们是在普通文件流上加了缓冲的功能,所以构造他们时要先构造普通流
    例子:文件拷贝的缓冲改进

 

import java.io.*;
public class Copy{
    public static void main(String args[]){
	    BufferedInputStream bis=null;
	    BufferedOutputStream bos=null;
	    byte buf[]=new byte[100];
	    try{
		    bis=new BufferedInputStream(new FileInputStream("persia.mp3"));
		    bos=new BufferedOutputStream(new FileOutputStream("persia_copy.mp3"));
		    int len=0;
		    while( true ){
			    len=bis.read(buf);
			    if(len<=0) break;
			    bos.write(buf,0,len);
		    }
		    bos.flush();//缓冲区只有满时才会将数据输出到输出流,用flush()将未满的缓冲区中数据强制输出
	    }catch(Exception e){
	    	e.printStackTrace();
	    }finally{
		    if(bis != null) try{ bis.close(); }catch(Exception e){ e.printStackTrace(); }
		    if(bos!= null) try{ bos.close(); }catch(Exception e){ e.printStackTrace(); }
	    }
    }
}
 

    7.原始型数据流

    DataInputStream
    DataOutputStream
    他们是在普通流上加了读写原始型数据的功能,所以构造他们时要先构造普通流
    方法:
    readBoolean()/writeBoolean()
    readByte()/writeByte()
    readChar()/writeByte()
    ......

    例子://这个流比较简单,要注意的就是读时的顺序要和写时的一样

import java.io.*;
public class DataOut{
	public static void main(String args[]){
		DataOutputStream dos=null;
		try{
			dos=new DataOutputStream(new FileOutputStream("dataout.txt"));
			dos.writeInt(1);
			dos.writeBoolean(true);
			dos.writeLong(100L);
			dos.writeChar('a');
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			if(dos!=null)
			try{
				dos.close();
			}catch(Exception e){
			}
		}
	}
}

import java.io.*;
public class DataIn{
	public static void main(String args[]){
		DataInputStream dis=null;
		try{
			dis=new DataInputStream(new FileInputStream("dataout.txt"));
			System.out.println(dis.readInt());
			System.out.println(dis.readBoolean());
			System.out.println(dis.readLong());
			System.out.println(dis.readChar());
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			if(dis!=null)
			try{
				dis.close();
			}catch(Exception e){
			}
		}
	}
}
 
分享到:
评论

相关推荐

    文件和流 文件和流 java文件和流

    java文件和流java文件和流java文件和流java文件和流java文件和流java文件和流java文件和流java文件和流java文件和流

    java读取图片文件流

    java读取本地图片文件获取流!java读取本地图片文件获取流!

    Java流(文件读写操作)

    Java中处理文件和数据时,使用流的概念来进行操作。根据不同的标准,流可以分为几种类型。 ##### 1. 按数据流动方向 - **输入流**:主要用于从数据源读取数据。输入流只能从中读取数据,而不能向其中写入数据。...

    java post文件流的操作

    在Java中,通过`HttpURLConnection`类可以轻松地实现POST请求,用于发送和接收文件流。该方法主要涉及到以下几个步骤: - **创建URL对象**:首先需要根据指定的URL地址创建一个`URL`对象。 - **设置HTTP连接属性**...

    Java中文件IO流.pdf

    文件流是指在程序中用于文件输入输出的对象, Java 中提供了多种文件流类型,包括 InputStream 和 OutputStream 两大类。 InputStream 是 Java 中的输入流接口,用于读取文件的内容,常用的 InputStream 子类包括 ...

    java文件与流操作code

    Java文件与流操作是Java编程中的重要组成部分,主要用于数据的读写、传输和处理。在Java中,I/O(输入/输出)系统是通过流(Stream)的概念来设计的,流是数据传输的抽象表示,可以是文件、网络连接、内存缓冲区等。...

    JAVA文件流控制台程序

    在Java编程语言中,文件流是用来处理输入/输出...在"JAVA文件流控制台程序"这个示例中,我们可以通过阅读和分析提供的两个文件(Java写入文件1.txt和java写入文件.txt),进一步理解这些概念和技术在实际项目中的运用。

    JAVA流文件全部例子

    JAVA流文件全部例子JAVA流文件全部例子JAVA流文件全部例子JAVA流文件全部例子JAVA流文件全部例子JAVA流文件全部例子JAVA流文件全部例子JAVA流文件全部例子JAVA流文件全部例子JAVA流文件全部例子

    Java文件流关闭和垃圾回收问题

    周末碰到一段代码,是关于Java IO流的,代码中出现在一个多线程的系统中,其中一段代码在打开一个文件操作流用完以后没有及时关闭,开始以为很快会出现打开文件太多或者导致内存溢出,但是在运行了很长时间以后仍然...

    基于Java文件输入输出流实现文件上传下载功能

    本文将详细介绍基于Java文件输入输出流实现文件上传下载功能的相关知识点,包括文件上传和下载的实现原理、Java文件输入输出流的基础操作、Servlet的使用等。 文件上传 文件上传是指客户端将文件传输到服务器端的...

    java文件流操作.docx

    以下是对标题"java文件流操作.docx"和描述中提到的知识点的详细说明: 1. **字节流(Byte Stream)**: Java中的`InputStream`类用于处理字节流,它提供了一种按字节读取文件内容的方式。`FileInputStream`是`...

    Java流和文件总结(二)

    在Java编程语言中,流(Stream)和文件操作是核心概念,它们对于处理输入和输出数据至关重要。在本文中,我们将深入探讨Java流和文件处理的一些关键知识点。 首先,流是Java中的一个抽象概念,它代表了数据的有序...

    java文件流学习实验

    这个"java文件流学习实验"显然是一系列用Java编写的实验,目的是深入理解和掌握文件流的概念和应用。实验中的代码文件(Test11.java、Test12.java等)很可能包含了不同类型的文件流操作示例,如读取、写入、复制和...

    Java文件输入输出流.ppt

    Java文件输入输出流,详细描述了java对文件流的操作

    Java后端HttpClient Post提交文件流 及服务端接收文件流

    HttpClient Post提交多文件及多个普通参数,已经封装成工具类。 需传入 要请求的url 普通参数map 例 map.put("param1","张三"); 需要传入的文件流map 其中key为文件名 服务端接收无乱码。

    java的io流文件读写

    总之,Java的IO流提供了一套丰富的接口和类,用于处理各种输入输出任务,包括文件的读写。理解并熟练运用这些类和方法,是成为一名合格的Java开发者必不可少的技能。在实际项目中,根据需求选择合适的流类型和组合,...

    java文件流

    Java文件流 Java中的输入输出是以流(Stream)来方式来处理的,流是在计算机的输入、输出操作中流动的数据序列(从网上下载软件时能清晰地感受到)。在 Java 中,流是指一序列的数据元素,这些数据元素是从一个...

    java文件流操作[定义].pdf

    在Java编程中,文件流操作是处理文件输入和输出的核心技术。文件流允许程序以高效且灵活的方式读写文件内容,无论是文本文件还是二进制文件。本篇文章将详细阐述Java中的文件流操作,包括字节流和字符流的使用。 ...

    java 输入输出流

    3. **缓冲流**:为了提高性能,Java提供了缓冲流,如`BufferedReader`和`BufferedWriter`,它们在底层字节或字符流之上添加了一个缓冲区,减少了对底层资源的频繁访问。 4. **过滤流**:过滤流是在已存在的流基础上...

Global site tag (gtag.js) - Google Analytics