`

黑马程序员23-2: Properties配置文件的读取修改,FileReader,BufferedReader 模拟load方法,注册机

 
阅读更多
------- android培训 java培训、期待与您交流!-------




FileReader,BufferedReader 模拟load方法,FileInputStream ,注册机
package cn.itcast.io.p2.properties;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;

public class PropertiesDemo {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {

		/*
		 * Map
		 * 	|--Hashtable
		 * 		|--Properties:
		 * 
		 * Properties集合:
		 * 特点:
		 * 1,该集合中的键和值都是字符串类型。
		 * 2,集合中的数据可以保存到流中,或者从流获取。
		 * 
		 * 通常该集合用于操作以键值对形式存在的配置文件。 
		 * 
		 * 
		 */
		
//		methodDemo_4();
		myLoad();
		
		test();
	}
	
	
	//对已有的配置文件中的信息进行修改。 
	/*
	 * 读取这个文件。
	 * 并将这个文件中的键值数据存储到集合中。
	 * 在通过集合对数据进行修改。
	 * 在通过流将修改后的数据存储到文件中。 
	 */
	public static void test() throws IOException{
		//读取这个文件。
		File file = new File("info.txt");
		if(!file.exists()){
			file.createNewFile();
		}
		FileReader fr = new FileReader(file);

		//创建集合存储配置信息。
		Properties prop = new Properties();
		
		//将流中信息存储到集合中。
		prop.load(fr);
		
		prop.setProperty("wangwu", "16");

		FileWriter fw = new FileWriter(file);
		//配置文件存储方式
		prop.store(fw,"");
		
//		prop.list(System.out);		
		fw.close();
		fr.close();
	}

	//模拟一下load方法。
	public static void myLoad() throws IOException{
		
		Properties prop  = new Properties();	
		BufferedReader bufr = new BufferedReader(new FileReader("info.txt"));	
		String line = null;	
		while((line=bufr.readLine())!=null){		
			if(line.startsWith("#"))
				continue;		
			String[] arr = line.split("=");		
			//用i遍历就可以
//			System.out.println(arr[0]+"::"+arr[1]);
			prop.setProperty(arr[0], arr[1]);
		}	
		prop.list(System.out);		
		bufr.close();		
	}
	
	//读取配置文件的方法
	public static void methodDemo_4() throws IOException {			
		Properties prop  = new Properties();		
		//集合中的数据来自于一个文件。 
		//注意;必须要保证该文件中的数据是键值对。
		//需要使用到读取流。文件输入流 
		FileInputStream fis = new FileInputStream("info.txt");
		
		//使用load方法。 
		prop.load(fis);
		
		prop.list(System.out);

	}
	//添加/修改配置文件的内容
	public static void methodDemo_3() throws IOException {
		Properties prop  = new Properties();
		
		//存储元素。 
		prop.setProperty("zhangsan","30");
		prop.setProperty("lisi","31");
		prop.setProperty("wangwu","36");
		prop.setProperty("zhaoliu","20");
		
		//想要将这些集合中的字符串键值信息持久化存储到文件中。
		//需要关联输出流。文件输出流
		FileOutputStream fos = new FileOutputStream("info.txt");
		
		//将集合中数据存储到文件中,使用store方法。
		prop.store(fos, "info");
		
		fos.close();
		
	}

	/**
	 * 演示Properties集合和流对象相结合的功能。
	 */
	//列出配置文件到控制台
	public static void methodDemo_2(){
		Properties prop  = new Properties();
		
		//存储元素。 
//		prop.setProperty("zhangsan","30");
//		prop.setProperty("lisi","31");
//		prop.setProperty("wangwu","36");
//		prop.setProperty("zhaoliu","20");
	
		prop = System.getProperties();
		prop.list(System.out);
	}
	
	/*
	 * Properties集合的存和取。
	 */
	//取出配置文件的信息
	public static void propertiesDemo(){
		//创建一个Properties集合。
		
		Properties prop  = new Properties();
		
		//存储元素。 
		prop.setProperty("zhangsan","30");
		prop.setProperty("lisi","31");
		prop.setProperty("wangwu","36");
		prop.setProperty("zhaoliu","20");
		
		//修改元素。 
		prop.setProperty("wangwu","26");
		
		//取出所有元素。
		Set<String> names = prop.stringPropertyNames();
		
		for(String name : names){
			String value = prop.getProperty(name);
			System.out.println(name+":"+value);
		}
	}
}


package cn.itcast.io.p2.properties;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;



/*
 * 定义功能,获取一个应用程序运行的次数,如果超过5次,给出使用次数已到请注册的提示。并不要在运行程序。
 * 
 * 思路:
 * 1,应该有计数器。 
 * 每次程序启动都需要计数一次,并且是在原有的次数上进行计数。
 * 2,计数器就是一个变量。 突然冒出一想法,程序启动时候进行计数,计数器必须存在于内存并进行运算。
 * 可是程序一结束,计数器消失了。那么再次启动该程序,计数器又重新被初始化了。
 * 而我们需要多次启动同一个应用程序,使用的是同一个计数器。 
 * 这就需要计数器的生命周期变长,从内存存储到硬盘文件中。
 * 
 * 3,如何使用这个计数器呢?
 * 	首先,程序启动时,应该先读取这个用于记录计数器信息的配置文件。
 *  获取上一次计数器次数。 并进行试用次数的判断。
 *  其次,对该次数进行自增,并自增后的次数重新存储到配置文件中。 
 *  
 * 
 * 4,文件中的信息该如何进行存储并体现。
 * 	直接存储次数值可以,但是不明确该数据的含义。 所以起名字就变得很重要。
 * 	这就有了名字和值的对应,所以可以使用键值对。
 * 	可是映射关系map集合搞定,又需要读取硬盘上的数据,所以map+io = Properties.
 * 
 * 
 * 
 */

public class PropertiesTest {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws Exception 
	 */
	public static void main(String[] args) throws IOException  {
		
		getAppCount();
		
	}
	
	public static void getAppCount() throws IOException{
		
		//将配置文件封装成File对象。
		File confile = new File("count.properties");
		//用对象判断,如果不存在就创建文件
		if(!confile.exists()){
			confile.createNewFile();
		}
		//用文件字节输入流操作
		FileInputStream fis = new FileInputStream(confile);
		
		Properties prop = new Properties();
		
		prop.load(fis);
		
		
		//从集合中通过键获取次数。		
		String value = prop.getProperty("time");
		//定义计数器。记录获取到的次数。
		int count =0;
		if(value!=null){
			count = Integer.parseInt(value);
			if(count>=5){
//				System.out.println("使用次数已到,请注册,给钱!");
//				return;
				throw new RuntimeException("使用次数已到,请注册,给钱!");
			}
		}
		count++;
		
		//将改变后的次数重新存储到集合中。
		prop.setProperty("time", count+"");
		
		FileOutputStream fos = new FileOutputStream(confile);
		
		prop.store(fos, "");
		
		fos.close();
		fis.close();
		
		
	}

}


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


详细请查看:http://edu.csdn.net/heima -------

分享到:
评论

相关推荐

    使用J2SEAPI读取Properties文件的六种方法

    在Java开发中,Properties文件是常用的配置文件类型,它用于存储键值对,方便程序读取和使用配置信息。本文将详细介绍六种使用J2SE API(Java标准版API)来读取Properties文件的方法,帮助开发者更好地理解和操作这...

    java读取配置文件xml ,properties,txt

    在Java编程中,读取配置文件是常见的任务,这些配置文件可以是XML、properties或纯文本(txt)格式。配置文件通常用于存储应用程序的设置、连接信息和其他动态可配置的数据,以便于在运行时访问和修改。下面我们将...

    java解析读取properties文件的6中方法总结

    在Java编程中,Properties文件是用于存储配置信息的文本文件,通常以键值对的形式存在,广泛应用于系统配置、国际化和本地化等场景。本文将详细介绍六种在Java中解析和读取Properties文件的方法。 1. **使用...

    java读取properties六种方法

    在Java编程中,读取`properties`文件是常见的任务,用于存储配置信息或者系统设置。以下将详细讲解六种不同的方法来实现这一功能。 1. **使用Properties类** Java的标准库提供了`java.util.Properties`类,它是...

    JAVA读取配置文件源码

    首先,Java提供了多种方式来读取配置文件,包括使用`java.io`包中的`FileReader`和`BufferedReader`,或者使用`java.nio`包的`Files`类。此外,`java.util.Properties`类是处理配置文件的一种常见方法,它特别适用于...

    Java读取.properties配置文件的几种方式

    如果配置文件位于文件系统的任意位置,我们可以使用`FileReader`和`BufferedReader`结合`Properties`类来读取。这种方法更加灵活,因为它可以处理任何路径的文件: ```java Properties properties = new ...

    读取资源文件工具类

    在上述代码中,`loadProperties()`方法加载指定名称的资源文件,并返回一个`Properties`对象,`parseKeyValues()`则将`Properties`对象转换为`KeyValue`对象的列表,便于后续操作。 通过这两个类,我们可以方便地...

    Java读写.txt文件

    为了读取配置文件,可以使用`FileReader`和`BufferedReader`: ```java File configFile = new File("config.txt"); BufferedReader reader = new BufferedReader(new FileReader(configFile)); String line; ...

    java 文件读写

    在这个场景中,我们关注的是“java文件读写”,特别是读取`properties`配置文件和处理目录及文件的操作。下面我们将详细探讨这两个主题。 首先,`properties`配置文件是Java应用中常用的一种存储配置信息的方式。...

    Java-IO流/Stream流总结

    - **解析资源文件**:使用`Properties.load(InputStream)`方法加载文件内容。 - **加载资源文件流**:通过`InputStream`、`FileInputStream`或`ClassLoader.getResourceAsStream()`等方式加载资源文件。 在实际...

    javatxt+Properties+xml文件读写

    我们可以通过`load()`方法读取文件,`store()`方法保存文件。例如: ```java import java.io.*; import java.util.Properties; public class PropertiesFileIO { public static void main(String[] args) { ...

    java软件修改键值 (moto z8)

    通过`Properties.load()` 加载文件,然后使用`Properties.setProperty()` 修改键值,最后用`Properties.store()` 写回文件。 2. 数据库操作: 在Java中,我们通常使用JDBC(Java Database Connectivity)来访问...

    java汉字问题解决方案

    - 对于配置文件、文本资源等,需要确认其实际编码,并在读取时指定正确编码,例如: ```java Properties prop = new Properties(); prop.load(new FileInputStream("config.properties"), "UTF-8"); ``` 7. **...

    xml、excel、txt、property文件的解析

    例如,使用`new BufferedReader(new FileReader("file.txt"))`读取文件,`BufferedReader.readLine()`逐行读取,`PrintWriter`则用于写入。 Property文件是Java应用程序常用的配置文件,通常以.key=value格式存储...

    JAVA编码问题.pdf

    1. **资源文件**:使用`Properties`加载资源文件时,文件通常以ISO-8859-1编码,需要使用`new Properties()`的重载方法,指定UTF-8编码加载,如`props.load(new FileInputStream(file), "UTF-8")`。 六、**字符串...

    Java基础学习29.pdf

    在实际开发中,我们通常通过Class类的getClassLoader().getResourceAsStream()方法获取类路径下的资源文件,例如配置文件,然后用Properties类进行读取。 其次,装饰者模式是设计模式中的一种,遵循开闭原则,即对...

    Java基础知识-day09【字节流、字符流】.pdf

    第五章 Properties类 Properties类是Java中用来处理配置文件的,它可以加载和保存键值对数据。例如,加载配置文件: ```java Properties props = new Properties(); props.load(new FileInputStream("config....

    java中文乱码.rar

    如`properties`文件中的中文乱码,需在读取时指定编码,例如`Properties prop = new Properties(); prop.load(new FileInputStream(file), "UTF-8");` 总结来说,Java处理中文乱码的关键在于确保字符编码的一致性...

    高手总结java常用API(免费下载)

    - **Properties**: 存储和读取键值对字符串,常用于配置文件。 ```java Properties props = new Properties(); props.load(new FileInputStream("config.properties")); String username = props.getProperty(...

Global site tag (gtag.js) - Google Analytics