尚学堂-第十章答え

49395 ワード

一、選択問題
1.Java IOストリームを使用してテキストファイルの読み書きを実現するには、以下の()異常を処理する必要があります.(1つ選択)
A.ClassNotFoundException
B.IOException
C.SQLException
D.RemoteException
2.JavaのIOオペレーションでは、()メソッドを使用してストリームのバッファをリフレッシュできます.(2つ選択)
A.void release()
B.void close()
C.void remove()
D.void flush()
3.Javaで、以下のファイルの読み書きに関する記述が間違っているのは()です.(1つ選択)
A.Readerクラスのread()メソッドは、ソースから1文字のデータを読み出すために使用されます.
B.Readerクラスのread(int n)メソッドソースから1文字分のデータを読み込む
C.Writerクラスのwrite(int n)メソッドは、出力ストリームに単一文字を書き込む
D.Writerクラスのwrite(String str)メソッドは、出力ストリームに文字列を書き込むために使用されます.
4.次のファイルに入力されたJavaコードを読み、()でエラーが発生しました.(1つ選択)
import java.io.*;
public class TestIO {
    public static void main(String []args){
        String str ="      ";
        FileWriter fw = null;        //1
        try{
            fw = new FileWriter("c:\mytext.txt");  //2
            fw.writerToEnd(str);   //3
        }catch(IOException e){   //4
            e.printStackTrace();
        }finally{
            //       
        }
    }
}

A.0
B.1
C.2
D.3
5.次のJavaコードを分析します.表記のある4行のコードのうち、エラーがあるのは()です.(1つ選択)
import java.io.FileWriter;
import java.io.IOException;
public class Test {
    public static void main(String[ ] args) {
        String str = "Hello World";
        FileWriter fw = null;
        try {
            fw = new FileWriter("c:\\hello.txt"); // 1
            fw.write(str);                     // 2
        } catch (IOException e) {
            e.printStackTrace();                // 3
        } finally {
            fw.close();                        // 4
        }
    }
}

