天天看點

Java 文本檔案的讀寫操作

Java 利用 IO 類操作文本檔案,讀取檔案内檔案名清單,根據檔案名清單輸出 CSS 格式檔案

/**
 * 讀取文本檔案,list.txt 每一行的 filename.png 檔案名轉換為如下形式
 * 
 * .icon-filename{
 *   background:url('icons/filename.png') no-repeat center center;
 * }
 *
 * 建構 jeasyui 的擴充 css 檔案
 * 
 */
package control;

import java.io.File;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;

public class iconsEx
{

	public static void main(String[] args)
	{
		final String strExName = ".png";

		// 來源檔案(檔案名清單)
		String strInList = "D:/list.txt";
		// 輸出檔案(css 檔案)
		String strOutList = "D:/iconEx.css";
		String strURL = "iconsEx";
		String strIconGroup = "ex";
		// build
		BuildCss(strInList, strOutList, strExName, strURL, strIconGroup);
	}

	/**
	 * 
	 * @return
	 */
	public static Integer BuildCss(final String strInList, final String strOutList, final String strExName, final String strURL,
			final String strIconGroup)
	{
		int count = 0;

		Integer result = null;

		try
		{
			// 打開文本檔案
			File fileIn = new File(strInList); // 要讀取以上路徑的input。txt檔案
			// 創建讀檔案流, and set charset
			InputStreamReader reader = new InputStreamReader(new FileInputStream(fileIn), "utf-8");
			BufferedReader bufferedReader = new BufferedReader(reader);

			// 創建輸出檔案
			File fileOut = new File(strOutList);
			fileOut.createNewFile();
			// 創建檔案寫對象
			BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(fileOut));

			// 創建行緩衝
			String strLineTextBuffer = null;
			// 遍歷所有行
			do {
				// 以行的形式讀取存入 string
				strLineTextBuffer = bufferedReader.readLine();

				// 找到 .png 開始的位置
				int point = strLineTextBuffer.indexOf(strExName);
				// 如果知道 .png
				if (point > 0)
				{
					final String strFullFilename = strLineTextBuffer;
					// 拆分得到檔案名
					final String strFilename = strFullFilename.substring(0, point);
					// 構造新的文本内容
					String strTheCSS = String.format(".icon-%s-%s{\n  background:url('%s/%s') no-repeat center center;\n}\n", strIconGroup,
							strFilename, strURL, strFullFilename);
					// 新文本寫入緩衝
					bufferedWriter.write(strTheCSS);
					// 調試計數器
					count++;
				}
			}
			while (strLineTextBuffer != null && strLineTextBuffer.equals("") == false);

			System.out.println("共計建構 " + count);

			// 把緩存區内容壓入檔案
			bufferedWriter.flush();
			// 關閉檔案
			bufferedReader.close();
			bufferedWriter.close();
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}

		return result;
	}
}
           

來源檔案:

Java 文本檔案的讀寫操作

輸出檔案

Java 文本檔案的讀寫操作

Q群讨論:236201801