JAVA学習(八):JAVAファイルプログラミング

8824 ワード

このブログでは主にJAVAファイルのプログラミングについて説明します.主にJDKが提供するI/Oによってファイルからデータを読み取り、書き込み、バイトストリームからファイルを読み書きする方法、文字ストリームからファイルを読み書きする方法、Fileクラスを使用してファイルとディレクトリを作成する方法、削除し、遍歴する方法などの操作が含まれています.
C/C++にしてもJAVAにしても、いくつかの持続的なデータを生成することができます.私たちはデータをファイルやデータベースに保存することができますが、いくつかの簡単なデータに対して、データベースに保存すると、少し損をしているように見えます.では、JAVAでデータをファイルに保存する方法は、中小規模のプログラムが身につけなければならない基本的なスキルになります.
次に、Fileクラスの概要とファイルの作成、削除、名前変更、フォルダの作成、名前変更、削除、ファイル属性の読み取り、ファイル属性の設定、フォルダの遍歴、ファイルの簡単な読み書き、サンプルコードを説明します.
1、Fileクラスの概要とファイルの作成、削除、名前変更
主な内容はFileクラスを含んで、Fileクラスはファイルあるいはフォルダを代表するために用いて、Fileクラスを通じて、ファイルとフォルダに対して豊富な操作を実行することができて、しかもファイルの経路、大きさ、ファイル名などの情報を得ることができます;ファイルクラスのcreatNewFile()メソッドでファイルを作成し、delete()メソッドでファイルを削除し、renameTo()メソッドでファイルの名前を変更します.
import java.io.File;
import java.io.IOException;

public class HelloFile {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		File file = new File("hello.txt");			//         ,     
//		File file = new File("bin/hello.txt");		//             
//		File file = new File("../hello.txt");		//              
//		File file = new File("../../hello.txt");	//                  
		//        
		if(file.exists())
		{
			//  “  ”  
			System.out.println(file.isFile());
			//  “  (   )”  
			System.out.println(file.isDirectory());
			
//			//      
//			File nameto = new File("NewHello.txt");
//			file.renameTo(nameto);
			
//			//      
//			//  1:              
//			//  2:          ,         ,      
//			File nameto = new File("src/NewHello.txt");
//			file.renameTo(nameto);		
			
//			//    
//			file.delete();
//			System.out.println("      !");
		}
		else
		{
			System.out.println("     !");
			try {
				file.createNewFile();
				System.out.println("        !");
			} catch (IOException e) {
				System.out.println("      !");
			}
		}
	}

}

2、フォルダの作成、名前変更、削除
主な内容は、mkdir()とmkdirs()メソッドを使用してフォルダを作成し、delete()メソッドを使用してフォルダを削除し、renameTo()メソッドを使用してフォルダの名前を変更することです.
import java.io.File;

public class HelloFolder {

	public static void main(String[] args) {
		//       :folder.mkdir()
		File folder1 = new File("MyFolder1");
//		if(folder1.mkdir())
//		{
//			System.out.println("         !");
//		}
//		else
//		{
//			if(folder1.exists())
//			{
//				System.out.println("         ,    !");
//			}
//			else
//			{
//			System.out.println("         !");
//			}
//		}
		
		//       :folder.mkdirs()
		File folder2 = new File("MyFolder2/one/two");
//		if(folder2.mkdirs())
//		{
//			System.out.println("         !");
//		}
//		else
//		{
//			if(folder2.exists())
//			{
//				System.out.println("         ,    !");
//			}
//			else
//			{
//			System.out.println("         !");
//			}
//		}
		
//		//      
//		//         
//		File newfolder1 =new File("MyFolder3");
//		if(folder1.renameTo(newfolder1))
//		{
//			System.out.println("Done!");
//		}else{
//			System.out.println("Fail!");
//		}
//		//          ,       ,        
//		//  :       
//		File newfolder2 =new File("MyFolder2/two");
//		if(folder2.renameTo(newfolder2))
//		{
//			System.out.println("Done!");
//		}else{
//			System.out.println("Fail!");
//		}
		
		//     
		if(folder1.delete())
		{
			System.out.println("    !");
		}else{
			System.out.println("    !");
		}
//		//  :        
//		folder2.delete();
	}

}

