2011年5月21日星期六
第四十四讲 io编程
1.创建文件用:f2.createNewFile();
创建文件夹:f3.mkdir();
2.列出文件: File lists[]=f4.listFiles();
package IOStream;
import java.io.*;
public class Demo11_1
{
public static void main(String[] args)
{
File f=new File("d:/a.txt");
//得到文件的路劲
System.out.println("文件路径:"+f.getAbsolutePath());
//得到文件的大小
System.out.println("文件大小:"+f.length());// 返回文件的字节大小
System.out.println("可读:"+f.canRead());//可不可读
//创建文件和文件夹
File f2=new File("d:\\hsp.txt");
if(!f2.isFile())
{
//可以创建
try {
f2.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}else
{
System.out.println("有文件不能创建");
}
//创建文件夹
File f3=new File("d:\\ffddd");
if(f3.isDirectory())
{
System.out.println("文件夹存在");
}
else
{
f3.mkdir();
}
//列出文件夹下面的所有文件
File f4=new
File("d:\\dd");
if(f4.isDirectory())
{
File
lists[]=f4.listFiles();
for(int i=0;i
{
System.out.println("文件名:"+lists[i]);
}
}
else
{
f4.mkdir();
}
}
}
3.文件字节流
读取文件:FileInputStream,因为File没有读写能力,所以用个FileInputStream
4.记得关闭文件
package IOStream;
import java.io.*;
public class Demo11_2
{
public static void main(String[] args)
{
File f=new File("d:\\test.txt");
FileInputStream fis=null;
try {
//因为File没有读写能力,所以用个FileInputStream
fis=new FileInputStream(f);
//定义一个字节数组,相当于是缓存
byte []bytes=new byte[1024];
//得到实际读取到的字节数
int n=0;
//循环读取
while((n=fis.read(bytes))!=-1)
{
//把字节转化成String
String s=new String(bytes,0,n);
System.out.println(s);
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
//关闭文件流要放在这里
try
{
fis.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
5.
package IOStream;
import java.io.*;
public class Demo11_3
{
public static void main(String[] args)
{
File f=new File("d:\\ss.txt");
//字节输出流
FileOutputStream fos=null;
try
{
fos=new FileOutputStream(f);
//如果数据量大的话,定义数组,把String转换成字节数组,这里就buy
String s="12312231235555\r\n";//必须是回车再换行,注意顺序
String s2="ddddddd";
fos.write(s.getBytes());
fos.write(s2.getBytes());
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try {
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
第四十五讲 iO编程
1.图片拷贝
package com.test4;
import java.io.File;
import java.io.FileInputStream;
import
java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Demo12_4
{
public static void main(String[] args)
{
//先把图片读入到内存,再想办法将其写入某个文件
//因我是二进制文件,因此只能用字节流完成
FileInputStream fis=null;
//定义输出流
FileOutputStream fos=null;
try
{
File f1=new File("c:\\a.jpg");
fis=new FileInputStream(f1);
fos=new FileOutputStream("d:\\a.jpg");
byte buf[]=new byte[1024];
int n=0;//记录实际读取的字节数
//循环次数
while((n=fis.read(buf))!=-1)
{
//输出到指定文件
fos.write(buf);
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try {
fis.close();
fos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
2.
3.
package com.test4;
import java.io.*;
public class Demo12_5
{
public static void main(String[] args)
{
//文件取出字符流对象
FileReader fr=null;
//写入到文件
FileWriter fw=null;
try
{
//创建fr对象
fr=new FileReader("c:\\ttt.txt");
//创建输出对象
fw=new FileWriter("d:\\ccc.txt");
int n=0;//记录实际读取到的字符数
char c[]=new char[1024];
while((n=fr.read(c))!=-1)
//read返回已经读取的数目,到了文件的末尾就返回-1,read本身有两种状态,要么刚读完返回c.length要么返回-1,所以相当于只有两个过程
{
System.out.println("n="+n);
String s=new String(c,0,n);//从0开始读取n个
System.out.println(s);
//fw.write(c);//写了所有的整块数据,1024的整数倍
fw.write(c, 0, n);//按照实际长度写,不会有浪费的码
}
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
try {
fw.close();
fr.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
4.常用IO流——缓冲字符流,直接操作String
BufferedReader StreamReader
5.总结:
FileInputStream文件字节流:
File f=new
File("d:\\test.txt");
FileInputStream fis=null;
FileReader文件字符流: fr=new FileReader("c:\\ttt.txt");
fw=new FileWriter("d:\\ccc.txt");
BufferedReader缓冲字符流: fr = new FileReader("c:\\ttt.txt");
(读行)
br=new BufferedReader(fr);
第四十六讲 IO编程 记事本开发
package com.test7;
import java.io.*;
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class NotePad
extends JFrame implements ActionListener
{
//定义需要的组件
JTextArea
jta=null;
//定义菜单条
JMenuBar
jmb=null;
//第一JMenu
JMenu
jm1=null;
JMenuItem
jmi1=null;
JMenuItem
jmi2=null;
public static void main(String[] args)
{
NotePad notepad=new NotePad();
}
public NotePad()
{
//创建jta
jta=new JTextArea();
jmb=new JMenuBar();
jm1=new JMenu("文件");
jm1.setMnemonic('F');
jmi1=new JMenuItem("打开",new
ImageIcon("weixiao.gif"));
jmi2=new JMenuItem("保存",new
ImageIcon("ziya.gif"));
//注册监听
jmi1.addActionListener(this);
jmi1.setActionCommand("open");
//对保存菜单的操作
jmi2.addActionListener(this);
jmi2.setActionCommand("save");
jm1.add(jmi1);
jm1.add(jmi2);
jmb.add(jm1);
this.setJMenuBar(jmb);
//放入到JFrame
this.add(jta);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(400, 300);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
//判断哪个菜单被选中
if(e.getActionCommand().equals("open"))
{
//System.out.println("open");
//使用JFileChooser
JFileChooser jfc1=new JFileChooser();
//设置名字
jfc1.setDialogTitle("请选择文件:");
jfc1.showOpenDialog(null);
//显示
jfc1.setVisible(true);
//得到用户选择的文件路径
String filename=jfc1.getSelectedFile().getAbsolutePath();
//System.out.println(filename);//显示绝对路径
FileReader fr=null;
BufferedReader br=null;
try
{
fr=new FileReader(filename);
br=new BufferedReader(fr);
//从文件中读取信息
String s="";
String allCon="";
while((s=br.readLine())!=null)
{
//输出到JTextFile
allCon+=(s+"\r\n");
}
//放置到JTextFile中
jta.setText(allCon);
}
catch (Exception e1)
{
e1.printStackTrace();
}
finally
{
try {
br.close();
fr.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
else if (e.getActionCommand().equals("save"))
{
JFileChooser jfc2=new JFileChooser();
jfc2.setDialogTitle("另存为…");
jfc2.showSaveDialog(null);
//按默认的方式显示
jfc2.setVisible(true);
//得到用户希望把文件保存到何处
String file=jfc2.getSelectedFile().getAbsolutePath();
//准备写入到指定的文件
FileWriter fw=null;
BufferedWriter bw=null;
try
{
fw=new FileWriter(file);
bw=new BufferedWriter(fw);
bw.write(this.jta.getText());
}
catch (IOException e1)
{
e1.printStackTrace();
}
finally
{
try {
bw.close();
fw.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
}