1 package org.eclipse.aether.spi.io; 2 3 /* 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 22 import java.io.File; 23 import java.io.IOException; 24 import java.io.InputStream; 25 import java.nio.ByteBuffer; 26 27 /** 28 * A utility component to perform file-based operations. 29 */ 30 public interface FileProcessor 31 { 32 33 /** 34 * Creates the directory named by the given abstract pathname, including any necessary but nonexistent parent 35 * directories. Note that if this operation fails it may have succeeded in creating some of the necessary parent 36 * directories. 37 * 38 * @param directory The directory to create, may be {@code null}. 39 * @return {@code true} if and only if the directory was created, along with all necessary parent directories; 40 * {@code false} otherwise 41 */ 42 boolean mkdirs( File directory ); 43 44 /** 45 * Writes the given data to a file. UTF-8 is assumed as encoding for the data. Creates the necessary directories for 46 * the target file. In case of an error, the created directories will be left on the file system. 47 * 48 * @param target The file to write to, must not be {@code null}. This file will be overwritten. 49 * @param data The data to write, may be {@code null}. 50 * @throws IOException If an I/O error occurs. 51 */ 52 void write( File target, String data ) 53 throws IOException; 54 55 /** 56 * Writes the given stream to a file. Creates the necessary directories for the target file. In case of an error, 57 * the created directories will be left on the file system. 58 * 59 * @param target The file to write to, must not be {@code null}. This file will be overwritten. 60 * @param source The stream to write to the file, must not be {@code null}. 61 * @throws IOException If an I/O error occurs. 62 */ 63 void write( File target, InputStream source ) 64 throws IOException; 65 66 /** 67 * Moves the specified source file to the given target file. If the target file already exists, it is overwritten. 68 * Creates the necessary directories for the target file. In case of an error, the created directories will be left 69 * on the file system. 70 * 71 * @param source The file to move from, must not be {@code null}. 72 * @param target The file to move to, must not be {@code null}. 73 * @throws IOException If an I/O error occurs. 74 */ 75 void move( File source, File target ) 76 throws IOException; 77 78 /** 79 * Copies the specified source file to the given target file. Creates the necessary directories for the target file. 80 * In case of an error, the created directories will be left on the file system. 81 * 82 * @param source The file to copy from, must not be {@code null}. 83 * @param target The file to copy to, must not be {@code null}. 84 * @throws IOException If an I/O error occurs. 85 */ 86 void copy( File source, File target ) 87 throws IOException; 88 89 /** 90 * Copies the specified source file to the given target file. Creates the necessary directories for the target file. 91 * In case of an error, the created directories will be left on the file system. 92 * 93 * @param source The file to copy from, must not be {@code null}. 94 * @param target The file to copy to, must not be {@code null}. 95 * @param listener The listener to notify about the copy progress, may be {@code null}. 96 * @return The number of copied bytes. 97 * @throws IOException If an I/O error occurs. 98 */ 99 long copy( File source, File target, ProgressListener listener ) 100 throws IOException; 101 102 /** 103 * A listener object that is notified for every progress made while copying files. 104 * 105 * @see FileProcessor#copy(File, File, ProgressListener) 106 */ 107 public interface ProgressListener 108 { 109 110 void progressed( ByteBuffer buffer ) 111 throws IOException; 112 113 } 114 115 }