Java输入,输出流笔记-1

文件是来源或者目的地,而输入流和输出流是一个通道;
文件像是沟渠,而输入输出流像是水管,用来抽水和输送水。

计算机的功能是处理数据,IO功能让计算机把未处理的数据流入程序,让已处理的数据流出;
Java的IO方式的复杂性也带来了灵活性,程序员可以控制整个IO流程,设计出好的IO方式。

File类

创建一个File类对象:
有3个构造方法:
File(String filename);
File(String directoryPath,String filename);
File(File dir,String filename);

File file = new File("javafile");
File file = new File("F:\\java","javafile");
File file = new File("java","javafile");

获取文件名和绝对路径:

System.out.println(file.getName()+"的绝对路径"+file.getAbsolutePath());

判断不存在名字为letter.txt文件后创建文件再删除:

File file = new File("F:\\java\\javafile","letter.txt");
		if(!file.exists()){
			try{
				file.createNewFile(); 
				// file调用方法 public boolean createNewFile() 有返回值为boolean型,所以需要try-catch语句防止异常;
			}
			catch(IOException e) { }
		}
		file.delete();

返回文件:
参数FilenameFilter是一个接口,该接口有一个方法:
public boolean accept(File dir,String name);
使用时需用新类实现接口并重写这个方法;

public String [] list()    //用字符串形式返回目录下的全部文件
public File [] listFiles() //用File对象形式返回目录下的全部文件

public String [] list(FilenameFilter obj)     //用字符串形式返回目录下的指定类型的所有文件
public File [] listFiles(FilenameFilter obj)  //用File对象形式返回目录下的指定类型的所有文件

运行可执行文件:
使用java.lang包中的Runtime类的exec(String command)方法
需声明并创建对象:Runtime ec = Runtime.getRuntime();

        try{
			Runtime ce = Runtime.getRuntime();
			File file = new File("c:\\windows","Notepad.exe");
			ce.exec(file.getAbsolutePath());
			file = new File("C:\\Program Files\\Internet Explorer","IEXPLORE www.baidu.com");
			ce.exec(file.getAbsolutePath());
		}
		catch(Exception e) {
			System.out.println(e);
		}

文件字节输入流

使用输入流通常包括4个基本步骤:
1.设定输入的源;
2.创建指向源的输入流;
3.让输入流读取源中的数据;
4.关闭输入流。

FileInputStream类(文件字节输入流)是InputStream类的子类(以字节为单位读取文件)

字节输入流的read()方法:
int read()
int read(byte b[])
int read(byte b[],int off,int len)

import java.io.*;

public class example{
	public static void main(String args[]){
		int n=-1;
		byte [] a = new byte[100];
		try{
			File f = new File("example.java");       //设定输入流的源
			InputStream in = new FileInputStream(f); //创建输入流并指向源
			//还可以直接创建输入流并指向源:InputStream in = new FileInputStream(example.java);
			while((n=in.read(a,0,100))!=-1) {        //用read()方法读取
				String s = new String (a,0,n);       //把读入的字节转化为字符串,注意要写成“n”
				System.out.print(s);
			}
			in.close();
		}
		catch(IOException e) {
			System.out.println("File read Error"+e);
		}
	}
}

注意:文件输入流和输出流都是用来打开一个到大文件的通道,所以在创建的时候,可能会出现异常,所以程序必须放在try-catch语句中。

文件字节输出流

同样有4个基本步骤:
1.给出输出流的目的地;
2.创建指向目的地的输出流;
3.让输出流把数据写入到目的地;
4.关闭输出流。

FileOutputStream类(文件字节输出流)是OutputStream类的子类
构造方法:
FileOutputStream(String name);
FileOutputStream(File file);

FileOutputStream(String name,boolean append);
FileOutputStream(File file,boolean append);

字节输出流的write()方法:
void write(int n)
void write(byte b[])
void write(byte b[],int off,int len)

import java.io.*;

public class example{
	public static void main(String args[]){
		byte [] a = "你好世界".getBytes();                //转化为字节形式
		byte [] b = "Hello World".getBytes();             
		File file = new File("a.txt");                    //输出目的地
		try{
			FileOutputStream out = new FileOutputStream(file); //指向目的地的输出流
			out.write(a);
			out.close();
			out = new FileOutputStream(file,true);       //append为true时重新开通上一个目的地的输入流
			out.write(b,0,b.length);
			out.close();
		}
		catch(IOException e) {
			System.out.println("Error:"+e);
		}
	}
}

文件字符输入,输出流

一个汉字在文件中占用两个字节,,如果使用字节流,以字节为单位处理数据,读取不当会出现错误。
与字节流FileInputStream,FileOutputStream字节流相对应的是字符流FileReader,FileWriter
分别是Reader和Writer的子类, 其构造方法分别是:
FileReader(String filename);
FileReader(File filename);

FileWriter(String filename);
FileWriter(File filename);
FileWriter(String filename,boolean append);
FileWriter(File filename,boolean append);

import java.io.*;

public class example_Cup{
	public static void main(String args[]){
		File sourceFile = new File("a.txt");
		File targetFile = new File("b.txt");
		char c[] = new char[20];
		try{
			Writer out = new FileWriter(targetFile,true);
			Reader in = new FileReader(sourceFile);
			int n = -1;
			while((n=in.read(c))!=-1){
				out.write(c,0,n);
			}
			out.flush();   //在关闭流前冲洗当前缓冲区,将当前缓冲区的内容写入到目的地
			out.close();
		}
		catch(IOException e) {
			System.out.println("Error "+e);
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java基础知识笔记通常会涵盖以下几个核心主题: 1. Java概述:包括Java的历史、平台无关性、JVM(Java Virtual Machine)的作用和Java的核心API(如java.lang包)。 2. 数据类型和变量:基本数据类型(如int, float, char等)、引用类型(如String, Object),以及变量的声明、初始化和作用域。 3. 控制结构:条件语句(if-else, switch)、循环(for, while, do-while)、异常处理(try-catch-finally)。 4. 类和对象:封装、继承和多态的概念,类的定义、构造函数和析构函数,以及实例化对象和方法调用。 5. 面向对象编程:接口、抽象类和它们的区别,以及设计模式的基本概念。 6. 数组和集合:数组的定义、操作,以及ArrayList、LinkedList、HashMap等常用集合框架的使用。 7. 输入输出:文件I/O、标准输入输出(System.in/out)的处理。 8. 方法和函数:静态方法、重载方法、递归等。 9. 异常处理:异常的抛出、捕获和处理机制。 10. IO和网络编程:Socket编程、HTTP请求等。 创建一个Markdown格式的笔记,可能会包括标题、列表项、代码示例和注释。例如: ```markdown # Java基础笔记 ## 1. Java简介 - Java语言特点: 平台无关性、垃圾回收机制 - JVM: 负责执行Java字节码 ## 2. 数据类型 - int, double, String等基本类型 - ```java // 声明并初始化一个整型变量 int num = 10; ``` ## 3. 控制结构 - if-else: 条件判断 - ```java if (num > 0) { System.out.println("Positive"); } ``` ... ### 附录:常用类库 - java.util: 集合框架 - java.io: I/O处理 ``` FileInputStream fileIn = new FileInputStream("file.txt"); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值