A.1
B.2
C.3
D.4
二、簡単な解答
  • この章の最も基本的な4つの抽象類と彼らの違いを話しますか?バイト入力ストリームを表すすべてのクラスの親であるInputStream.OutputStreamこの抽象クラスは、バイト出力ストリームを表すすべてのクラスの親です.出力ストリームは、出力バイトを受信し、これらのバイトを宛先に送信する.Readerは、読み取りに使用される文字ストリーム抽象クラスで、データ単位は文字です.Writerは、書き込みに使用される文字ストリーム抽象クラスで、データ単位は文字です.
  • 読み出しストリームに読み込まれたデータは、順番に、順番に読み出さなければなりませんか?ファイルの指定された場所を読み込みたい場合は、どうすればいいですか?必ずしもそうとは限らない.RandomAccessFileクラスがあり、seekメソッドを使用して位置決めポイントを決定し、任意に読み込み読み出します.
  • テキストデータをcopyしたいのですが、どのストリームを使用しますか?効率の問題を考慮すると、それらのストリームを使用するのが良いですか?FileInputStream,FileOutputStream.装飾クラスBufferedInputStream、BufferedOutputStreamを使用できます.
  • オブジェクトのシーケンス化インタフェースの特徴.Serializableインタフェースを実装したクラスのオブジェクトのみがシーケンス化されます.Serializableインタフェースは空のインタフェースであり、タグとしてのみ機能します.staticプロパティはシーケンス化に関与しません.オブジェクトの一部のプロパティは、シーケンス化されたくない場合はstaticではなくtransient修飾を使用します.読み書きのシーケンス化IDが一致しないように、固定のシーケンス化IDを指定するのが一般的です.
  • バイトストリームを文字ストリームに変換したいのですが、どのストリームを使用しますか?InputStreamReader OutputStreamWriter 3、符号化問題
  • バイト配列と任意の基本タイプと参照タイプの相互変換プロンプトを実装します.ByteArrayInutStreamとByteArrayOutputStreamを使用します.
  • import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;
    
    class ToByteArr{
    	public byte[] intToByteArr(int num) {
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		DataOutputStream dos = new DataOutputStream(baos);
    		try {
    			dos.writeInt(num);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		byte[] flush = baos.toByteArray();
    		try {
    			dos.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return flush;
    	}
    	
    	public byte[] booleanToByteArr(boolean flag) {
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		DataOutputStream dos = new DataOutputStream(baos);
    		try {
    			dos.writeBoolean(flag);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		byte[] flush = baos.toByteArray();
    		try {
    			dos.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return flush;
    	}
    	
    	public byte[] ObjectToByteArr(Object obj) {
    		ByteArrayOutputStream baos = new ByteArrayOutputStream();
    		ObjectOutputStream oos = null;
    		try {
    			oos = new ObjectOutputStream(baos);
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
    		try {
    			oos.writeObject(obj);
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		byte[] flush = baos.toByteArray();
    		try {
    			oos.close();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return flush;
    	}
    }
    
    class ToBasic{
    	public int byteArrToInt(byte[] flush) {
    		ByteArrayInputStream bais = new ByteArrayInputStream(flush);
    		DataInputStream dis = new DataInputStream(bais);
    		int num = 0;
    		try {
    			num = dis.readInt();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return num;
    	} 
    	
    	
    	public boolean byteArrToBoolean(byte[] flush) {
    		ByteArrayInputStream bais = new ByteArrayInputStream(flush);
    		DataInputStream dis = new DataInputStream(bais);
    		boolean flag = false;
    		try {
    			flag = dis.readBoolean();
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return flag;
    	}
    	
    	public Object byteArrToObject(byte[] flush) {
    		ByteArrayInputStream bais = new ByteArrayInputStream(flush);
    		ObjectInputStream ois = null;
    		try {
    			ois = new ObjectInputStream(bais);
    		} catch (IOException e1) {
    			e1.printStackTrace();
    		}
    		Object obj = null;
    		try {
    			obj = ois.readObject();
    		} catch (ClassNotFoundException e) {
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		return obj;
    	}
    }
    
    public class Tenth1 {
    	public static void main(String[] args) {
    		ToByteArr toByteArr = new ToByteArr();
    		ToBasic toBasic = new ToBasic();
    		System.out.println(toBasic.byteArrToInt(toByteArr.intToByteArr(5)));
    	}
    }
    
  • フォルダd:/sxtjavaの下にあるすべてのファイルとサブフォルダの内容をd:/sxtjava 2にコピーします.ヒント:単一ファイルのコピー、ディレクトリの作成、再帰的な使用に関する
  • 
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    
    /**
     *                     
     * @author Administrator
     *
     */
    public class CopyDir {
    	public static void main(String[] args) {
    		copyDir("C:/eclipse-workspace/IO_Study02/TestDirSRC", "C:/eclipse-workspace/IO_Study02/TestDirDEST");
    	//	File newDir = new File("C:/eclipse-workspace/IO_Study02/TestDirDEST","TestDirSRC");
    	//	newDir.mkdirs();
    	}
    	
    
    
    public static void copy(String srcPath,String destpath) {
    	//1.   
    	File src = new File(srcPath);	//  	
    	File dest = new File(destpath); //   
    	//2.   
    	InputStream is = null;
    	OutputStream os = null;
    	try {
    		is = new FileInputStream(src);
    		os = new FileOutputStream(dest);
    		//3.  
    		byte[] flush = new byte[1024];
    		int len = -1;
    		while((len=is.read(flush))!=-1) {
    			os.write(flush, 0, len);
    		}
    		os.flush();
    	}catch (FileNotFoundException e) {
    		e.printStackTrace();
    	} catch (IOException e) {
    		e.printStackTrace();
    	}finally {
    		//4.    ,       
    		try {
    			if (null != os) {
    				os.close();
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    		try {
    			if (null != is) {
    				is.close();
    			}	
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    }
    
    public static void copyDir(String srcPath,String destpath) {
    	//1.   
    	File src = new File(srcPath);	//  	
    //	File dest = new File(destpath); //   
    	
    	if(null != src && src.exists()) {
    		if(src.isFile()) {
    			copy(srcPath, destpath);
    		}else {//   
    			File newDir = new File(destpath,src.getName());
    			newDir.mkdirs();
    			for(File s:src.listFiles()) {
    				if(s.isFile()) {
    					File newFile = new File(newDir,s.getName());
    					copy(s.getAbsolutePath(), newFile.getAbsolutePath());
    				}else {
    					copyDir(s.getAbsolutePath(), newDir.getAbsolutePath());
    					System.out.println(s.exists());
    					System.out.println(s.isFile());
    				}
    			}
    		}
    	}
    }
    
    
    
    }
    
    
    
  • IOパッケージのクラスを使用してDディスク上のexam.txtテキストファイルの内容を読み出し、1行ずつ内容を読み出し、各行を1入力としてArrayListの汎用集合に入れ、集合中の内容を補強forで出力表示する.
  • 
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    
    public class Tenth3 {
    	public static void main(String[] args) {
    		FileReader fr = null;
    		String str = "";
    		List<String> strList = new ArrayList<>();
    		try {
    			fr = new FileReader("D://exam.txt");
    		} catch (FileNotFoundException e) {
    			e.printStackTrace();
    		}
    		BufferedReader br = new BufferedReader(fr);
    		while(str!=null) {
    			try {
    			str = br.readLine();
    			} catch (IOException e) {
    				e.printStackTrace();
    			}
    			
    			strList.add(str==null?"":str);
    		}
    		
    		for(String str1:strList) {
    			System.out.println(str1);
    		}
    		
    	}
    }