3、ファイル属性の読み込み
主な内容は、ファイルが存在するかどうか、ファイル名、パス、ファイルサイズ、非表示かどうか、読み取り可能かどうか、書き込み可能かどうか、フォルダかどうかなどを判断することです.
import java.io.File;

public class ReadFileProperty {

	public static void main(String[] args) {
		File file = new File("text.txt");
		
		//        
		System.out.println("      "+file.exists());
		
		//     
		System.out.println("      "+file.getName());
		
		//      (    )
		System.out.println("        "+file.getPath());
		
		//      
		System.out.println("        "+file.getAbsolutePath());
		
		//        
		System.out.println("        "+file.getParent());//          
		System.out.println("        "+ new File(file.getAbsolutePath()).getParent());//          
		
		//      
		System.out.println("      "+file.length()+"byte");
		System.out.println("      "+(float)file.length()/1000+"KB");
		
		//         
		System.out.println("         "+file.isHidden());
	
		//        
		System.out.println("        "+file.canRead());
		
		//        
		System.out.println("        "+file.canWrite());
		
		//          
		System.out.println("          "+file.isDirectory());
		
	}

}

4、ファイル属性の設定
主な内容は、ファイルを読み取り可能、書き込み可能、読み取り専用に設定することです.
import java.io.File;
import java.io.IOException;

public class SetFileProperty {

	public static void main(String[] args) {
		File file = new File("text.file");
		if(file.exists())
		{
			System.out.println("    ,    !");
			
			//        
			System.out.println("   ?"+file.canRead());
			System.out.println("   ?"+file.canWrite());
			System.out.println("    ?"+file.canExecute());
			//        
	//		file.setWritable(false);//true  false   
			
			//        
	//		file.setReadable(false);//true  false   
			
			//        
			file.setReadOnly();
			
			//        
			System.out.println("
"); System.out.println(" ?"+file.canRead()); System.out.println(" ?"+file.canWrite()); System.out.println(" ?"+file.canExecute()); }else{ System.out.println(" , !"); try { file.createNewFile(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

5、フォルダを巡る
主な内容はlistFiles()メソッドを使用してフォルダ内のすべてのアイテムを取得し、完全な階層構造を再帰的に表示することです.
package com.hqu.filetraverse.main;

import java.io.File;

public class Traverse {

	public static void main(String[] args) {
		printFiles(new File("/Job/Java/workspace/FileTraverse"),1);//      
//		printFiles(new File("../FileTraverse"),1);//        
	}
	
	public static void printFiles(File dir,int tab) {
		if(dir.isDirectory())
		{
			File next[] = dir.listFiles();		//          ,      
			for(int i=0;i

6、書類の簡単な読み書き
主な内容はFileInputStreamとFileOutputStreamの使用方法で、テキストファイルの読み取りと書き出しを実現します.
package com.hqu.rwfile;

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.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

public class ReadFile {

	public static void main(String[] args) {
		File file = new File("text.txt"); //     ,     
		if(file.exists()){
//			System.out.println("exit");
			System.err.println("exit");//    
			try {
				
				//            
				FileInputStream fis = new FileInputStream(file);//           
				InputStreamReader isr = new InputStreamReader(fis, "UTF-8");//InputStreamReader     ,"UTF-8"       ,    
				BufferedReader br = new BufferedReader(isr);//      Reader
				
				String line;	//            
				while((line = br.readLine()) != null){
					System.out.println(line);
				}
				
				//     
				br.close();
				isr.close();
				fis.close();
				
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} 
		}
		
		
		File newfile = new File("newtext.txt");//    ,           
		try {
			
			FileOutputStream fos = new FileOutputStream(newfile);
			OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
			BufferedWriter bw = new BufferedWriter(osw);
			
			bw.write("abcd
"); bw.write("efgh
"); bw.write("ijkl
"); bw.write("mnop"); // bw.write(" "); // bw.write(" , 。
"); // bw.write(" , 。
"); // bw.write(" , 。
"); // bw.write(" , ?
"); // bw.write(" , !
"); bw.close(); osw.close(); fos.close(); System.out.println(" !"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }