黑马程序员 File&Properties&URL

------- android培训java培训、期待与您交流! ----------


File类



File类是文件和目录路径名的抽象表示形式。


构造方法:
  • public File(File parent, String child):根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。
  • public File(String pathname):通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。如果给定字符串是空字符串,那么结果是空抽象路径名。
常用方法:
1、创建:
  •     boolean createNewFile() :创建新文件,返回true,如果文件已存在,则不作操作并返回false,区别于流的创建(流对象创建文件,已存在会覆盖)
  •     boolean mkdir() :创建一级文件夹
  •     boolean mkdirs() :创建多级文件夹
2、删除:
  •     boolean delete() :删除文件 成功删除则返回true
  •     boolean deleteOnExit() :在程序退出时删除文件
3、判断:
  •     boolean canExecute();:是否是可执行文件
  •     boolean exists();:文件是否存在
  •     boolean isFile();:是否是文件
  •     boolean isDirectory();:是否是文件夹
  •     boolean isHidden();:是否是隐藏文件
  •     boolean isAbsolute();:文件是否是绝对路

在判断文件对象是否是文件或者目录时,必须先用exists()判断该文件对象是否存在。

4、获取属性:

  •     String getName() :获取文件名
  •     String getPath() :获取文件的相对路径(即创建的对象传入的参数是什么就获取到什么)
  •     String getParent() :获取文件父目录。返回的是绝对路径中的父目录。如果获取的是相对路径,返回null。如果相对路径中有上一层目录,那么该目录就是返回结果。
  •     String getAbsolutePath() :获取文件的绝对路径 
  •     long lastModified() :返回文件最后一次被修改的时间
  •     long length() :返回文件长度
其他方法:
  •     String[] list() :列出当前目录下所有文件。
  •     String[] list(FilenameFilter filter) :返回一个路径名数组,获取目录中满足指定过滤器的文件或目录。
  •     File[] listFiles() :列出当前目录下所有文件,将路径下的文件封装成File对象并返回


例子:
打印一个指定目录下指定后缀文件地址
import java.io.*;


/**
 * 需求:将一个指定的文件夹中的全部指定格式的文件将其路径写入一个列表目录中
 * 思路:递归指定文件夹中的全部文件,并判断文件是否是指定后缀名,若是则得到其绝对地址并写入列表目录
 * 
 * 		源:内存 		目标:硬盘文件
 * 		输入流对象:无	输出流对象:FileWriter(字符流)
 * 
 * */
public class GetJavaList {


	public static void main(String[] args)  {
		
		File file=new File("F:\\study\\java\\code");
		StringBuilder sb= new StringBuilder();
		getlist(file,sb);
		FileWriter fw = null;
		try
		{
			fw = new FileWriter("F:\\study\\java\\test.txt");
			fw.write(sb.toString());
		}
		catch(Exception e)
		{
			throw new RuntimeException("创建写入文件失败");
		}
		finally
		{
			try
			{
				if(fw!=null)
					fw.close();
			}
			catch(Exception e)
			{
			  e.printStackTrace();
			}
		}
	}
	public static void getlist(File file,StringBuilder sb)
	{
		File[] fi = file.listFiles();
		for(File fi_1:fi)
		{
			if(fi_1.isDirectory())
			{
				getlist(fi_1,sb);
			}
			else if(fi_1.toString().endsWith(".java"))
			{
				sb.append(fi_1.getAbsolutePath()+"\r\n");
			}
		}
	}
}



例子:删除一个指定目录下的所有文件


import java.io.*;


/**
 * 需求:删除一个有内容的文件夹
 * 
 * 思路:由内到外删除。先递归删除内部 全部文件,再删除文件夹
 * 
 * 
 * */
public class DelFileNoNull {


	public static void main(String[] args) {


		File file=new File("F:\\学习\\java\\code\\new");
		delFiles(file);
		file.delete();
	}
	public static void delFiles(File fi)
	{
		File[] file=fi.listFiles();
		
			for(File afile:file)
			{
				if(afile.isDirectory())//如果该File对象是文件夹则递归
				{
					delFiles(afile);
				}
				afile.delete();//删除该File文件对象指向的文件/文件夹
			}


	}


}





Properties类



Properties类是Properties 类表示了一个持久的属性集,继承于 Hashtable。


常用方法:
1、设置
  •  public Object setProperty(String key,String value) :设置键值,调用 Hashtable 的方法 put。
2、获取
  • public String getProperty(String key) :用指定的键在此属性列表中搜索属性。如果在此属性列表中未找到该键,则接着递归检查默认属性列表及其默认值。如果未找到属性,则此方法返回 null。 
  • public void store(OutputStream out,String comments):以适合使用 load(InputStream) 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。 
  • public void store(Writer writer, String comments):以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符。 
  • void list(PrintStream ps) :将键值对信息从打印流输出
  • public Set<String> stringPropertyNames():返回此属性列表中的键集,其中该键及其对应值是字符串。

