Java基础_其它对象和IO流(字符流)

一、其他对象(System)

/*
System:类中的方法和属性都是静态的。
in:标准输入,默认键盘。
out:标准输出,默认控制台。

描述系统的一些信息。
获取系统属性信息:Properties getProperties();
*/
import java.util.*;
class SystemDemo 
{
	public static void main(String[] args) 
	{
		Properties prop=System.getProperties();
		/*因为Properties是Hashtable的子类,也就是Map集合的一个子类对象。
		  那么可以通过Map的方法取出该集合中的元素。该集合中存储的都是字符串,
		  没有泛型的定义。
		*/
		

		//如何在系统中自定义一些特有信息呢?
		System.setProperty("myKey","myValue");


		String value=System.getProperty("os.name");//获取指定属性信息
		System.out.println("value="+value);
		
		//在JVM启动时,动态加载一些属性信息:
		String v=System.getProperty("haha");
		System.out.println("v="+v);//没有haha键,需要在运行时输入java -Dhaha=qq SystemDemo 

		/*
		for(Object obj:prop.keySet())//获取所有属性信息
		{
			String value=(String)prop.get(obj);
			System.out.println(obj+":"+value);
		}

		*/

	
	}
}


二、其他对象(Runtime)

/*
Runtime对象:
该类并没有提供构造函数,说明不可以new对象。那么直接想到该类中的方法都是静态
的,发现该类中也有非静态方法,说明该类肯定会提供一个方法获取本类对象,而且
该方法是static的,返回值类型是本类类型。该方法是static Runtime getRuntime();
由此可以看出该类使用了单例设计模式完成。


*/
class RuntimeDemo 
{
	public static void main(String[] args)throws Exception
	{
		Runtime r=Runtime.getRuntime();
		Process p=r.exec("notepad.exe");
		//r.exec("notepad.exe RuntimeDemo.java");//用notepad打开当前程序文件目录下的RuntimeDemo.java文件
		//p.destroy();//关闭notepad.exe进程
	}
}


三、其他对象(Date)

/*
Date:
*/
import java.util.*;
import java.text.*;
class DateDemo 
{
	public static void main(String[] args) 
	{
		Date d=new Date();
		System.out.println(d);

		SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日E hh:mm:ss");//将模式封装到SimpleDateFormat对象中。
		String time=sdf.format(d);//调用format方法让模式格式化指定Date对象。
		System.out.println("time="+time);

		//System.out.println("d1:"+new Date(System.currentTimeMillis()));
	}
}


四、其他对象(Calendar)

