1. 程式人生 > >文件拷貝、字符串查找

文件拷貝、字符串查找

fin fileinput int catch cef ear span 工具 創建

public class TestCopy {
    final static String sourceFile = "C:/Users/Silence/Desktop/address-all.txt";
    final static String targetFile = "C:/Users/Silence/Desktop/target.txt";

    @Test
    public void testCopy() {
        try {
            MyUtil.fileCopy(sourceFile, targetFile);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    
public void testCountWord() { int count = MyUtil.countWordInFile(sourceFile, "市轄區"); System.out.println(count); } } public class MyUtil { // 工具類中的方法都是靜態方式訪問的因此將構造器私有不允許創建對象(絕對好習慣) private MyUtil() { throw new AssertionError(); } /** * 文件拷貝一 * * @param source * @param target * @throws IOException
*/ public static void fileCopy(String source, String target) throws IOException { try (InputStream in = new FileInputStream(source)) { try (OutputStream out = new FileOutputStream(target)) { byte[] buffer = new byte[4096]; int bytesToRead;
while ((bytesToRead = in.read(buffer)) != -1) { out.write(buffer, 0, bytesToRead); } } } } /** * 文件拷貝二 * * @param source * @param target * @throws IOException */ public static void fileCopyNIO(String source, String target) throws IOException { try (FileInputStream in = new FileInputStream(source)) { try (FileOutputStream out = new FileOutputStream(target)) { FileChannel inChannel = in.getChannel(); FileChannel outChannel = out.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(4096); while (inChannel.read(buffer) != -1) { buffer.flip(); outChannel.write(buffer); buffer.clear(); } } } } /** * 輸入一個文件名和一個字符串,統計這個字符串在這個文件中出現的次數 * * @param filename * @param word * @return */ public static int countWordInFile(String filename, String word) { int counter = 0; try (FileReader fr = new FileReader(filename)) { try (BufferedReader br = new BufferedReader(fr)) { String line = null; while ((line = br.readLine()) != null) { int index = -1; while (line.length() >= word.length() && (index = line.indexOf(word)) >= 0) { counter++; line = line.substring(index + word.length()); } } } } catch (Exception e) { e.printStackTrace(); } return counter; } }

文件拷貝、字符串查找