Java学习笔记(五):文件IO

1、char:两个字节,可以输入汉字

eg:下面的输出为“好”

char ch='好';
System.out.println(ch);

2、byte:一个字节,有符号,值为-128~127

      byte、int、char可以相互转化:(char)readByte();//byte强转成char

3、文件的读写:字节流和字符流

      (1)字节流:两个基类InpuStream和OutputStream

                    例子:用FileInpuStream和FileOutputStream来读写

                    注意:用字节流写进文件的数据,要用字节流读出来,否则乱码

                           输出时,将char[]和byte[]转成String时,用String(b,0,ch)这个方法,不能用String(b),否则出现乱码,因为返回值的长度不一定等于b的长度。详情见JDK中的String

package fiveDay;
import java.io.*;
public class fileIO
{
	public static void main(String[] args) throws FileNotFoundException
	{
		File f=new File("./1.txt");
		//写入
		//OutputStream是基类,FileOutputStream是子类,里面有方法实现,下向上转型
		OutputStream fw=new FileOutputStream(f);
		//异常处理,否则提示错误
		try
		{//下面的123是字符串不是int,所以可以读出来
			//如果是write(123),就读不出来
			//fw.write(3);//此时运行结果就会出现"";
			fw.write("hello 123".getBytes());			
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		//异常处理,否则提示错误
		try
		{
			fw.close();
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}	
		//读取
		InputStream fr=new FileInputStream(f);
		String s="";
		int ch=0;//如果不初始化,那么在下面输出的时候会提示错误
		byte b[]=new byte[1025];
		try
		{
			ch=fr.read(b);
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		try
		{
		fw.close();
		}
		catch(IOException e)
		{
			e.printStackTrace();
		}
		//byte[]转string,用String(byte[] b,offset,length)来转换
		//不要用String(byte[] b),因为后者长度可能不等于b的长度,详情见jdk;
		System.out.println(new String(b,0,ch));
	}
}
              (2)字符流:两个基类Reader和Writer

                          例子:两个子类FileReader和FileWriter

                        

package fiveDay;

import java.io.*;

public class ReaderWriter {

	public static void main(String[] args) {
		File f=new File("./2.txt");
//--------------写入----------------
		Writer fw=null;//定义在try的外面,否则后面没法使用这个fr
		//异常处理		
		try{fw=new FileWriter(f);}
		catch(IOException e){e.printStackTrace();}
		try{fw.write("hello");}
		catch(IOException e){e.printStackTrace();}
		try{fw.close();}
		catch(IOException e){e.printStackTrace();}
//--------------读取-----------------
		Reader fr=null;
		char[] c=new char[1024];
		int ch=0;
		//异常处理
		try{fr=new FileReader(f);}
		catch(IOException e){e.printStackTrace();}
		try{ch=fr.read(c);}
		catch(IOException e){e.printStackTrace();}
		try{fw.close();}
		catch(IOException e){e.printStackTrace();}
//---------------输出显示------------
		System.out.println(new String(c,0,ch));
	}

}


3、连接数据库Mysql

       

/**
 * 
 */
/**
 * @author Administrator
 *
 */
package fiveDayMysql;
import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
public class mysqlTest
{
	public static void main(String[] args){
		try
	    {
		//前面都一样,就是端口和后面的数据库名不同;
	      String url="jdbc:mysql://localhost:3306/connect";
	      String user="root";
	      String pwd="root";      
	      //加载驱动,这一句也可写为:Class.forName("com.mysql.jdbc.Driver");
	      Class.forName("com.mysql.jdbc.Driver").newInstance();
	      //建立到MySQL的连接
	       Connection conn = DriverManager.getConnection(url,user, pwd);     
	      //执行SQL语句
	       Statement stmt = conn.createStatement();//创建语句对象,用以执行sql语言
	      ResultSet rs = stmt.executeQuery("select * from person");
	       //处理结果集
	      while (rs.next())
	      {
	        String name = rs.getString("name");
	        System.out.println(name);
	      }
	      rs.close();//关闭数据库
	      conn.close();
	    }
	    catch (Exception ex)
	    { System.out.println("Error : " + ex.toString());}
	}	  
}
4、关于下转上的作用

          许多抽象类定义对象时,喜欢用其子类进行实例化,是因为这样不仅可以调用子类中实现的方法,也可以调用自己类中非抽象的方法;

package fiveDay;
abstract class A
{
	public abstract void run();
	public void eat()
	{
		System.out.println("eat");
	}
}
class B extends A
{
	public void run()
	{
		System.out.println("run");
	}
}
public class abstractTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		A a=new B();
		a.eat();//输出eat
		a.run();//输出run
	}
}


你可能感兴趣的:(Java学习笔记(五):文件IO)