/*
Calendar:
*/
import java.util.*;
class CalendarDemo2 
{
	public static void main(String[] args) 
	{
		Calendar c=Calendar.getInstance();
		c.set(2011,7,17);//设置年月
		c.add(Calendar.YEAR,1);//加一年

		printCalendar(c);
	}
	public static void printCalendar(Calendar c)
	{
		String[] mons={"一月","二月","三月","四月","五月","六月"
						,"七月","八月","九月","十月","十一月","十二月",};

		String[] weeks={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六",};
		
		int index=c.get(Calendar.MONTH);
		int index1=c.get(Calendar.DAY_OF_WEEK)-1;

		sop(c.get(Calendar.YEAR)+"年");
		//sop((c.get(Calendar.MONTH)+1)+"月");
		sop(mons[index]);
		sop(c.get(Calendar.DAY_OF_MONTH)+"日");
		//sop("星期"+c.get(Calendar.DAY_OF_WEEK));
		sop(weeks[index1]);

	}
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}


五、其他对象(Math-Random)

/*
Math:
*/
import java.util.*;
class MathDemo 
{
	public static void main(String[] args) 
	{
		for(int i=0;i<10;i++)
		{
			//sop(Math.random());//随机数(大于等于0小于1.0)
			//sop((int)(Math.random()*10+1));//1-10随机数
			sop(new Random().nextInt(10)+1);//1-10随机数
		}
	}
	public static void show()
	{
		sop("d="+Math.ceil(12.45));//返回大于指定数据的最小整数。
		sop("d="+Math.floor(12.45));//返回小于指定数据的最小整数。
		sop("d="+Math.round(12.34));//四舍五入
		sop("d="+Math.pow(2,3));//2的3次方
	}
	public static void sop(Object obj)
	{
		System.out.println(obj);
	}
}


 

六、IO(概述)

IO流用来处理设备之间的数据传输。Java对数据的操作是通过流的方式。用于操作的对象都在IO包中。

流按操作数据分两种:字节流与字符流。

流按流向分为:输入流,输出流。

字节流的抽象基类:

InputStream OutputStream

字符流的抽象基类:

Reader Writer

注:由这四个类派生出来的子类名称都是以其父类名作为子类名的后缀。

如:InputStream的子类FileInputStream

如:Reader的子类FileReader

七、IO(FileWriter)

/*
先来看看字符流的特点:
既然IO流是用来操作数据的,数据的最常用体现形式:文件
那么先以操作文件为主来演示。
需求:在硬盘上创建一个文件并写入一些文字数据。
找到一个专门用于操作文件的Writer子类对象FileWriter。后缀名是父类名,前缀名是该流对象的功能。
*/
import java.io.*;
class  FileWriterDemo
{
	public static void main(String[] args)throws IOException
	{
		/*创建一个FileWriter对象,该对象一被初始化就必须要明确被操作的文件。
		而且该文件会被创建到指定目录下。如果该目录下已有同名文件,将被覆盖。
		其实该步就是在明确数据要存放的目的地。
		*/
		FileWriter fw=new FileWriter("demo.txt");
		
		/*
		调用write方法将字符串写入到流中。
		*/
		fw.write("abcde");

		//fw.flush();//刷新流对象中的缓冲中的数据,将数据刷入目的地
		fw.close();

		/*
		close()关闭流资源,在关闭之前会刷新一次内部的缓冲中的数据,将将数据刷入目的地。
		和flush()区别:flush刷新后,流可以继续使用,而close会将流关闭。
		*/
	}
}


八、IO(IO异常处理方式)

/*
IO异常的处理方式:
*/
import java.io.*;
class FileWriterDemo2 
{
	public static void main(String[] args) 
	{
		FileWriter fw=null;
		try
		{
			fw=new FileWriter("demo.txt");
			fw.write("asdffgfdsa");
		}
		catch (IOException e)
		{
			System.out.println(e.toString());
		}
		finally
		{
			try
			{
				if(fw!=null)
					fw.close();
			}
			catch (IOException e)
			{
				System.out.println(e.toString());
			}
		}
		
	}
}


九、IO(文件的续写)

/*

演示对已有文件的续写:



public FileWriter(String fileName,
                  boolean append)
           throws IOException根据给定的文件名以及指示是否附加写入数据的 boolean 值来构造 FileWriter 对象。 

参数:
fileName - 一个字符串,表示与系统有关的文件名。
append - 一个 boolean 值,如果为 true,则将数据写入文件末尾处,而不是写入文件开始处。 


*/
import java.io.*;
class FileWriterDemo3 
{
	public static void main(String[] args)
	{
		FileWriter fw=null;
		try
		{
			fw=new FileWriter("demo.txt",true);//不覆盖已有文件,并在已有文件末尾处续写。
			fw.write("\r\nhello");//windows下换行:\r\n
		
		}
		catch (IOException e)
		{
			System.out.println(e.toString());		
		}
		finally
		{
			try
			{
				if(fw!=null)
					fw.close();
			}
			catch (IOException e)
			{
				System.out.println(e.toString());
			}
			
		}
		
	}
}


十、IO(文本文件读取方式一)

/*
文本文件读取方式一:
*/
import java.io.*;
class FileReaderDemo 
{
	public static void main(String[] args) 
	{
		FileReader fr=null;
		try
		{
			/*
			创建一个文件读取流对象和指定名称的文件相关联。
			要保证该文件存在,否则会发生FileNotFoundException异常
			*/
			fr=new FileReader("demo.txt");

			/*
			read()方法一次读一个字符,而且可以自动往下读。
			*/
			int ch=0;
			while((ch=fr.read())!=-1)
			{
				System.out.println("ch="+(char)ch);
			}
			
		}
		catch (IOException e)
		{
			System.out.println(e.toString());
		}
		finally
		{
			try
			{
				if(fr!=null)
					fr.close();
			}
			catch (IOException e)
			{
				System.out.println(e.toString());
			}

		}
		
		
	}
}


十一、IO(文本文件读取方式二)

/*
文本文件读取方式二:
*/
import java.io.*;
class FileReaderDemo2 
{
	public static void main(String[] args)throws IOException
	{
		FileReader fr=new FileReader("demo.txt");

		//定义一个字符数组,用于存储读到的字符。
		char[] buf=new char[1024];

		int num=0;
		while((num=fr.read(buf))!=-1)
		{
			System.out.print(new String(buf,0,num));
		}
		
		fr.close();
	}
}


十二、IO(文本文件读取练习)

/*
读取一个*.java文件,并打印在控制台。 
*/
import java.io.*;
class FileReaderTest 
{
	public static void main(String[] args)
	{
		FileReader fr=null;
		try
		{
			fr=new FileReader("FileReaderTest.java");
			char[] buf=new char[1024];

			int num=0;
			while((num=fr.read(buf))!=-1)
			{
				System.out.print(new String(buf,0,num));
			}
			
		}
		catch (IOException e)
		{
			System.out.println(e.toString());
		}
		finally
		{
			try
			{
				if(fr!=null)
					fr.close();
			}
			catch (IOException e)
			{
				System.out.println(e.toString());
			}
		}	
	}
}


十三、IO(拷贝文本文件)

/*
将C盘一个文本文件复制到D盘

原理:
将C盘下的文件数据存储到D盘的一个文件中。
步骤:
1.在D盘创建一个文件,用于存储C盘文件中的数据。
2.定义读取流和C盘文件关联。
3.通过不断的读写完成数据的存储。
4.关闭资源。

*/
import java.io.*;
class CopyText 
{
	public static void main(String[] args)throws IOException 
	{
		//copy_1();
		copy_2();
	}
	public static void copy_1()throws IOException//从C盘文件读一个字符就往D盘文件写一个字符。
	{
		FileReader fr=new FileReader("CopyText.java");//读的文件
		FileWriter fw=new FileWriter("CopyText_copy.txt");//写的文件

		int ch=0;
		while((ch=fr.read())!=-1)
		{
			fw.write(ch);
		}
		fw.close();
		fr.close();
	}
	public static void copy_2()
	{
		FileWriter fw=null;
		FileReader fr=null;
		try
		{
			fr=new FileReader("CopyText.java");
			fw=new FileWriter("CopyText_copy.txt");

			char[] buf=new char[1024];
			int len=0;
			while((len=fr.read(buf))!=-1)
			{
				fw.write(buf,0,len);
			}
		}
		catch (IOException e)
		{
			throw new RuntimeException("读写失败!");
		}
		finally
		{
			try
			{
				if(fr!=null)
					fr.close();
			}
			catch (IOException e)
			{
				throw new RuntimeException("关闭读取字符流失败");
			}
			try
			{
				if(fw!=null)
					fw.close();
			}
			catch (IOException e)
			{
				throw new RuntimeException("关闭写入字符流失败!");
			}
		}
	}
}


十四、IO(拷贝文本文件图例)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值