JAva学習ノートの列挙タイプ、file、IOストリーム
12163 ワード
目次
列挙タイプ
File
ファイルフィルタ
すべてのファイルを再帰的に削除
IO流
バイトストリーム(最小単位はバイト)
FileOutputStream
FileInputStream
効率的な方法:
画像のコピー:
BufferedOutputStream
BufferedInputStream
こうりつひかく
文字ストリーム
BufferedWriter
BufferedReader
シーケンス化
逆シーケンス化
Transientキーワード
列挙タイプ
新規、othersでenumを検索する
File
≪絶対パス|Absolute Path|oem_src≫:ディスクで始まるパス名の相対パス:プロジェクト・ディレクトリに対するパス
ファイルフィルタ
すべてのファイルを再帰的に削除
IO流
バイトストリーム(最小単位はバイト)
FileOutputStream
FileInputStream
効率的な方法:
画像のコピー:
BufferedOutputStream
バッファ付き出力ストリームは、閉じる前にリフレッシュ(flush)が必要で、バッファの内容をストリームにブラシし、上の2つのバッファなしでリフレッシュする必要はありません.
BufferedInputStream
こうりつひかく
buffered nバイト>nバイト>buffer 1バイト>1バイト
文字ストリーム
中国語を入出力する際に問題が発生する可能性が高いので、文字ストリームを使用する必要があります.文字ストリームは毎回文字を処理します.どのシナリオを用いて符号化を行うか,そのシナリオを用いて復号を行うと,一致しないと文字化けしてしまう.
BufferedWriter
BufferedReader
.ファイルのコピー:
シーケンス化
逆シーケンス化
シーケンス化可能なクラスはSerializableインタフェースを実装し、seriaVersionUIDを自動的に生成する必要があり、両方の生成方式を使用してもよい.seriaVersionUIDを生成しない場合は、シーケンス化後にクラスを変更し、逆シーケンス化中に例外が放出されます.
Transientキーワード
シーケンス化中にシーケンス化したくないメンバー変数がある場合は、transientキーワードを追加して修飾できます.構文:public transient String name;修飾方法には使用できません
列挙タイプ
File
ファイルフィルタ
すべてのファイルを再帰的に削除
IO流
バイトストリーム(最小単位はバイト)
FileOutputStream
FileInputStream
効率的な方法:
画像のコピー:
BufferedOutputStream
BufferedInputStream
こうりつひかく
文字ストリーム
BufferedWriter
BufferedReader
シーケンス化
逆シーケンス化
Transientキーワード
列挙タイプ
新規、othersでenumを検索する
//Color.java
package com.mcq;
public enum Color {
RED,YELLOW,BLACK,WHITE,GREEN;
}
package com.mcq;
public class EnumDemo {
public static void main(String[] args) {
Color color=Color.WHITE;// Color.
switch (color){
case RED: // Color.
System.out.println(" ");
break;
case WHITE:
System.out.println(" ");
break;
case YELLOW:
System.out.println(" ");
break;
case BLACK:
System.out.println(" ");
break;
case GREEN:
System.out.println(" ");
break;
}
}
}
File
≪絶対パス|Absolute Path|oem_src≫:ディスクで始まるパス名の相対パス:プロジェクト・ディレクトリに対するパス
package com.mcq;
import java.io.File;
import java.io.IOException;
public class FileDemo {
public static void main(String[] args) throws IOException {
File file=new File("E:\\javademo");
System.out.println(file);//
System.out.println(file.mkdir());//
// true, false
File file2=new File("E:\\javademo\\a\\b");// \
System.out.println(file2.mkdir());//
System.out.println(file2.mkdirs());//
File file3=new File("E:\\javademo\\1.txt");
System.out.println(file3.createNewFile());
File file4=new File("aa");//
System.out.println(file4.mkdir());
//file , , ,
System.out.println(file4.delete());
//renameTo
new File("vv.txt").createNewFile();
new File("vv.txt").renameTo(new File("gg.txt"));
// isFile isDirectory
System.out.println(new File("gg.txt").isFile());
// Bytes
System.out.println(new File("gg.txt").length());
}
}
ファイルフィルタ
package com.mcq;
import java.io.File;
import java.io.FilenameFilter;
public class FileDemo2 {
public static void main(String[] args) {
File file = new File("E://");
String []list=file.list(new FilenameFilter() { //
public boolean accept(File dir, String name) {
if(name.endsWith(".txt")){
return true;
}else
return false;
}
});
for(String string:list){
System.out.println(string);
}
}
}
すべてのファイルを再帰的に削除
package com.mcq;
import java.io.File;
import java.io.FilenameFilter;
public class FileDemo2 {
public static void main(String[] args) {
File file=new File("E:\\javademo");
delete(file);
}
public static void delete(File file){
if(file.isDirectory()){//
File [] sub=file.listFiles();// /
for(File file2:sub){
delete(file2);
}
}
file.delete();
}
}
IO流
バイトストリーム(最小単位はバイト)
FileOutputStream
package com.mcq;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
public class IODemo {
public static void main(String[] args) throws IOException {
File file=new File("mm.txt");
file.createNewFile();
FileOutputStream fos=new FileOutputStream(file,true);//true
fos.write("
hello world".getBytes());
fos.close();
}
}
FileInputStream
package com.mcq;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class IODemo {
public static void main(String[] args) throws IOException {
File file=new File("mm.txt");
FileInputStream fis=new FileInputStream(file);
int read=fis.read();// , ASCII
System.out.println(read);
int b=-1;
while((b=fis.read())!=-1){
System.out.println((char)b);
}
}
}
効率的な方法:
package com.mcq;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class IODemo {
public static void main(String[] args) throws IOException {
File file=new File("mm.txt");
FileInputStream fis=new FileInputStream(file);
/*
* 1.
* 2. !=-1 , , 0
*/
byte []bys=new byte[1024];
while(fis.read(bys)!=-1){
for(byte b:bys){
System.out.print((char)b);
}
}
}
}
画像のコピー:
package com.mcq;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyPictureDemo {
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream(new File("C:/Users/Administrator/Desktop/ /1518715908475.jpg"));
FileOutputStream fos=new FileOutputStream(new File("tourist.png"));
byte []b=new byte[1024];
int cnt=0;
while(fis.read(b)!=-1){
fos.write(b);
++cnt;
}
System.out.println(cnt);
}
}
BufferedOutputStream
バッファ付き出力ストリームは、閉じる前にリフレッシュ(flush)が必要で、バッファの内容をストリームにブラシし、上の2つのバッファなしでリフレッシュする必要はありません.
package com.mcq;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferDemo {
public static void main(String[] args) throws IOException {
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(new File("mm.txt")));
bos.write("hello mm".getBytes());
bos.flush();// flush
// bos.close();//close flush
}
}
BufferedInputStream
package com.mcq;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferDemo {
public static void main(String[] args) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(
new File("mm.txt")));
//
// int b=0;
// while((b=bis.read())!=-1){
// System.out.print((char)b);
// }
// bis.close();
//
byte[] bys = new byte[1024];
int len = 0;
while ((len = bis.read(bys)) != -1) {
System.out.println(new String(bys, 0, len));
}
bis.close();
}
}
こうりつひかく
buffered nバイト>nバイト>buffer 1バイト>1バイト
文字ストリーム
中国語を入出力する際に問題が発生する可能性が高いので、文字ストリームを使用する必要があります.文字ストリームは毎回文字を処理します.どのシナリオを用いて符号化を行うか,そのシナリオを用いて復号を行うと,一致しないと文字化けしてしまう.
BufferedWriter
package com.mcq;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class OutputStreamWriterDemo {
public static void main(String[] args) throws IOException {
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("mm.txt"))));
bw.write(" ");
bw.flush();
bw.append("haha");
bw.flush();
bw.close();
}
}
BufferedReader
.ファイルのコピー:
package com.mcq;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class OutputStreamWriterDemo {
public static void main(String[] args) throws IOException {
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("gg.txt"))));
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File("mm.txt"))));
String line=null;
while((line=br.readLine())!=null){
bw.write(line);
bw.newLine();// , ,
bw.flush();
}
bw.close();
br.close();
}
}
シーケンス化
//student.java
package com.mcq;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ObjectStreamDemo {
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
// ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.ser"));
// oos.writeObject(new Student(" ",18));
// oos.close();
ObjectInputStream ois =new ObjectInputStream(new FileInputStream("student.ser"));
Student student=(Student)ois.readObject();
System.out.println(student);
}
}
package com.mcq;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
public class ObjectStreamDemo {
public static void main(String[] args) throws FileNotFoundException, IOException {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.ser"));
oos.writeObject(new Student(" ",18));
oos.close();
}
}
逆シーケンス化
package com.mcq;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ObjectStreamDemo {
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
// ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.ser"));
// oos.writeObject(new Student(" ",18));
// oos.close();
ObjectInputStream ois =new ObjectInputStream(new FileInputStream("student.ser"));
Student student=(Student)ois.readObject();
System.out.println(student);
}
}
シーケンス化可能なクラスはSerializableインタフェースを実装し、seriaVersionUIDを自動的に生成する必要があり、両方の生成方式を使用してもよい.seriaVersionUIDを生成しない場合は、シーケンス化後にクラスを変更し、逆シーケンス化中に例外が放出されます.
package com.mcq;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class ObjectStreamDemo {
public static void main(String[] args) throws FileNotFoundException, IOException, ClassNotFoundException {
// ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.ser"));
// oos.writeObject(new Student(" ",18));
// oos.close();
ObjectInputStream ois =new ObjectInputStream(new FileInputStream("student.ser"));
Student student=(Student)ois.readObject();
System.out.println(student);
student.test();
}
}
Transientキーワード
シーケンス化中にシーケンス化したくないメンバー変数がある場合は、transientキーワードを追加して修飾できます.構文:public transient String name;修飾方法には使用できません