知识点总结(Java IO):
操作文件的类--File
File是唯一表示与文件本身有关的类,使用它可以进行创建或删除文件等操作。
File类的构造方法:
public File(String pathname) -->实例化File的时候,必须设计好路径。
public static final String separator (Windows中表示路径的分隔符 "")
基础操作代码:
package test;
import java.io.File;
import java.io.IOException;
public class FileDemo{
public static void main (String args[]){
File f = new File("d:" + File.separator + "test.txt"); //文件路径
if(f.exists()){ //判断文件是否存在
f.delete(); //删除文件
}else{
try{
f.createNewFile(); //创建文件
}catch(IOException)
}
}
}
字节流基本操作
一,字节流
1.字节输出流:OutputStream
OutputStream是整个IO包中字节输出溜的最大父类,此类的定义如下
public abstract class OutputStream
extends Object
implements Closeable, Flushable
OutputStream类中常用的方法:
1.public void close() throws IOException 关闭输出流
2.public void flush() throws IOException 刷新缓冲区
3.public void write(byte[] b) throws IOEception 将一个byte数组写入数据流
4.public void write (byte[] b, int off, int len) throws IOException 将一个指定范围的byte数组写入数据流
5.public abstract void write (int b)throws IOEXception 将一个字节流数据写入数据流
在写入操作中,重新执行程序,则肯定会覆盖文件中的已有内容,此时可以通过File Output Stream类中的另一种构造方法进行实例化,向文件中追加内容:
public FileOutputStream(File file, boolean append)throws FileNotFoundException
在此构造方法中,将append的值设置为true,则表示在文件末尾追加新内容。
2.字节输入流 :InputStream
定义:
public abstract class InputStream
extends Object
implements Closeable
InputStream类的常用方法:
1.public int available() throws IOException 取得输入文件的大小
2.public void close() throws IOException 关闭输入流
3.public abstract int read() throws IOEception 读取内容,以数字的方式读取
4.public int read ( byte[] b) throws IOException 将内容读到byte数组之中,同时访问读入的个数
二,字符流和字节溜差不多
Writer: 字符输出流
Reader :字符输入流
三,转换流OutputStreamWriter类与IntputStreamReader类
OutputStreamWriter类是Writer的子类将输出的字符流变为字节流,即将一个字符流的输出对象变为字节流的输出对象。如下
Writer w=new OutputStreamWriter(new FileOutputStream(f));
IntputStreamReader类是Reader的子类将输入的字节流变为字符流,即将一个字节流的输入对象变为字符流的输入对象
Reader r=new InputStreamReader(new FileInputStream(f));
内存操作流程:
字节内存流:
ByteArrayInputStream(内存字节输入流);
ByteArrayOutputStream(内存字节输出流);
字符内存流:
CharArrayReader(内存字节输入流);
CharArrayWriter(内存字节输出流)
首先是要声明内存的输入输出流,再去进行操作。
四,管道流:
主要作用是可以进行两个线程间的通信
管道输出流:PipedOutputSream;
管道输入流:PipedInputStream
用connect()方法来连接输出和输入流
五,打印流PrintStream
打印流进行格式化和C语言差不多
六,System类
1)System.out 向显示器上输出,是PrintStream的对象,PrintStream是OutputStream的字类,所以可以使用OutputStream向屏幕输出
2)Syatem.err 错误信息输出
3)System.in 键盘的输入流,是InputStream的对象
问题:字节流输出时,偶数位小写,奇数位大写
package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
public class Ten {
public static void main (String args[]) throws Exception {
File f = new File("d:" + File.separator + "test.txt");
InputStream ip = new FileInputStream(f);
byte a[] = new byte[(int) f.length()];
for(int i = 0; i < f.length(); i++) {
a[i] = (byte)ip.read();
if(i%2 == 0 && (a[i] >= 'a' && b[i] <= 'z')) {
a[i] = (byte) (a[i] - 32);
}
}
ip.close();
System.out.println(new String(a));
}
}