黑马程序员_IO流_Properties学习
2012-06-24 20:46
274 查看
------------------------------android培训、java培训、期待与您交流!----------------------------------------------------------------
Properties是hashtable的子类。
也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。
是集合中和IO技术相结合的集合容器。
该对象的特点:可以用于键值对形式的配置文件。
那么在加载数据时,需要数据有固定格式:键=值。
需求:演示Properties类的基本方法使用,设置和获取元素。
public static void setAndGet()
{
Properties prop = newProperties();
prop.setProperty("zhangsan","30");
prop.setProperty("lisi","39");
//System.out.println(prop);
String value =prop.getProperty("lisi");
//System.out.println(value);
prop.setProperty("lisi",89+"");
Set<String> names = prop.stringPropertyNames();//JDK1,6 中出现的,将Hash集合转化成Set集合.
for(String s : names)
{
System.out.println(s+":"+prop.getProperty(s));
}
}
}
需求: 如何将流中的数据存储到集合中,将info.txt中键值数据存到集合中进行操作。
1,用一个流和info.txt文件关联。
2,读取一行数据,将该行数据用"="进行切割。
3,等号左边作为键,右边作为值。存入到Properties集合中即可。
importjava.io.*;
importjava.util.*;
publicstatic void method_1()throws IOException//想操作文件先挂上”流”
{
BufferedReaderbufr = new BufferedReader(new FileReader("info.txt"));先转成流中
String line = null;
Properties prop = newProperties();
while((line=bufr.readLine())!=null)
{
String[]arr = line.split("=");//将中间的=切割.
///System.out.println(arr[0]+"...."+arr[1]);//看是否拿到数据.
prop.setProperty(arr[0],arr[1]);//左边作为键,右边作为值。存入到Properties集合中.
}
bufr.close();
System.out.println(prop);//打印集合中是否 有数据.
publicstatic void loadDemo()throws IOException
{
Properties prop = newProperties();
FileInputStream fis = newFileInputStream("info.txt");
prop.load(fis); //将流中的数据加载进集合。
System.out.println(prop);
prop.list(System.out);
prop.setProperty("wangwu","39");//改变是集合中的结果.也就是存在于内存中的结果.
prop.store(fos,"haha");//改变的是硬盘中的键值对的信息.
fos.close();
fis.close();
}
}
需求: 限制程序运行次数。当运行次数到达5次时,给出,请您注册的提示。并不再让该程序执行。
用于记录应用程序运行次数。
如果使用次数已到,那么给出注册提示。
很容易想到的是:计数器。
可是该计数器定义在程序中,随着程序的运行而在内存中存在,并进行自增。
可是随着该应用程序的退出,该计数器也在内存中消失了。
下一次在启动该程序,又重新开始从0计数。
这样不是我们想要的。
程序即使结束,该计数器的值也存在。
下次程序启动在会先加载该计数器的值并加1后在重新存储起来。
所以要建立一个配置文件。用于记录该软件的使用次数。
该配置文件使用键值对的形式。
这样便于阅读数据,并操作数据。
键值对数据是map集合。
数据是以文件形式存储,使用io技术。
那么map+io -->properties.
配置文件可以实现应用程序数据的共享。
import java.io.*;
import java.util.*;
class RunCount
{
publicstatic void main(String[] args) throws IOException
{
Propertiesprop = new Properties();
Filefile = new File("count.ini");//文件存在,先把文件封装成对象,就不会报异常.
if(!file.exists())//可以对文件来判断.
file.createNewFile();
FileInputStream fis = new FileInputStream(file);//文件读取流.
prop.load(fis);
intcount = 0;//是计数器.
String value =prop.getProperty("time"); 此时value为null.
if(value!=null)
{
count = Integer.parseInt(value);//获取次数.
if(count>=5)
{
System.out.println("您好,使用次数已到,拿钱!");
return ;
}
}
count++;
prop.setProperty("time",count+"");
FileOutputStreamfos = new FileOutputStream(file);//建立一个输出流.
prop.store(fos,"");//将
fos.close();
fis.close();
}
}
an";��rr���o� �注意递归的次数。尽量避免内存溢出。
importjava.io.*;
classFileDemo3
{
public static void main(String[] args)
{
File dir = newFile("d:\\testdir");
//showDir(dir,0);
System.out.println(dir.delete());
}
public static String getLevel(int level)
{
StringBuilder sb = newStringBuilder();
sb.append("|--");
for(int x=0; x<level; x++)
{
//sb.append("|--");
sb.insert(0,"| ");
}
return sb.toString();
}
public static void showDir(File dir,int
level)
{
System.out.println(getLevel(level)+dir.getName());//打印下目录的完整路径.
level++;
File[] files = dir.listFiles();
for(int x=0; x<files.length;x++)
{
if(files[x].isDirectory())
showDir(files[x],level);
else
System.out.println(getLevel(level)+files[x]);
}
}
递归运算的最简单实现:
publicstatic void toBin(int num)
{
if(num>0)
{
toBin(num/2);
System.out.println(num%2);
// num = num/2;
}
}
需求: 删除一个带内容的目录。
删除原理:
在window中,删除目录从里面往外删除的。
既然是从里往外删除。就需要用到递归。
importjava.io.*;
class RemoveDir
{
public static void main(String[] args)
{
File dir = newFile("d:\\testdir");
removeDir(dir);
}
public static void removeDir(File dir)
{
File[] files = dir.listFiles();
for(File file : files)
{
if(!files[x].isHidden()&&files[x].isDirectory())
removeDir(files[x]);
else
System.out.println(files[x].toString()+":-file-:"+files[x].delete());//删除文件判断是否删除成功. 当误删除操作时出现false.
}
System.out.println(dir+"::dir::"+dir.delete());//删除文件夹.
}
}
需求: 建立一个java文件列表文件。
将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。
1,对指定的目录进行递归。
2,获取递归过程所有的java文件的路径。
3,将这些路径存储到集合中。
4,将集合中的数据写入到一个文件中。
importjava.io.*;
importjava.util.*;
class JavaFileList
{
public static void main(String[] args)throws IOException
{
File dir = newFile("d:\\java1223");
List<File> list = newArrayList<File>();
fileToList(dir,list);
//System.out.println(list.size());
Filefile = new File(dir,"javalist.txt");//文件创建到d:\\java1223中.
writeToFile(list,file.toString());//file对象的字符串形式是绝对路径., 返回此抽象路径名的路径名字符串。
}
public static void fileToList(File dir,List<File> list)//j将文件存到集合中,这方法要在里面递归,
{
File[] files = dir.listFiles();
for(File file : files)
{
if(file.isDirectory())
fileToList(file,list);
else
{
if(file.getName().endsWith(".java"))
list.add(file);
}
}
}
public static void writeToFile(List<File> list,String
javaListFile)throwsIOException//将集合中的数据存储到文本文件中.
{
BufferedWriterbufw = null;//try外面定义.
try
{
bufw = newBufferedWriter(new FileWriter(javaListFile));
for(File f : list)
{
String path =f.getAbsolutePath();
bufw.write(path);
bufw.newLine();// 写入一个行分隔符。
bufw.flush();
}
}
catch (IOException e)
{
throw e;
}
finally
{
try
{
if(bufw!=null)
bufw.close();
}
catch (IOException e)
{
throw e;//不处理,让调用此方法的对方 处理.
}
}
}
}
-----------------------------android培训、java培训、期待与您交流!----详细请查看:http://edu.csdn.net/heima---------------
类 Properties
java.lang.Object
java.util.Dictionary<K,V>
java.util.Hashtable<Object,Object>
java.util.Properties
Properties是hashtable的子类。
也就是说它具备map集合的特点。而且它里面存储的键值对都是字符串。
是集合中和IO技术相结合的集合容器。
该对象的特点:可以用于键值对形式的配置文件。
那么在加载数据时,需要数据有固定格式:键=值。
需求:演示Properties类的基本方法使用,设置和获取元素。
public static void setAndGet()
{
Properties prop = newProperties();
prop.setProperty("zhangsan","30");
prop.setProperty("lisi","39");
//System.out.println(prop);
String value =prop.getProperty("lisi");
//System.out.println(value);
prop.setProperty("lisi",89+"");
Set<String> names = prop.stringPropertyNames();//JDK1,6 中出现的,将Hash集合转化成Set集合.
for(String s : names)
{
System.out.println(s+":"+prop.getProperty(s));
}
}
}
需求: 如何将流中的数据存储到集合中,将info.txt中键值数据存到集合中进行操作。
1,用一个流和info.txt文件关联。
2,读取一行数据,将该行数据用"="进行切割。
3,等号左边作为键,右边作为值。存入到Properties集合中即可。
importjava.io.*;
importjava.util.*;
publicstatic void method_1()throws IOException//想操作文件先挂上”流”
{
BufferedReaderbufr = new BufferedReader(new FileReader("info.txt"));先转成流中
String line = null;
Properties prop = newProperties();
while((line=bufr.readLine())!=null)
{
String[]arr = line.split("=");//将中间的=切割.
///System.out.println(arr[0]+"...."+arr[1]);//看是否拿到数据.
prop.setProperty(arr[0],arr[1]);//左边作为键,右边作为值。存入到Properties集合中.
}
bufr.close();
System.out.println(prop);//打印集合中是否 有数据.
void | list(PrintWriter out) 将属性列表输出到指定的输出流。 |
void | load(InputStream inStream) 从输入流中读取属性列表(键和元素对)。 |
publicstatic void loadDemo()throws IOException
{
Properties prop = newProperties();
FileInputStream fis = newFileInputStream("info.txt");
prop.load(fis); //将流中的数据加载进集合。
System.out.println(prop);
prop.list(System.out);
void | list(PrintWriter out) 将属性列表输出到指定的输出流。 |
prop.setProperty("wangwu","39");//改变是集合中的结果.也就是存在于内存中的结果.
void | store(OutputStream out, String comments) 将此 Properties 表中的属性列表(键和元素对)写入输出流。 |
prop.store(fos,"haha");//改变的是硬盘中的键值对的信息.
fos.close();
fis.close();
}
}
需求: 限制程序运行次数。当运行次数到达5次时,给出,请您注册的提示。并不再让该程序执行。
用于记录应用程序运行次数。
如果使用次数已到,那么给出注册提示。
很容易想到的是:计数器。
可是该计数器定义在程序中,随着程序的运行而在内存中存在,并进行自增。
可是随着该应用程序的退出,该计数器也在内存中消失了。
下一次在启动该程序,又重新开始从0计数。
这样不是我们想要的。
程序即使结束,该计数器的值也存在。
下次程序启动在会先加载该计数器的值并加1后在重新存储起来。
所以要建立一个配置文件。用于记录该软件的使用次数。
该配置文件使用键值对的形式。
这样便于阅读数据,并操作数据。
键值对数据是map集合。
数据是以文件形式存储,使用io技术。
那么map+io -->properties.
配置文件可以实现应用程序数据的共享。
import java.io.*;
import java.util.*;
class RunCount
{
publicstatic void main(String[] args) throws IOException
{
Propertiesprop = new Properties();
Filefile = new File("count.ini");//文件存在,先把文件封装成对象,就不会报异常.
if(!file.exists())//可以对文件来判断.
file.createNewFile();
FileInputStream fis = new FileInputStream(file);//文件读取流.
prop.load(fis);
intcount = 0;//是计数器.
String value =prop.getProperty("time"); 此时value为null.
if(value!=null)
{
count = Integer.parseInt(value);//获取次数.
static int | parseInt(String s) 将字符串参数作为有符号的十进制整数进行分析。 |
if(count>=5)
{
System.out.println("您好,使用次数已到,拿钱!");
return ;
}
}
count++;
prop.setProperty("time",count+"");
FileOutputStreamfos = new FileOutputStream(file);//建立一个输出流.
prop.store(fos,"");//将
Properties表中的属性列表(键和元素对)写入输出流
fos.close();
fis.close();
}
}
an";��rr���o� �注意递归的次数。尽量避免内存溢出。
importjava.io.*;
classFileDemo3
{
public static void main(String[] args)
{
File dir = newFile("d:\\testdir");
//showDir(dir,0);
System.out.println(dir.delete());
}
public static String getLevel(int level)
{
StringBuilder sb = newStringBuilder();
sb.append("|--");
for(int x=0; x<level; x++)
{
//sb.append("|--");
sb.insert(0,"| ");
}
return sb.toString();
}
public static void showDir(File dir,int
level)
{
System.out.println(getLevel(level)+dir.getName());//打印下目录的完整路径.
level++;
File[] files = dir.listFiles();
for(int x=0; x<files.length;x++)
{
if(files[x].isDirectory())
showDir(files[x],level);
else
System.out.println(getLevel(level)+files[x]);
}
}
递归运算的最简单实现:
publicstatic void toBin(int num)
{
if(num>0)
{
toBin(num/2);
System.out.println(num%2);
// num = num/2;
}
}
需求: 删除一个带内容的目录。
删除原理:
在window中,删除目录从里面往外删除的。
既然是从里往外删除。就需要用到递归。
importjava.io.*;
class RemoveDir
{
public static void main(String[] args)
{
File dir = newFile("d:\\testdir");
removeDir(dir);
}
public static void removeDir(File dir)
{
File[] files = dir.listFiles();
for(File file : files)
{
if(!files[x].isHidden()&&files[x].isDirectory())
removeDir(files[x]);
else
System.out.println(files[x].toString()+":-file-:"+files[x].delete());//删除文件判断是否删除成功. 当误删除操作时出现false.
String | toString() 返回此抽象路径名的路径名字符串。 |
}
System.out.println(dir+"::dir::"+dir.delete());//删除文件夹.
}
}
需求: 建立一个java文件列表文件。
将一个指定目录下的java文件的绝对路径,存储到一个文本文件中。
1,对指定的目录进行递归。
2,获取递归过程所有的java文件的路径。
3,将这些路径存储到集合中。
4,将集合中的数据写入到一个文件中。
importjava.io.*;
importjava.util.*;
class JavaFileList
{
public static void main(String[] args)throws IOException
{
File dir = newFile("d:\\java1223");
List<File> list = newArrayList<File>();
fileToList(dir,list);
//System.out.println(list.size());
Filefile = new File(dir,"javalist.txt");//文件创建到d:\\java1223中.
writeToFile(list,file.toString());//file对象的字符串形式是绝对路径., 返回此抽象路径名的路径名字符串。
}
public static void fileToList(File dir,List<File> list)//j将文件存到集合中,这方法要在里面递归,
{
File[] files = dir.listFiles();
File[] | listFiles() 返回一个抽象路径名数组,这些路径名表示此抽象路径名所表示目录中的文件。 |
for(File file : files)
{
if(file.isDirectory())
fileToList(file,list);
else
{
if(file.getName().endsWith(".java"))
list.add(file);
}
}
}
public static void writeToFile(List<File> list,String
javaListFile)throwsIOException//将集合中的数据存储到文本文件中.
{
BufferedWriterbufw = null;//try外面定义.
try
{
bufw = newBufferedWriter(new FileWriter(javaListFile));
for(File f : list)
{
String path =f.getAbsolutePath();
bufw.write(path);
bufw.newLine();// 写入一个行分隔符。
bufw.flush();
}
}
catch (IOException e)
{
throw e;
}
finally
{
try
{
if(bufw!=null)
bufw.close();
}
catch (IOException e)
{
throw e;//不处理,让调用此方法的对方 处理.
}
}
}
}
-----------------------------android培训、java培训、期待与您交流!----详细请查看:http://edu.csdn.net/heima---------------
相关文章推荐
- 黑马程序员_IO流学习笔记
- 黑马程序员_IO流-转换流的学习
- 黑马程序员-【IO流】
- 黑马程序员之IO流1
- 黑马程序员——IO流
- 黑马程序员-JAVA基础学习日记八——IO流的学习总结
- 黑马程序员——iO流(2)
- 黑马程序员-io流
- 黑马程序员————IO流
- 黑马程序员——IO流详解
- 黑马程序员——Java基础---IO流<实例>
- 黑马程序员_IO流(3)流总结
- 黑马程序员_Java_IO流_字节流
- 黑马程序员 Java面向对象——IO流(字节流读取流)
- 黑马程序员 Java基础--IO流(三)
- 黑马程序员_IO流(下)
- 黑马程序员——IO流(一)
- 黑马程序员——IO流
- 黑马程序员——JAVA笔记之IO流(一)
- 黑马程序员--第二十天:io流的第三天