黑马程序员_IO流_Properties学习
来源:互联网 发布:为知笔记导出到有道 编辑:程序博客网 时间:2024/04/30 04:48
------------------------------android培训、java培训、期待与您交流!----------------------------------------------------------------
类 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,StringjavaListFile)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流_Properties学习
- 黑马程序员_Properties
- 黑马程序员_Properties集合
- 黑马程序员_java学习日记_IO流
- 黑马程序员_IO流的学习
- 黑马程序员_IO流学习笔记
- 黑马程序员_IO流学习总结
- 黑马程序员_IO流学习第一天
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- JSP的9个内置对象惯用法
- 比较getline()与cin.getline()
- java语法基本数据类型小结
- 【IT笔试面试题整理】笔试和面试中常见的智力题
- 冰封王座 war3 win7 windows7 运行 不能初始化DirectX 的问题
- 黑马程序员_IO流_Properties学习
- 关于程序员的几个笑话
- 黑马程序员_IO流_File类的使用
- dev 控件常见操作,收藏备用
- 【集体智慧编程 学习笔记】 Euclidean距离和Pearson相关系数
- 黑马程序员_IO流_IO包中的其他类
- BASH脚本(ok2makefile):生成带有makefile的C++ "Hello world"程序
- 表达式和流程控制语句
- 新买的笔记本电脑,已经装了正版win7,但是只有一个C盘怎么办?