3、存储
  • public void load(InputStream inStream) :从输入流中读取属性列表(键和元素对)。
  • public void load(Reader reader):从输入流中读取属性列表(键和元素对)。

import java.io.*;
import java.util.*;


/**
 * 需求:定义配置文件,使得本程序只能打开并使用5次,第6次则弹出“使用次数用完”;
 * 
 * 思路:定义配置文件,这个文件是写入在硬盘上的,每次启动程序时调用读取,其保存的形式应该是以键值对的形式
 * 
 * 键值对的保持离不开map而文件写入写出离不开输入输出流,可以使用输入输出流与map中的桥梁Properties
 * 
 * 源;硬盘文件						中介	内存					目的:硬


盘文件
 * 输入流对象:FileInputStream		中介  Properties			输出流对象:FileOutputStream
 * 
 * */
public class SoftwareCount {


	public static void main(String[] args) throws IOException
	{
		// TODO Auto-generated method stub
		Properties pro = new Properties();//
		File file = new File("F:\\Properties.ini");
		if(!file.exists())
		{
			file.createNewFile();
		}
		
		pro.load(bfr);
		String value=pro.getProperty("time");


		int count=0;
		if(value!=null)
		{
			count = Integer.parseInt(value);
			if(count>=5)
			{
				System.out.println("使用次数已用完");
				return ;
			}
		}
		count++;
		
		pro.setProperty("time", count+"");
		pro.store(bfw,"");
		
		bfr.close();
		bfw.close();
		
	}


}


URL和URLConnection



1、URL:
        URI:范围更大,条形码也包含于此范围
        URL:范围较小,即域名

构造方法:

  • URL(String protocol,String host,int port,String file);根据指定 protocol、host、port号和 file 创建 URL对象。

     常用方法:

  • String getProtocol();获取协议名称
  • String getHost();获取主机名
  • int getPort();获取端口号
  • String getFile();获取URL文件名
  • String getPath();获取此URL的路径部分
  • String getQuery();获取此URL的查询部,客户端传输的特定信息

注:一般输入网址,是不带端口号的,此时可进行获取,通过获取网址返回的port,若port为-1,则分配一个默认的80端口,如
        int port = getPort();
        if(port == -1)
              port = 80;
2、URLConnection
常用方法:
  • URLConnection openConnection();用URL调用此方法,返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。
  • InputStream getInputStream();获取输入流
  • OutputStream getOutputStream();获取输出流




/
*
自定义浏览器,显示网页信息
*/


import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.net.*;


class MyIEGUIDemo
{
	//定义所需组件引用
	private Frame f;
	private Button but,bok;
	private TextField tf;
	private TextArea ta;


	//构造函数
	MyIEGUIDemo()
	{
		init();
	}


	//窗体基本设置于功能实现
	public void init()
	{
		//组件实例化
		f=new Frame("我的Window");
		but=new Button("跳转");
		tf=new TextField(50);
		ta=new TextArea(25,60);


		//基本设置
		f.setBounds(300,150,500,500);
		f.setLayout(new FlowLayout());


		//添加组件
		f.add(tf);
		f.add(but);
		f.add(ta);


		//窗体事件
		myEvent();


		//窗体显示
		f.setVisible(true);
	}


	//注册事件
	public void myEvent()
	{
		//窗体关闭功能
		f.addWindowListener(new WindowAdapter()
		{
			public void windowClosing(WindowEvent e)
			{
				System.exit(0);
			}
		});


		//“跳转”按钮事件
		but.addActionListener(new ActionListener()
		{
			public void actionPerformed(ActionEvent e)
			{
				showFile();//显示网页内容在文本区中
			}
		});


		


		//文本框键盘事件
		tf.addKeyListener(new KeyAdapter()
		{
			public void keyPressed(KeyEvent e)
			{
				//如果键盘按下Enter键,就将网页内容显示在文本区中
				if(e.getKeyCode()==KeyEvent.VK_ENTER)
					showFile();
			}
		});
	}


	//显示网页内容
		private void showFile()
		{
			ta.setText("");
			String path=tf.getText();//获取输入的路径
			try
			{
				//封装地址对象
<span style="white-space:pre">				</span>URL url =new URL(path);
<span style="white-space:pre">				</span>
				URLConnection conn=url.openConnection();
				//读取流,用于读取服务器返回数据
				InputStream in=conn.getInputStream();


				byte[] buf=new byte[1024*1024];


				int len=in.read(buf);
				//将数据显示在文本区中
				ta.append(new String(buf,0,len));
			}
			catch (Exception e)
			{
				throw new RuntimeException("连接"+path+"网站失败");
			}
		}


	public static void main(String[] args) 
	{
		//运行窗体
		new MyIEGUIDemo();
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值