字符流 FileWriter FileReader 字节流 InputStream OutputStream FileOutputStream FileInputStream 的使用

来源:互联网 发布:淘宝平板电脑客户端 编辑:程序博客网 时间:2024/06/11 20:57
//  字符流  FileWriter  FileReader


public class FileWriterDemo {
public static void main(String[] args) throws IOException{
FileWriter fw = new FileWriter("demo.txt");
fw.write("abcde");
fw.close();
}
}


// 加public 后文件名要和类名相同   main是程序入口 必须是static
class FileWriterDemo2{
public static void main(String[] args){
FileWriter fw = null;
try {
fw = new FileWriter("demo2.txt");
fw.write("abcde");
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("catch:"+e.toString());
}
finally{// 在finally里面再try
try {
if(fw != null)
fw.close();
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("catch:"+e.toString());
}
}

}
}




class FileReaderDemo
{
public static void main(String[] args) throws IOException{
FileReader fr = new FileReader("demo.txt");
int ch = 0;
while((ch = fr.read()) != -1){// 字符流是一个一个字符在读
System.out.println((char)ch);
}
}
}


class FileReadDemo
{
public static void main(String[] args) throws IOException{
FileReader fr = new FileReader("demo.txt");// java都是先创建类再操作

char[] buf = new char[1024];
int num=0;
while((num=fr.read(buf)) != -1){// 读到数组中  注意是字符数组
System.out.println(new String(buf,0,num));
}
}
}


class copy // 实现拷贝功能
{
public static void main(String[] args) throws IOException{
FileReader fr = new FileReader("demo.txt");
FileWriter fw = new FileWriter("democopy.txt");

int num = 0;
char[] buf = new char[1024];

while((num = fr.read(buf)) != -1){
fw.write(buf, 0, num);
}

fr.close();
fw.close();
}
}




// 字符流的缓冲区


class BufferedWriterDemo
{
public static void main(String[] args) throws IOException
{
FileWriter fw = new FileWriter("buf.txt");
BufferedWriter bufw = new BufferedWriter(fw);// 缓冲区是为了提高写入效率
for(int x=1;x<5;x++){
bufw.write("abcd"+x);
bufw.newLine(); // 另起一行。
}
bufw.flush();// 刷新缓冲区
bufw.close();// 关闭
}
}




// 字节流  InputStream  OutputStream


class FileStream
{
public static void main(String[] args)throws IOException
{
// readFile_3();
// writeFile_3();
// readin();
// byteToChar();
fileIo();
}



private static void readin() throws IOException {
// TODO Auto-generated method stub
InputStream in = System.in;  //  利用系统输入 
StringBuilder sb = new StringBuilder(); // 创建字符串缓冲区

while(true)
{
int ch = in.read();
if(ch=='\r')
continue;
if(ch=='\n')
{
String s = sb.toString();
if("over".equals(s))
break;
System.out.println(s.toUpperCase());
sb.delete(0, sb.length()); // 创建字符串缓冲区 可能就是为了清空吧
}
else
sb.append((char)ch);// 写入字符串缓冲区
}
}


private static void writeFile_3() throws IOException {
// TODO Auto-generated method stub
FileOutputStream fop = new FileOutputStream("fos1.txt");
fop.write("abcde".getBytes());// 字符串转换为字节
fop.close();
}


private static void readFile_3() throws IOException {
// TODO Auto-generated method stub
FileInputStream fis = new FileInputStream("fos.txt");
byte[] buf = new byte[fis.available()];//  available()返回文本的字节长度
fis.read(buf);//  读到buf中
System.out.println(new String(buf));// 转化为字符串
fis.close();
}


//  将字节流 转换为字符流读入    将字节流转换为字符流写出


private static void byteToChar() throws IOException {
// TODO Auto-generated method stub
InputStream is = System.in;
InputStreamReader isr = new InputStreamReader(is);// 将字节流转化为字符流
BufferedReader bufr = new BufferedReader(isr);// 缓冲区技术  使用readline

OutputStream os = System.out;
OutputStreamWriter osw = new OutputStreamWriter(os);
BufferedWriter bufw = new BufferedWriter(osw);

String line = null;
while((line=bufr.readLine()) != null){
if("over".equals(line))
break;
bufw.write(line.toUpperCase());
bufw.newLine();
bufw.flush();
}
bufr.close();
bufw.close();
}



private static void fileIo(){
File dir = new File("H:");// java 是类的思想,先创建类  再利用类下的方法
showdir(dir);
}




private static void showdir(File dir) {
// TODO Auto-generated method stub
File[] files = dir.listFiles();
for(int x=0;x<files.length;x++){
if(files[x].isDirectory())
showdir(files[x]);
else
System.out.println(files[x]);
}
}


}
0 0
原创粉丝点击