From 467c3594b98e669be847c0288a43c79d8df55f6a Mon Sep 17 00:00:00 2001 From: Pzaff Date: Mon, 24 Oct 2016 20:16:40 -0400 Subject: [PATCH] Added in Multipart parsing. Need to configure the server to parse the body. Currently only handles the actual header --- .../WEB-INF/lib/commons-fileupload-1.3.2.jar | Bin 0 -> 70282 bytes .../WEB-INF/lib/commons-io-2.5-javadoc.jar | Bin 0 -> 765022 bytes WebContent/WEB-INF/lib/commons-io-2.5.jar | Bin 0 -> 208696 bytes docs/licenses/Apache Commons/LICENSE.txt | 203 + docs/licenses/Apache Commons/NOTICE.txt | 5 + .../licenses/Apache Commons/RELEASE-NOTES.txt | 993 +++ .../Apache Commons/docs/allclasses-frame.html | 125 + .../docs/allclasses-noframe.html | 125 + .../Apache Commons/docs/constant-values.html | 264 + .../Apache Commons/docs/deprecated-list.html | 473 ++ .../Apache Commons/docs/help-doc.html | 220 + .../Apache Commons/docs/index-all.html | 5802 +++++++++++++++++ docs/licenses/Apache Commons/docs/index.html | 74 + .../org/apache/commons/io/ByteOrderMark.html | 527 ++ .../docs/org/apache/commons/io/Charsets.html | 514 ++ .../docs/org/apache/commons/io/CopyUtils.html | 668 ++ .../io/DirectoryWalker.CancelException.html | 342 + .../apache/commons/io/DirectoryWalker.html | 897 +++ .../org/apache/commons/io/EndianUtils.html | 879 +++ .../org/apache/commons/io/FileCleaner.html | 459 ++ .../commons/io/FileCleaningTracker.html | 430 ++ .../apache/commons/io/FileDeleteStrategy.html | 415 ++ .../commons/io/FileExistsException.html | 295 + .../apache/commons/io/FileSystemUtils.html | 440 ++ .../docs/org/apache/commons/io/FileUtils.html | 3441 ++++++++++ .../org/apache/commons/io/FilenameUtils.html | 1432 ++++ .../docs/org/apache/commons/io/HexDump.html | 340 + .../docs/org/apache/commons/io/IOCase.html | 597 ++ .../commons/io/IOExceptionWithCause.html | 302 + .../docs/org/apache/commons/io/IOUtils.html | 4242 ++++++++++++ .../org/apache/commons/io/LineIterator.html | 421 ++ .../apache/commons/io/TaggedIOException.html | 403 ++ .../commons/io/class-use/ByteOrderMark.html | 249 + .../apache/commons/io/class-use/Charsets.html | 115 + .../commons/io/class-use/CopyUtils.html | 115 + .../DirectoryWalker.CancelException.html | 163 + .../commons/io/class-use/DirectoryWalker.html | 115 + .../commons/io/class-use/EndianUtils.html | 115 + .../commons/io/class-use/FileCleaner.html | 115 + .../io/class-use/FileCleaningTracker.html | 162 + .../io/class-use/FileDeleteStrategy.html | 216 + .../io/class-use/FileExistsException.html | 115 + .../commons/io/class-use/FileSystemUtils.html | 115 + .../commons/io/class-use/FileUtils.html | 115 + .../commons/io/class-use/FilenameUtils.html | 115 + .../apache/commons/io/class-use/HexDump.html | 115 + .../apache/commons/io/class-use/IOCase.html | 416 ++ .../io/class-use/IOExceptionWithCause.html | 162 + .../apache/commons/io/class-use/IOUtils.html | 115 + .../commons/io/class-use/LineIterator.html | 205 + .../io/class-use/TaggedIOException.html | 115 + .../comparator/CompositeFileComparator.html | 380 ++ .../io/comparator/DefaultFileComparator.html | 422 ++ .../comparator/DirectoryFileComparator.html | 421 ++ .../comparator/ExtensionFileComparator.html | 508 ++ .../LastModifiedFileComparator.html | 425 ++ .../io/comparator/NameFileComparator.html | 507 ++ .../io/comparator/PathFileComparator.html | 507 ++ .../io/comparator/SizeFileComparator.html | 486 ++ .../class-use/CompositeFileComparator.html | 115 + .../class-use/DefaultFileComparator.html | 115 + .../class-use/DirectoryFileComparator.html | 115 + .../class-use/ExtensionFileComparator.html | 115 + .../class-use/LastModifiedFileComparator.html | 115 + .../class-use/NameFileComparator.html | 115 + .../class-use/PathFileComparator.html | 115 + .../class-use/SizeFileComparator.html | 115 + .../commons/io/comparator/package-frame.html | 25 + .../io/comparator/package-summary.html | 355 + .../commons/io/comparator/package-tree.html | 135 + .../commons/io/comparator/package-use.html | 115 + .../io/filefilter/AbstractFileFilter.html | 329 + .../commons/io/filefilter/AgeFileFilter.html | 447 ++ .../commons/io/filefilter/AndFileFilter.html | 466 ++ .../io/filefilter/CanReadFileFilter.html | 403 ++ .../io/filefilter/CanWriteFileFilter.html | 379 ++ .../io/filefilter/ConditionalFileFilter.html | 280 + .../io/filefilter/DelegateFileFilter.html | 353 + .../io/filefilter/DirectoryFileFilter.html | 368 ++ .../io/filefilter/EmptyFileFilter.html | 378 ++ .../io/filefilter/FalseFileFilter.html | 368 ++ .../commons/io/filefilter/FileFileFilter.html | 347 + .../io/filefilter/FileFilterUtils.html | 1259 ++++ .../io/filefilter/HiddenFileFilter.html | 375 ++ .../commons/io/filefilter/IOFileFilter.html | 256 + .../io/filefilter/MagicNumberFileFilter.html | 490 ++ .../commons/io/filefilter/NameFileFilter.html | 451 ++ .../commons/io/filefilter/NotFileFilter.html | 338 + .../commons/io/filefilter/OrFileFilter.html | 466 ++ .../io/filefilter/PrefixFileFilter.html | 460 ++ .../io/filefilter/RegexFileFilter.html | 371 ++ .../commons/io/filefilter/SizeFileFilter.html | 362 + .../io/filefilter/SuffixFileFilter.html | 461 ++ .../commons/io/filefilter/TrueFileFilter.html | 368 ++ .../io/filefilter/WildcardFileFilter.html | 456 ++ .../commons/io/filefilter/WildcardFilter.html | 395 ++ .../class-use/AbstractFileFilter.html | 276 + .../filefilter/class-use/AgeFileFilter.html | 115 + .../filefilter/class-use/AndFileFilter.html | 115 + .../class-use/CanReadFileFilter.html | 115 + .../class-use/CanWriteFileFilter.html | 115 + .../class-use/ConditionalFileFilter.html | 168 + .../class-use/DelegateFileFilter.html | 115 + .../class-use/DirectoryFileFilter.html | 115 + .../filefilter/class-use/EmptyFileFilter.html | 115 + .../filefilter/class-use/FalseFileFilter.html | 115 + .../filefilter/class-use/FileFileFilter.html | 115 + .../filefilter/class-use/FileFilterUtils.html | 115 + .../class-use/HiddenFileFilter.html | 115 + .../io/filefilter/class-use/IOFileFilter.html | 989 +++ .../class-use/MagicNumberFileFilter.html | 115 + .../filefilter/class-use/NameFileFilter.html | 115 + .../filefilter/class-use/NotFileFilter.html | 115 + .../io/filefilter/class-use/OrFileFilter.html | 115 + .../class-use/PrefixFileFilter.html | 115 + .../filefilter/class-use/RegexFileFilter.html | 115 + .../filefilter/class-use/SizeFileFilter.html | 115 + .../class-use/SuffixFileFilter.html | 115 + .../filefilter/class-use/TrueFileFilter.html | 115 + .../class-use/WildcardFileFilter.html | 115 + .../filefilter/class-use/WildcardFilter.html | 115 + .../commons/io/filefilter/package-frame.html | 45 + .../io/filefilter/package-summary.html | 428 ++ .../commons/io/filefilter/package-tree.html | 167 + .../commons/io/filefilter/package-use.html | 191 + .../io/input/AutoCloseInputStream.html | 385 ++ .../commons/io/input/BOMInputStream.html | 626 ++ .../commons/io/input/BoundedInputStream.html | 567 ++ .../commons/io/input/BoundedReader.html | 421 ++ .../commons/io/input/BrokenInputStream.html | 403 ++ .../io/input/CharSequenceInputStream.html | 513 ++ .../commons/io/input/CharSequenceReader.html | 464 ++ .../input/ClassLoaderObjectInputStream.html | 385 ++ .../io/input/CloseShieldInputStream.html | 326 + .../commons/io/input/ClosedInputStream.html | 328 + .../commons/io/input/CountingInputStream.html | 432 ++ .../commons/io/input/DemuxInputStream.html | 330 + .../commons/io/input/NullInputStream.html | 631 ++ .../apache/commons/io/input/NullReader.html | 633 ++ .../commons/io/input/ProxyInputStream.html | 590 ++ .../apache/commons/io/input/ProxyReader.html | 620 ++ .../commons/io/input/ReaderInputStream.html | 538 ++ .../io/input/ReversedLinesFileReader.html | 383 ++ .../io/input/SwappedDataInputStream.html | 676 ++ .../commons/io/input/TaggedInputStream.html | 390 ++ .../org/apache/commons/io/input/Tailer.html | 753 +++ .../commons/io/input/TailerListener.html | 298 + .../io/input/TailerListenerAdapter.html | 381 ++ .../commons/io/input/TeeInputStream.html | 441 ++ .../io/input/UnixLineEndingInputStream.html | 330 + .../input/WindowsLineEndingInputStream.html | 330 + .../commons/io/input/XmlStreamReader.html | 737 +++ .../io/input/XmlStreamReaderException.html | 418 ++ .../input/class-use/AutoCloseInputStream.html | 115 + .../io/input/class-use/BOMInputStream.html | 115 + .../input/class-use/BoundedInputStream.html | 115 + .../io/input/class-use/BoundedReader.html | 115 + .../io/input/class-use/BrokenInputStream.html | 115 + .../class-use/CharSequenceInputStream.html | 115 + .../input/class-use/CharSequenceReader.html | 115 + .../ClassLoaderObjectInputStream.html | 115 + .../class-use/CloseShieldInputStream.html | 115 + .../io/input/class-use/ClosedInputStream.html | 161 + .../input/class-use/CountingInputStream.html | 115 + .../io/input/class-use/DemuxInputStream.html | 115 + .../io/input/class-use/NullInputStream.html | 115 + .../io/input/class-use/NullReader.html | 115 + .../io/input/class-use/ProxyInputStream.html | 201 + .../io/input/class-use/ProxyReader.html | 115 + .../io/input/class-use/ReaderInputStream.html | 115 + .../class-use/ReversedLinesFileReader.html | 115 + .../class-use/SwappedDataInputStream.html | 115 + .../io/input/class-use/TaggedInputStream.html | 115 + .../commons/io/input/class-use/Tailer.html | 246 + .../io/input/class-use/TailerListener.html | 306 + .../class-use/TailerListenerAdapter.html | 115 + .../io/input/class-use/TeeInputStream.html | 115 + .../class-use/UnixLineEndingInputStream.html | 115 + .../WindowsLineEndingInputStream.html | 115 + .../io/input/class-use/XmlStreamReader.html | 115 + .../class-use/XmlStreamReaderException.html | 115 + .../commons/io/input/package-frame.html | 51 + .../commons/io/input/package-summary.html | 355 + .../apache/commons/io/input/package-tree.html | 193 + .../apache/commons/io/input/package-use.html | 171 + .../io/monitor/FileAlterationListener.html | 341 + .../FileAlterationListenerAdaptor.html | 414 ++ .../io/monitor/FileAlterationMonitor.html | 461 ++ .../io/monitor/FileAlterationObserver.html | 629 ++ .../apache/commons/io/monitor/FileEntry.html | 604 ++ .../class-use/FileAlterationListener.html | 197 + .../FileAlterationListenerAdaptor.html | 115 + .../class-use/FileAlterationMonitor.html | 115 + .../class-use/FileAlterationObserver.html | 221 + .../io/monitor/class-use/FileEntry.html | 210 + .../commons/io/monitor/package-frame.html | 25 + .../commons/io/monitor/package-summary.html | 187 + .../commons/io/monitor/package-tree.html | 135 + .../commons/io/monitor/package-use.html | 166 + .../io/output/AppendableOutputStream.html | 315 + .../commons/io/output/BrokenOutputStream.html | 358 + .../io/output/ByteArrayOutputStream.html | 640 ++ .../io/output/ChunkedOutputStream.html | 335 + .../commons/io/output/ChunkedWriter.html | 349 + .../io/output/CloseShieldOutputStream.html | 327 + .../commons/io/output/ClosedOutputStream.html | 331 + .../io/output/CountingOutputStream.html | 406 ++ .../io/output/DeferredFileOutputStream.html | 474 ++ .../commons/io/output/DemuxOutputStream.html | 353 + .../io/output/FileWriterWithEncoding.html | 728 +++ .../commons/io/output/LockableFileWriter.html | 693 ++ .../commons/io/output/NullOutputStream.html | 372 ++ .../apache/commons/io/output/NullWriter.html | 531 ++ .../commons/io/output/ProxyOutputStream.html | 492 ++ .../apache/commons/io/output/ProxyWriter.html | 629 ++ .../io/output/StringBuilderWriter.html | 524 ++ .../commons/io/output/TaggedOutputStream.html | 390 ++ .../commons/io/output/TeeOutputStream.html | 454 ++ .../io/output/ThresholdingOutputStream.html | 566 ++ .../commons/io/output/WriterOutputStream.html | 573 ++ .../commons/io/output/XmlStreamWriter.html | 464 ++ .../class-use/AppendableOutputStream.html | 115 + .../output/class-use/BrokenOutputStream.html | 115 + .../class-use/ByteArrayOutputStream.html | 115 + .../output/class-use/ChunkedOutputStream.html | 115 + .../io/output/class-use/ChunkedWriter.html | 115 + .../class-use/CloseShieldOutputStream.html | 115 + .../output/class-use/ClosedOutputStream.html | 161 + .../class-use/CountingOutputStream.html | 115 + .../class-use/DeferredFileOutputStream.html | 115 + .../output/class-use/DemuxOutputStream.html | 115 + .../class-use/FileWriterWithEncoding.html | 115 + .../output/class-use/LockableFileWriter.html | 115 + .../io/output/class-use/NullOutputStream.html | 161 + .../io/output/class-use/NullWriter.html | 161 + .../output/class-use/ProxyOutputStream.html | 181 + .../io/output/class-use/ProxyWriter.html | 115 + .../output/class-use/StringBuilderWriter.html | 115 + .../output/class-use/TaggedOutputStream.html | 115 + .../io/output/class-use/TeeOutputStream.html | 115 + .../class-use/ThresholdingOutputStream.html | 162 + .../output/class-use/WriterOutputStream.html | 115 + .../io/output/class-use/XmlStreamWriter.html | 115 + .../commons/io/output/package-frame.html | 39 + .../commons/io/output/package-summary.html | 289 + .../commons/io/output/package-tree.html | 171 + .../apache/commons/io/output/package-use.html | 177 + .../org/apache/commons/io/package-frame.html | 42 + .../apache/commons/io/package-summary.html | 305 + .../org/apache/commons/io/package-tree.html | 172 + .../org/apache/commons/io/package-use.html | 286 + .../io/serialization/ClassNameMatcher.html | 212 + .../ValidatingObjectInputStream.html | 537 ++ .../class-use/ClassNameMatcher.html | 168 + .../ValidatingObjectInputStream.html | 210 + .../io/serialization/package-frame.html | 22 + .../io/serialization/package-summary.html | 165 + .../io/serialization/package-tree.html | 140 + .../commons/io/serialization/package-use.html | 159 + .../Apache Commons/docs/overview-frame.html | 25 + .../Apache Commons/docs/overview-summary.html | 178 + .../Apache Commons/docs/overview-tree.html | 328 + .../licenses/Apache Commons/docs/package-list | 7 + .../docs/resources/background.gif | Bin 0 -> 2313 bytes .../Apache Commons/docs/resources/tab.gif | Bin 0 -> 291 bytes .../docs/resources/titlebar.gif | Bin 0 -> 10701 bytes .../docs/resources/titlebar_end.gif | Bin 0 -> 849 bytes .../Apache Commons/docs/serialized-form.html | 972 +++ .../Apache Commons/docs/stylesheet.css | 474 ++ docs/licenses/Apache FileUploader/LICENSE.txt | 202 + docs/licenses/Apache FileUploader/NOTICE.txt | 5 + .../site/apidocs/allclasses-frame.html | 59 + .../site/apidocs/allclasses-noframe.html | 59 + .../site/apidocs/constant-values.html | 297 + .../site/apidocs/deprecated-list.html | 383 ++ .../site/apidocs/help-doc.html | 230 + .../site/apidocs/index-all.html | 1628 +++++ .../site/apidocs/index.html | 75 + .../commons/fileupload/DefaultFileItem.html | 321 + .../fileupload/DefaultFileItemFactory.html | 394 ++ .../commons/fileupload/DiskFileUpload.html | 560 ++ .../apache/commons/fileupload/FileItem.html | 607 ++ .../commons/fileupload/FileItemFactory.html | 255 + .../commons/fileupload/FileItemHeaders.html | 310 + .../fileupload/FileItemHeadersSupport.html | 272 + .../commons/fileupload/FileItemIterator.html | 273 + .../FileItemStream.ItemSkippedException.html | 277 + .../commons/fileupload/FileItemStream.html | 382 ++ .../apache/commons/fileupload/FileUpload.html | 398 ++ ...adBase.FileSizeLimitExceededException.html | 417 ++ .../FileUploadBase.FileUploadIOException.html | 326 + .../FileUploadBase.IOFileUploadException.html | 333 + ...ploadBase.InvalidContentTypeException.html | 332 + .../FileUploadBase.SizeException.html | 365 ++ ...UploadBase.SizeLimitExceededException.html | 351 + .../FileUploadBase.UnknownSizeException.html | 317 + .../commons/fileupload/FileUploadBase.html | 1231 ++++ .../fileupload/FileUploadException.html | 402 ++ .../fileupload/InvalidFileNameException.html | 329 + ...tipartStream.IllegalBoundaryException.html | 299 + .../MultipartStream.ItemInputStream.html | 455 ++ ...tipartStream.MalformedStreamException.html | 300 + .../MultipartStream.ProgressNotifier.html | 204 + .../commons/fileupload/MultipartStream.html | 1006 +++ .../commons/fileupload/ParameterParser.html | 438 ++ .../commons/fileupload/ProgressListener.html | 244 + .../commons/fileupload/RequestContext.html | 313 + .../commons/fileupload/UploadContext.html | 257 + .../fileupload/class-use/DefaultFileItem.html | 125 + .../class-use/DefaultFileItemFactory.html | 171 + .../fileupload/class-use/DiskFileUpload.html | 125 + .../fileupload/class-use/FileItem.html | 379 ++ .../fileupload/class-use/FileItemFactory.html | 331 + .../fileupload/class-use/FileItemHeaders.html | 279 + .../class-use/FileItemHeadersSupport.html | 226 + .../class-use/FileItemIterator.html | 232 + .../FileItemStream.ItemSkippedException.html | 125 + .../fileupload/class-use/FileItemStream.html | 171 + .../fileupload/class-use/FileUpload.html | 201 + ...adBase.FileSizeLimitExceededException.html | 125 + .../FileUploadBase.FileUploadIOException.html | 179 + .../FileUploadBase.IOFileUploadException.html | 125 + ...ploadBase.InvalidContentTypeException.html | 125 + .../FileUploadBase.SizeException.html | 177 + ...UploadBase.SizeLimitExceededException.html | 125 + .../FileUploadBase.UnknownSizeException.html | 125 + .../fileupload/class-use/FileUploadBase.html | 238 + .../class-use/FileUploadException.html | 379 ++ .../class-use/InvalidFileNameException.html | 125 + ...tipartStream.IllegalBoundaryException.html | 171 + .../MultipartStream.ItemInputStream.html | 125 + ...tipartStream.MalformedStreamException.html | 194 + .../MultipartStream.ProgressNotifier.html | 172 + .../fileupload/class-use/MultipartStream.html | 125 + .../fileupload/class-use/ParameterParser.html | 125 + .../class-use/ProgressListener.html | 186 + .../fileupload/class-use/RequestContext.html | 269 + .../fileupload/class-use/UploadContext.html | 203 + .../commons/fileupload/disk/DiskFileItem.html | 941 +++ .../fileupload/disk/DiskFileItemFactory.html | 568 ++ .../disk/class-use/DiskFileItem.html | 173 + .../disk/class-use/DiskFileItemFactory.html | 173 + .../fileupload/disk/package-frame.html | 21 + .../fileupload/disk/package-summary.html | 198 + .../commons/fileupload/disk/package-tree.html | 139 + .../commons/fileupload/disk/package-use.html | 171 + .../commons/fileupload/package-frame.html | 54 + .../commons/fileupload/package-summary.html | 428 ++ .../commons/fileupload/package-tree.html | 218 + .../commons/fileupload/package-use.html | 452 ++ .../fileupload/portlet/PortletFileUpload.html | 481 ++ .../portlet/PortletRequestContext.html | 420 ++ .../portlet/class-use/PortletFileUpload.html | 125 + .../class-use/PortletRequestContext.html | 125 + .../fileupload/portlet/package-frame.html | 21 + .../fileupload/portlet/package-summary.html | 188 + .../fileupload/portlet/package-tree.html | 147 + .../fileupload/portlet/package-use.html | 125 + .../servlet/FileCleanerCleanup.html | 409 ++ .../fileupload/servlet/ServletFileUpload.html | 479 ++ .../servlet/ServletRequestContext.html | 420 ++ .../servlet/class-use/FileCleanerCleanup.html | 125 + .../servlet/class-use/ServletFileUpload.html | 125 + .../class-use/ServletRequestContext.html | 125 + .../fileupload/servlet/package-frame.html | 22 + .../fileupload/servlet/package-summary.html | 196 + .../fileupload/servlet/package-tree.html | 148 + .../fileupload/servlet/package-use.html | 125 + .../commons/fileupload/util/Closeable.html | 258 + .../fileupload/util/FileItemHeadersImpl.html | 390 ++ .../fileupload/util/LimitedInputStream.html | 484 ++ .../commons/fileupload/util/Streams.html | 409 ++ .../fileupload/util/class-use/Closeable.html | 125 + .../util/class-use/FileItemHeadersImpl.html | 171 + .../util/class-use/LimitedInputStream.html | 125 + .../fileupload/util/class-use/Streams.html | 125 + .../fileupload/util/mime/MimeUtility.html | 259 + .../util/mime/class-use/MimeUtility.html | 125 + .../fileupload/util/mime/package-frame.html | 20 + .../fileupload/util/mime/package-summary.html | 156 + .../fileupload/util/mime/package-tree.html | 138 + .../fileupload/util/mime/package-use.html | 125 + .../fileupload/util/package-frame.html | 26 + .../fileupload/util/package-summary.html | 187 + .../commons/fileupload/util/package-tree.html | 152 + .../commons/fileupload/util/package-use.html | 164 + .../site/apidocs/overview-frame.html | 26 + .../site/apidocs/overview-summary.html | 185 + .../site/apidocs/overview-tree.html | 240 + .../site/apidocs/package-list | 6 + .../site/apidocs/script.js | 30 + .../site/apidocs/serialized-form.html | 464 ++ .../site/apidocs/stylesheet.css | 574 ++ docs/licenses/Apache Tomcat/LICENSE | 1061 +++ docs/licenses/Apache Tomcat/NOTICE | 55 + docs/licenses/Apache Tomcat/RELEASE-NOTES | 172 + 396 files changed, 122821 insertions(+) create mode 100644 WebContent/WEB-INF/lib/commons-fileupload-1.3.2.jar create mode 100644 WebContent/WEB-INF/lib/commons-io-2.5-javadoc.jar create mode 100644 WebContent/WEB-INF/lib/commons-io-2.5.jar create mode 100644 docs/licenses/Apache Commons/LICENSE.txt create mode 100644 docs/licenses/Apache Commons/NOTICE.txt create mode 100644 docs/licenses/Apache Commons/RELEASE-NOTES.txt create mode 100644 docs/licenses/Apache Commons/docs/allclasses-frame.html create mode 100644 docs/licenses/Apache Commons/docs/allclasses-noframe.html create mode 100644 docs/licenses/Apache Commons/docs/constant-values.html create mode 100644 docs/licenses/Apache Commons/docs/deprecated-list.html create mode 100644 docs/licenses/Apache Commons/docs/help-doc.html create mode 100644 docs/licenses/Apache Commons/docs/index-all.html create mode 100644 docs/licenses/Apache Commons/docs/index.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/ByteOrderMark.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/Charsets.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/CopyUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/DirectoryWalker.CancelException.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/DirectoryWalker.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/EndianUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/FileCleaner.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/FileCleaningTracker.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/FileDeleteStrategy.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/FileExistsException.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/FileSystemUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/FileUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/FilenameUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/HexDump.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/IOCase.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/IOExceptionWithCause.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/IOUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/LineIterator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/TaggedIOException.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/ByteOrderMark.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/Charsets.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/CopyUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/DirectoryWalker.CancelException.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/DirectoryWalker.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/EndianUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileCleaner.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileCleaningTracker.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileDeleteStrategy.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileExistsException.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileSystemUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FilenameUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/HexDump.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/IOCase.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/IOExceptionWithCause.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/IOUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/LineIterator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/TaggedIOException.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/CompositeFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/DefaultFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/DirectoryFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/ExtensionFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/LastModifiedFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/NameFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/PathFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/SizeFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/CompositeFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/DefaultFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/DirectoryFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/ExtensionFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/LastModifiedFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/NameFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/PathFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/SizeFileComparator.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-frame.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-summary.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-tree.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-use.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/AbstractFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/AgeFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/AndFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/CanReadFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/CanWriteFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/ConditionalFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/DelegateFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/DirectoryFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/EmptyFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/FalseFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/FileFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/FileFilterUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/HiddenFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/IOFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/MagicNumberFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/NameFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/NotFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/OrFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/PrefixFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/RegexFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/SizeFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/SuffixFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/TrueFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/WildcardFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/WildcardFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/AbstractFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/AgeFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/AndFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/CanReadFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/CanWriteFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/ConditionalFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/DelegateFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/DirectoryFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/EmptyFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/FalseFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/FileFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/FileFilterUtils.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/HiddenFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/IOFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/MagicNumberFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/NameFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/NotFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/OrFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/PrefixFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/RegexFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/SizeFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/SuffixFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/TrueFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/WildcardFileFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/WildcardFilter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-frame.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-summary.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-tree.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-use.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/AutoCloseInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BOMInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BoundedInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BoundedReader.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BrokenInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CharSequenceInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CharSequenceReader.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ClassLoaderObjectInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CloseShieldInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ClosedInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CountingInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/DemuxInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/NullInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/NullReader.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ProxyInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ProxyReader.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ReaderInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ReversedLinesFileReader.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/SwappedDataInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TaggedInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/Tailer.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TailerListener.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TailerListenerAdapter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TeeInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/UnixLineEndingInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/WindowsLineEndingInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/XmlStreamReader.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/XmlStreamReaderException.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/AutoCloseInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BOMInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BoundedInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BoundedReader.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BrokenInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CharSequenceInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CharSequenceReader.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ClassLoaderObjectInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CloseShieldInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ClosedInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CountingInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/DemuxInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/NullInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/NullReader.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ProxyInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ProxyReader.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ReaderInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ReversedLinesFileReader.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/SwappedDataInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TaggedInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/Tailer.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TailerListener.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TailerListenerAdapter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TeeInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/UnixLineEndingInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/WindowsLineEndingInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/XmlStreamReader.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/XmlStreamReaderException.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-frame.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-summary.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-tree.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-use.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationListener.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationListenerAdaptor.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationMonitor.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationObserver.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileEntry.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationListener.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationListenerAdaptor.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationMonitor.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationObserver.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileEntry.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-frame.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-summary.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-tree.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-use.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/AppendableOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/BrokenOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ByteArrayOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ChunkedOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ChunkedWriter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/CloseShieldOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ClosedOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/CountingOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/DeferredFileOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/DemuxOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/FileWriterWithEncoding.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/LockableFileWriter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/NullOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/NullWriter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ProxyOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ProxyWriter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/StringBuilderWriter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/TaggedOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/TeeOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ThresholdingOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/WriterOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/XmlStreamWriter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/AppendableOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/BrokenOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ByteArrayOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ChunkedOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ChunkedWriter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/CloseShieldOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ClosedOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/CountingOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/DeferredFileOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/DemuxOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/FileWriterWithEncoding.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/LockableFileWriter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/NullOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/NullWriter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ProxyOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ProxyWriter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/StringBuilderWriter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/TaggedOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/TeeOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ThresholdingOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/WriterOutputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/XmlStreamWriter.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-frame.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-summary.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-tree.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-use.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/package-frame.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/package-summary.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/package-tree.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/package-use.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/ClassNameMatcher.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/ValidatingObjectInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/class-use/ClassNameMatcher.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/class-use/ValidatingObjectInputStream.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-frame.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-summary.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-tree.html create mode 100644 docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-use.html create mode 100644 docs/licenses/Apache Commons/docs/overview-frame.html create mode 100644 docs/licenses/Apache Commons/docs/overview-summary.html create mode 100644 docs/licenses/Apache Commons/docs/overview-tree.html create mode 100644 docs/licenses/Apache Commons/docs/package-list create mode 100644 docs/licenses/Apache Commons/docs/resources/background.gif create mode 100644 docs/licenses/Apache Commons/docs/resources/tab.gif create mode 100644 docs/licenses/Apache Commons/docs/resources/titlebar.gif create mode 100644 docs/licenses/Apache Commons/docs/resources/titlebar_end.gif create mode 100644 docs/licenses/Apache Commons/docs/serialized-form.html create mode 100644 docs/licenses/Apache Commons/docs/stylesheet.css create mode 100644 docs/licenses/Apache FileUploader/LICENSE.txt create mode 100644 docs/licenses/Apache FileUploader/NOTICE.txt create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/allclasses-frame.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/allclasses-noframe.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/constant-values.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/deprecated-list.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/help-doc.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/index-all.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/index.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/DefaultFileItem.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/DefaultFileItemFactory.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/DiskFileUpload.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItem.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemFactory.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemHeaders.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemHeadersSupport.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemIterator.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemStream.ItemSkippedException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemStream.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUpload.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.FileSizeLimitExceededException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.FileUploadIOException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.IOFileUploadException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.InvalidContentTypeException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.SizeException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.SizeLimitExceededException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.UnknownSizeException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/InvalidFileNameException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.IllegalBoundaryException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.ItemInputStream.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.MalformedStreamException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.ProgressNotifier.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/ParameterParser.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/ProgressListener.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/RequestContext.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/UploadContext.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/DefaultFileItem.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/DefaultFileItemFactory.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/DiskFileUpload.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItem.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemFactory.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemHeaders.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemHeadersSupport.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemIterator.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemStream.ItemSkippedException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemStream.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUpload.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.FileSizeLimitExceededException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.FileUploadIOException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.IOFileUploadException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.InvalidContentTypeException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.SizeException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.SizeLimitExceededException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.UnknownSizeException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/InvalidFileNameException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.IllegalBoundaryException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.ItemInputStream.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.MalformedStreamException.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.ProgressNotifier.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/ParameterParser.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/ProgressListener.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/RequestContext.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/UploadContext.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/DiskFileItem.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/DiskFileItemFactory.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/class-use/DiskFileItem.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/class-use/DiskFileItemFactory.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-frame.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-summary.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-tree.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-use.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-frame.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-summary.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-tree.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-use.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/PortletFileUpload.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/PortletRequestContext.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/class-use/PortletFileUpload.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/class-use/PortletRequestContext.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-frame.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-summary.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-tree.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-use.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/FileCleanerCleanup.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/ServletFileUpload.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/ServletRequestContext.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/class-use/FileCleanerCleanup.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/class-use/ServletFileUpload.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/class-use/ServletRequestContext.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-frame.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-summary.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-tree.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-use.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/Closeable.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/FileItemHeadersImpl.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/LimitedInputStream.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/Streams.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/Closeable.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/FileItemHeadersImpl.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/LimitedInputStream.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/Streams.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/MimeUtility.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/class-use/MimeUtility.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-frame.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-summary.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-tree.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-use.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-frame.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-summary.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-tree.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-use.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/overview-frame.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/overview-summary.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/overview-tree.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/package-list create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/script.js create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/serialized-form.html create mode 100644 docs/licenses/Apache FileUploader/site/apidocs/stylesheet.css create mode 100644 docs/licenses/Apache Tomcat/LICENSE create mode 100644 docs/licenses/Apache Tomcat/NOTICE create mode 100644 docs/licenses/Apache Tomcat/RELEASE-NOTES diff --git a/WebContent/WEB-INF/lib/commons-fileupload-1.3.2.jar b/WebContent/WEB-INF/lib/commons-fileupload-1.3.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..4975590e34f0990118d0063b601bd9ce62fc4a3e GIT binary patch literal 70282 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®#_voI} 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 z zkvrU4B>;^H?sAs2Q89#zHox2C5exN@jgXjTMZmz(Q$iV@@x;Vf!SO|%nVcY^wiRdAlBNL2zCL9aY6pJaiVhdCM zPt>~=CFJUnDGg$W#&L}*4GaCjjB@7g^JQms>h5>Ip-W%jM4LXtSpwHjITkFO z2GSk|b3S7 zduV`Fa?-O)xXdh9&me;i&JPAw)mz!Xd#mm}z@h&!w^-YRi$yePl;-vHCu2UXqequ? z1K~7?2@!W<#vhMQPYl>!)#!^K>0~7QQWDloE8^`KwtXp^*#0AfDPBo$F08mcnIN^B zd*|0T-6)7MtgHfD$q=EyX;&I9o1xx4+o3^0q~l(TB}-ES@7HcGlH;D}_a~^0n;KDy zLf9?`M$iPURA`k&CEd{Q5`6q_2wtkmYMznun(Lqu%%4dkkGpF2YtabX0r(L1f1-!3 zK{uBojnUB8BR(>d?mpw`Vw)HcmYiSDVt)P5eT~226G&ifVrS|Ie$3~1}19*vA-5mqh`NnJlSh%Zt z)O{K|Tl0+y6J0E8?>18NH`f4_b)2tixAHV30~_ffva=nmYOiUhHs`CBS<(T$k(8Eo zxOT-|*ltq}FF&1rFOcQ#CN| zI7dkip>Is!0$|W{8|_fQ+Z)G#Ft)ukH!))nJSXHyuSyhQkspe$7(ml+8TK|IecaaY z_i2=c;OF^L3SjmY7v|MstUjdc8n4Q@WSZClk75!NOUmygQCaRJl^w@>@A#sO%4`Ug z;yuVM=zG;Zv7xiY1ZtLikOGw&?~^ADH}>B#7`pNvG{#&m`Om*&9PhTm*v+4y0Pc{{ zwS5(&x?OubzFn-4UcjKL!-LT!sa)^FFi1?3S|-PI1_a(?Bj@OLYc7KA4Q~xoYzBd$ zI>M}#C4!p?)vg3VJF(j+;i?xp>s79VqR)@7ZTjoZ2YbxZMU<>_6uexAxMSd{Jnjft zWV5ZMCDfVsWs2im2(Q?YfA1SU0qUSHG9gc3!kkpprOHW0N6jS+&d$3ky{6$uD_H*b z$Bc~bJdu$cm20>^@v9euiANHjpC&;N_`)Xb5cmUBK`dW%!q0jJrSNdZ3KZ?cOGDp^ ziw1Sjz6;=nQY#Y90~I`zD#!<}#9Kv4BdK2)I3^TN+uZ%^O*d#m7 zY|=R_)DpQo@l0b5-cZqd%C%B5yJUB0mvVqc>!lNk+zom3C)tO(iBep-vEwgS_c_m= z)$NrMEXgyNQ7*M}k`eb)Z5feHC5Ckrr;E8kw}kX$`D@Vjsz_4>0oPQJHYla?5k31Y zBAYC(a4;P>B^~!&^ks@{g66=Mz+p?yvJ?&@bXSCZWc7oDq}7z(oT{tq_5hxHCiJpN z14`=#?T%km_h56S^f%wUpibwLr;9oTE4#w@?rG0de+tQa;d;!m*Qj}+^qs68L!gqJ z_qqCVT^42|>|!_qMRB1!06s*5aH)w&pGe!&mn6>Z{S{RmJ_Wuz@$gAnAY;rsB@bxF zfd|Qkov8HexM=rRDmfkB$&()wqWl~%u)PNvQ{wM8xF>eM9MZ5?&5WwIcn4Kpu~m6{ zXA< zsqRcFUq$A?bk=?cyktqmp&pSaQd)8az8Qv18@IBtB*+;IEH_V-IK32hgw=tkl25lx zpwhX)#jBH!zRekgxhb{`7JMMFQ)gMVG z7j@1s*dpdAD*ugeNj^wiARn^(gmzKOS~R*b+RbDN3fHDZZq|hI^Rt=jy}q@+bHWKq z=5oBotWZv+|00ojKO(-#A$ODC+YBBEB@B5T zg>gd4w28RDG_vR49vo}6gpr05!l*2qG*oAa%Q}0fwCOPwtjRe0C^~>%+mt*;YK1;! zmD0oAITLo2`RfK1$1*1Pync@U7B64MSDQIZ1pRz_SnI*QBPP5an_U6W$o!?gcZx>@ zz$e9HGzy=@lSJ>>7J$An2c?2f^d<&Q_oB;`Y{ z7Kriq=J22X*x*TtwsBb_0PI4=HmbA{brvc`CeOtb%0AGa?@A3z#kC=)4!fR7uu`*3 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 aPfk)|kbnXK42%!>Im845b3eZP>;D65)OxxA literal 0 HcmV?d00001 diff --git a/WebContent/WEB-INF/lib/commons-io-2.5-javadoc.jar b/WebContent/WEB-INF/lib/commons-io-2.5-javadoc.jar new file mode 100644 index 0000000000000000000000000000000000000000..b9575294aea25ddb56d521a106419af723a64545 GIT binary patch literal 765022 zcma&NW0WOKvMyYv=oS8up#VTYK>Yv6Q2v!nR!~k- zOjKEgPF5@>ZUSn60Y&6FVP}y|?QdKHN|LBoQWrR;WT5jG<;Ko(OuFr*a)>J5))uyV+Qb1#@bUGyjT6vKkLi~1OWI;6aQ3L!`~DJ@`u9C(d-|(`tK>A|1X7sy@8Rr$$ub3{{Iph z+1c3G**g6T!{3dC_TMvD*!>3{!hg&2XFhuaM+0X&$A4k}`*NxOH|$2%22M`2E>8ct z*uTq;_iqRKvuKO|ECj{>$os#M0O#M1Vqt6V;`}d4_`B?6{{!cLH~ZfeN$_vS`0u#? zF2TRIqN#$;R#L>dQ+QQSo*}~5DKj@O~e>uYc zMjG6IJC>b`^M5ue`TxZF-_8GboBlcf0FEY3b}o)aCjUIQ|GYi_PWO+4?rP%bYGL9= zYwBoVV?t-{Y-3%cqGOlEfZ{V#*Y-Hr#H(LtLETJEU{b71Yy!KUUdr2Hk6g{g)|fMU zxiSM**|d&_RRXW?#6QjXOu)^TLHBcC%@?@!*9zw$Ki`ZQW_)-90t;YF8_d>EdNHizBMU*!?7mKyGWN9-(j| zd!N!`LDs)t?ut*f|b-^6o&bV`|$*k;XIz-j6 zboBJKg$w>C!Aa?KE#@siTItXiyPw5-CNc46kDAobjiAwIpfY!BVd;;sMe0zG0AMCU z)ftkT9zX;gRxLxeBF49>EIW`HmO44G#{sA!*6v@nOx8})Ivc{s&b=CkuO)t8H(7?HmVPJ(lff}ZI?h>h z+`u;QqjARg9pLK)^;!@2_r6liLwtZ!7rsyTx=xJ^qbIjkNLKHP)AfX@$5l|<3OOk?}68s?)c!fpgj*>*ofPp%4OixiatH^ z6Q90CWBL- zL=!l@OcKdaMyt9sx&)g33yh>_KDC05$!*((qR*L@%9ejz@`H_}Re%X7Y&re3~2uc!2>Y z^`fj;F_sQ@7K$2*$Pp?i3+!)7;79pDh|&!iD5SBO^VyUASq1J(4Kv1M@%A!_!9_VU-kVkt2N4}cWRH00e=wKE#O3aP%Q-vF)p2~eg zj8<7xQUGFsV)#BAow-nb$FgAc6It{iB&Spc)WGbk$A^Sy5{m(;@-rQzTm8ZUoR2jW zEiK^z7kAF`I^4vNVs62bsH3tdA!Ehz^;E5;Lx4EziA&Jr5(@8tGo|R_U=!iAj9*tt zsAMjKKGXOFEpnT9u_4(+!;@tBq{Srq`vUMzIp-BxHs1jf>td(WJj5QD5KYsk?kV3dSTc$iSc2B{D6r9*)5vZ&X&LCSO|vcSZ?{x`Z^qpWz{}<(k>cJCfmw zI?=-(P=f*y=ASawe7Zn}%KpS;SVbhau|f}lxW^=U9b+2afY~gj3=LYdRGcl44LP?| za&Sf6{N!;)S#oGG_)9j=mR{n^ei?C_oB35seHUzWz^ptXj#JPPDGBV*oN^DxcsjC* zUyO;&YSavS;YW?8;ZsGgl0Y-bz_>?qpm?sHe8{Qo6u)R=6L20So2!~$RkYCA=~q~k z)gn)OskG<3ABkf+>sCB>C~F~_J9 z!vN2QR^q6HrV!Zk&w1DbMTRd#;QQ45f2Wa@_Xs@7bT+=e$a*>BOtzzl6|tA~FtGPL zy-Jp-hH7Jb0h|VEElXT@ZuF@~D(c0ckMOa|;~b3bkpK?eZ8EUpJv>!g+63aXm|F8N zI7;02S8_w!X!CJ&7di5uC}LF+1$K0wiepB+0hMXw;!M`|G7SvBqGOHp;TG#)8+Mc~tl2iyOkLnjYO}sRBP9oPr zfP)gDhsEZ9tBEOUJ1eaJ@+8vWs*DhflGM2bvr<5aL$GrkrpY5{K}esRhqyQivw@h$ zeo?!kUslIgS4ly4vKFY-MoCBsT5lk8ye@ZjR#d;PUb1*N>=U*@Ad*=j;?1FLY?jpx`@MubcA627!qB4&K-v zz-_dIVaEL@NpLaj+Eq2Xx(k7r5Y+|h9i_zx4ssjmkSFh@p@MRuA%5<xc8LVq|!Z&|$ ztqu|FA7Ph~Z`qxqzbUA)nKsk5H(x)a(zr@pt3V?l?(LH!=p+Lx z#)9naU&h{X@S08wU9sYoswd}Uxn!IgBJ{jb8FK$?U$JJ4QCzFbj~nk;l^M~p-?bO_uiAe=v;4gf9?vC7_7dMYODWDA zjM=iLXyO_R)>-}-{v{+|3>fSM$JpqkM1vSE&j87~&kuQkVP75lFfQY9y}G$#Fnkaz z=vVUMtc0)CGKPndVS&84vEd4FwS`C1?d?GvKl?N%pDANjlkMmtDe+`@Ku79`!lz}V zIGLagSBAofa1LI_tgna~d`^DDtBndDMXxgR_^CSOj z_uRqX)6IO=OW;}UyQ{|&rdBEn5X9WrXa=}{?u^$L)WhI#7t;QCcZJY3&wz)4jU>Q% zl3el!u9seog>VKI74$IRT-75HNNn2|Zy#MinwmSFR_%y?-Jz0r8Z&o3B0yXGpy+Sm z4^{(1M4g9}wmP&7_O3PKz^#zssgC9I*TFy-TmXUjlfff`| zEaIZkoxIlk(3(CCY#mC>mwxWFW88L?>Zy^syfdl=p}y)dy-xSjt%% z%5@(Ss&$>C&TY7Kco-+10_&-BLOQm2M-qM(r0nP}a~Y z$=XTY3>i<+g8yDc1xcojO~Dsp*}AgW6~8M|XQBB(>O&FfOx7BXL(c zgsbc}@C?TQNc6l9F~-_HH6v?fOcX^pQ_Q?!zs<;St;~`w*lcJRDwYmUDQ7kb;YP1- z2-U;TWF1AzB&!3zA4g|M{hdz|O@L0}aYJw?m>i&192|dory)3Xvmprs1@vg!WsMb10V35z;uLS zcd9Ue>eL99`!Lg;Qig946;*9;+1LG#-mSC4N`mwkS->UF{)OG&uOGraFTa}X2I^Md zLR9MPpd-KEp0a>i3_iCCp-z33`_OoHjR?>DKKRjm8X{Rvx$s0Ju~@=?S}94|z811v z7TcClrJTBHq*8UqmG>gBe#QnQn|I}Iteid+u9f+9a!`ZXE9E= zx!ceN9a53w$Sln%pQkdkZoOxsda!YTSij*?wG^CoTg9>uKi{yt_+yf#wYb71g6>-DY@JKsM2W^u`T4Hlad+xd zM{5__K*-OA%SoN_UJGa~@ro2;f~^Zgkh`&?ONYt@-jg1m*v?MNLsN;R%Jpt>>p(2G zuIdJKOsq)?Oa&~ko?$PDnpc)cvJbj#D#;F$3Hpa5C&_iAnABdg73YwaI69KOmy`rj zOXveJ5j%>P3wH#G-8dbq+ckn+KDwrZlfWm&w`Z$4gvVe+CCXt7#tbb7la$H)A@ zHv&{@!mKtWED0n}hTQnwdI{0YVKracanzfpuQM9CbUHQ3UfkgeX1O@<5{&?EBOEOgv%|;HjkmJTA5&_y;h7O$5EOy;tCS{_#z4w%G!akizI&2Axsmqt8htFNth;`3{o`0WY`3rfN;1#Rp>C*MikOQ}fU zXmQ0sdfJtw5VF=*Ckh*rpd*(muPlDZeQOgPo$IU(iYOz)|`+u)@M_t&-rdt znLXJ8NQ;ycSAnHasM6r-Zy#1E>HPRSsvMswHRX44ZtNpVNwl_@0)PJ&n%!~%-P&@) zr(9+?>)OlSu0}koV*kjARxj}F5FyoK<6BMjJP(PO{@q-Lq*c13dvz6Mh-1ROz&Qll z07%>>K>^~)0vbDL*7MgBM`x2zas416zx z)7xf@`{3tllAr2?C+Fk!hO|+Mzqg#gnNiK{2#ktvWiv=b$#^P@BYde`@{j}CzIQ6u zJgV@|C1xGbQ5|7Ui(>rAT*<`r1qp3=lUvjMCseiA2v(GgsaZZ=+q17)qNv5h8U-Wn z0m?a1HxFuSYdZn=v5h4SnM<#{R={UrDG$SKfuJ&qK8O0sXl6~#DylH>c<{7|ri(TA zu6{+c2$s-F`*@eJ#bIK@{5>F4h~;-_aZ!>K2N^f!GfFcz>V(3;>zm736$_j+4c~xl z@)Cr>o|lp z5Abm{KV-t`3$2DHGfsIYj|U+2Y?w zeiDL`?av)s(2Ug9;Uv||MCiUa>R`us;2YV=ig&jdh-VTbub}r%NQ>;b|CQH0Y^6tX z*vj7P?R7t~z4L*T@u7EgM9=rjuj0Aa7%Vketq;V`UlQ8Xmn92qym<_|Tip*aDR;6MrA(I%*1Hn!Zwso!57R&lc63;`?v z0G924^05AjSXf3B{=Ef>K#(X?1s?y~wfFOBBju?hrfOsFrL`0O=Kf^?;y0czmJWRX z{ou_?qXC9)Ox@;iR=yJuK515w5N;^GEzgaqCjEApfg*~a0~!P;?8x(;%uFM@fs!Uz zLu~h#V(Z?!eb6u5ETR`aS`6k%~J1mE{hdV$Z$BmZ8F;H?iIGvFG%lCP5Gh* zV+}0+%{Z#gt0zD>)Kog##QRZW7^`G$Q=1pF1G+pa`C}qrp-4s~M!rowWm>dAWyG43 zqxA<5AMs2vX7hq%p%%A3l5=fG3H8$YX}2*Fn&3kJ;GP6hhMN5!g_xh!TT;~bv-Y}} zcNMt-@F!RJ;Wk7+X^?-(^5x|hkA}hU9TfVi5#CW3JhLMc7MRc|tzT%*>$!yy*5Kk_ zM;h};2&Tn&@Pc)us3z(`&Kk>}K1EYLf_~2X++UMbG?=t^WCrJB!YC@Br?QqWfL8nW9x}0b6=05SF!Rze559td6cQmDa#T( zmTS>6^qgUrPyGxidL({cLzs-Fa0HD{Ori{guB|Rw3ejE#%gD=Cfi2~+;6y-^DsLvk zdwsv5;yhC{W7OD*a%&vuNU9viq6mM; zK*>xzM^O;L1c&bfGk!zpL2Rh(cs@!{ zIQ`^1dNSiQxLBkl;mBt@RSJRkNR-RaYI#U{?GCHGN|z?_$*;NIzb=;m$GvdUKbdc` zKe_FHUnBtc=W=m!_OLc_GB+`CrZaMKI>P!BxM{on6SxTw4PdLs<=-Dt;3O@Qs!hh+;2nl~=1(s-;JnU5 zN4cnLAFsz3u+tpWe6k4Bbk&B5NWv+_c}K~!+R5rnipC)n<>GTbU-er&mMGwW(Ns9x z`b}7o2Aw`b($$Q++CQN`F}=P!`^4Yy8yOH(nQI_%BD-~bsc0o@P|zDuc`L^Ti5OcM zohF7h*C%U`oSsd8_n7s%7}{DK;~_ag^ST|I#x_D7CxglzZA6#`|7Zsq1uZ}(F=6*4 zN&q?si+6`ErI#jw>;S3;6T}=>e?@U>p=Y9$gOYUN6OA&3_XM^t?bRetlo>E>BRCb! z-j-_N#~7(hHk)#kYglsm00;OwMe@-bh;y3Rl}3vylmY&^gt3A~#&kznFJ|hhOid?#Cuyt1Mp24ZP$A_Ve{) zuiy4;@+Ywb8+Y1A9BIu^`=o`78a3)u*45f?`MJm>fG?B+DWdY0G=RclawsaQ;MXIM zCTxY8V>VTby692imX^0lmzT;bV`>h@3o=;fH>iyH{Lum~yChF`VbAT15dt1*X~i6M*q$SK0qa@ZVJMBaBp0z{>{C$ zkPfLd_ah_g0=5?WP#$AvC+qUo?S~XjAEUqYkG9L;_{9k#PoyEk()mYetD+cetpz5r zC})5=t5~~-P+JM7kKVBg(j)Z>F3t36ds$Ylg&*l=;1eId-M-#%t;{3=&ELD#i~xLV zVj{9*>o->2OnXVHhI@r3-K?7IAWfs3R-iikVyHhad>q=Lv3?K%A>p73^<^SbF&?Bu zvTM=Z$v4}%@!KEs;QS^x=ZTHu7-lB(UEw6e?E)8d7Z*lYopnZDKSB~)ksZaRPg(lL zW48bcCMf(gPH39=YSHR4>GveX> z77^&7g|%io>GjAS@9UW2>losTqy-#*sGc&;nsZ@RNvMKtO%3_nl*2K>y-!%p6_8|7 z?H?H78ez=L}oM| z#F4bYy)1uzZFc;EcQPuKI&KdCnJ40GNws+pS*#g7Z&~^ z98*yCG3Qk*mFrqs)HS#G$jv}(95+Hn4@5rlYe}Vg3WD8erstz)3}Vx zs>=7~4q?v*1lsM^Au@`o6GspPMc7|?_!FQU67+x-G{yTOu~cef%2u|lhs>>9&xnU7 z+fj@(Hv&H)ABu4>4I@Lob=+xmmPgKsEP82?Ea?-_h@TDWY~d}sZn}zu>4JFpJRK^E z=V@-hpt+O>osV5(n>T3jS!*@>uyxP4_OWSfBy7W3wMr?v3~YHeHy)%|sj1>ZbS_?A zu2xxrnl3B>V&n}7{0VfgAb~4Nm3-C{7D<Ld{0rs>cXBZ!w90LZ$BbHUb0&}$C_43cCa;d60@at z8co?`ahw12SH=N*xlE6niv{Djst;@CtACZ4ijP}>0i&2I@2>NDMUMLA?=JpIx@@SIMTV1 zg^ugL^%UrpXuE^;@Q$j7iXn51QN6i;YE{RTRwiB+f&|mp2qdz5n&IY#5w5|r$ zE+$U@%x`IW$se?#edo#V!Oqh-u}Yc;2+=pGDU8dw<<}5gUZ&IrZw{5{ZgOCEUa3^Q z{(gQ*D2;o7Gg;MerB9K-eee3lw%Ud%H*`J80~&IwGJlvh-PKE+&$lhDeNurtp3`G2fl>~{HbcwV#=CtjY#hpfyW=lU40X*cm z=2+rR!%}pF0%unRL8BS-VnT0tHoHe!IQ95N0Zgyqd1 z0)#?U(D*hW*Hz1Q?n|h{Mey7UU`g;24q;hzI3VG?Akt+0x-cOQi-e?K?!ZE$rr1=w z;=(w_&hOfhB1-QFhLVWvv`1<@Bj$@mRCO%~zNR==4EP42P31@)Eb&99vfg`QRJ!^E z6duK-v+$1>v?a??+HTQaE7eCydng4DM0jyw)_O4;m4B1x-(e7k<5Xo+2J;b1FPFGa?=F1@4z=aC{7dnO6v%;sd z8MCsLwaN%Q1b?B>5P%o=`C%gg*dh#g13yN*XM0cZdyQSf!9ycaW1JRRJoEkOglTQC zdjfNrYt~B%(Exz6P!EkkoxD<^fgaT#Hh%(Oro;@|N`z)o>&&mQa7~+Zd}L?oi4oLd zgM@Nrxlj&e+YJlrF!&fOYUp9`@d~dZ!W9#GcE2{)E1@!w43EGWw3B&><0KN1!Ud7q zVV?9cr_CCzR-KDG(itaam9DMK!GlTZf-6Wr0qUHRzrriZA~HBfq7>!1dmzlCseFK-!v)^Tb^)y=316{i5* zA6XFHq7?b-ILRH2w$<)vr^})XLNzoL&1Zd8a)4e{$4e^HSy`w#>YK@kE#28{M7gad zeX7QxudZbPZ22md^y#V$qY8O-OnA$wAqSNe4j=Nl_)hO0K))c64-=vpb_WZPhRQR1vhgkR{#^p zZw**f$Pq3cP!ec6xdI9fs0S8>S5A!NdZ6bE_6~N?c3;Rz(O%;!{X*bSXt7#U6WPZd za0r%3q`o4QQ^~2z^AC0RWiH?}=N<3vVj27#qj`5-E8FDHlA2ds*4uj^q{acG=++Z4 zQlVI_ps&Y5x8!bOZB!WOHic_n$N z{MN?a!EL#nYV;vqyf`=7GddKEZZ&#x*avEbky*t}$zMS+Xe@zk+|lmx>MDcNRUfCF z!W&bds@hS3ubOTi3*-|`~``aLYH@WI)zW=wcNvmU%UIm^iT@(_9IJ~bhKfdR+9*pNTt>-nn zklnNWwSBL%%Jw&u`3#mLz8;J@KCL-EJMdMNJ+D=?PB%tdEseHXR)4df^UYGV_cFjm z55`ajTElNs)*5enl^WF_g4Aj~cJ-k2U>$uz=+lKn(RJ%9UokR!A`Ci(N41wqd&iWEw(7qR;>-Uequiy!mD!ad?R^6` zp!zA(H~VU){R~e!gFh29c64RFwtI5+lzDm+!WLNhbln~`Pl2Z%d+we-HOL{j)S|BH zQnuCNq{qTSc)c4RR@r(=e1*t&?0eYm^|D^+D>L%KzV%A->}bEFn;%xtG6HLTmlx@& ztXqDPW;kKCk5u<3Q4&yx>ig<+7eDwC%w=6Em3T&vcXl4JZ{$sMmUJ7rtIXaRlzi1q z=cb%n`)}eQ7=J5YggzgEl!55nDB_#}6;D3JM*`P~id0_3s7FsDF^v?*CQTI=R@`7&v^9gCzHIfs z_bP#GfJBtCn{+zW@sP*`nTuWH+o+!^@=3Xlg`%(|H*Q0}o^ka^)*50+Wg83nfL2q> zy$+m4PAEzrFWXkmzFi%FuHW&e_x2CwUNyi28Djab-1cAE{4VjjB3-j)(@4~0m=lok zM##4S0uz>h$vg05O%<;Bk{r5h_C||)PU`*Ah7c{1F%#^Z^F#}sEop>ylqH05=oQ7r8;EC4V?#BY_N_vU!=P%sCB$^L#XdJCPKISZN zXof>S0iCTR6CFP>=j1XNX)o9`jucx|K-t+M5hU3qbRqXz8#W_MmNM*7(_z^}))kG2 zI-N0}l4NVbU*FtJ;3i@m=D6Ke%u&X~U6amCz1l-?23wo#nQz2$u@Psvr@^YVcNMIu zgq6{Z*!1phVb)BQJ13-6&5{{{Gx!8GvUCc@suf4Lw@ICy@eccwcsvRrYA&j0WCL`} zePF7UIw?fEYOL?r6SoBqU$U&Zla4NmG%0H_^+Z4DtsO{KcG!sMgid8vM3=Y(q_$6v zR5f^=Va!Y86iS`(C#AZ+1`TN+lLlZ@-O!zOGf{I_)|Ve*9JGD0~C^pbc>Gn-?|16Pk4Fn zZ?Zu0{7}_rxC{^eLaREPFL3cZgYdIjBD{4Jbfh8e)~&Oax``NQ`Q6Pyr~tSkz9`^WLWK{z%<$~t`TcqNS6%tf;3^~G;T|( zz;1~d2~rLS+`4AW-zEJm8;*8I_#)E0K3JeBR2gqL&J=7aMS_eB>JsP3t!~T~@~)QX zi0yAAjP-4fzZ;y68v#4-P!>7<7~jd=XbG+l3?u_KXhI!EQsNFetY8d7Xjw68-r2|? z&8<%cZLQ4_+I%6+Dx=iPWGT}}dHixwWKtNtw5kz)mp6W#U^S*f=F5-`o+4ZGH2RYg z9fL^?c6?c5Cg0u?*E$FfG3J`|ARq+?LfbZGhMhoSl&#PFF56X zxq}lkCDTXq0p<}3ea`&T0$N`BX_#uBvd8$H6CT@=-VEQCihtf^=)NAMfG8<(_NN7~ zA40HnCcOAvSj>{SUe9Feglf@RsdRrkr8qB>jqzARz`9WvT6x=M(y%MAZZ9NFSIA-+ zxp=p4@3XQfN#jXc6oMMit?-`{pe(Bfi8Kv{gZ{1jB@1dQg zh;cDf4X1LY+=^-=W_dHw3~jkO$m?*!*wISH&>c4RM4dR6F86Kk``-Xhu5Qn|JiS{R zHox(ASF%z*YhU9+uHj3^(tY?r{Ro^$Lp{YvLX;WD8Y|UA^w0Y`6kmv9lKDz7k=mdO zP|;0YNu9C=EZD!m{_+?B85?6${!~QjVg66J_Ajjf|J4Z4oW0|;&he)a;9aeaXN%XL ze#N!aO+39IR3;-J-s1G=x8f@HtmtSq4fv^^-WVC=3wQ+DwJ`YpdfumJbEoDj_||if z1;hKZ>8VeS?C|!~GyQ?$Zu5GN-!tLOXTNp)_sGb!9s0HmV}|{d(OB>`e4UoARmJ0* z{LYRwTh3INTs7L)WmfMZ_3a$GL$(0}s1Alh#8hH22&2(k@NzzI$=I8q3{nm~PXc~Mjki(kP zgPg!mkXc%J>;tbXgT$t;lEC*tUaqy}Xot0q=ByeJKR>y9j`cO>t{Wlhqo1s1l`a%h zmmUVL;V%aZc-mt1&1KVVASMPCql=Fn)^=N5Ste$OVXv64JWto{0Qd4icklNi)M)3_ zjb~IFiw$sI%NZGWZ4WRNNl9E@N?{{8=!u+x6(P6wzN0CI)K0!8-YaI^wRS8WP&xo9 z!+##%xzXi^xQRK3zbbUg*01YU2#DFx8K&4aEkUi1iW$k5POFBvA&;0AGR`>=O7Wse z<5Hg{KSbwEZGN-N1>w*WaP{e zmbhz<7K7ZhIHmsO%7RsOD#t`?P$^?BlkRCh_k;cvGc1P~h|H!9X$qP24U_2_WkqGd z1~YDSyRXTqwe%GjQ%MG$^@TZvO$%VcnA}5f8-e`fzihL5Ympba zK=%%@R?{=>InuPFXD-5_=?sffvkD0VH5)US%ty++`q?%O2P6Yp+PMke2`Ptp!kfI} z_#%_C)QDL$tIpwPo=DKim7JrVJ!@i>O@3#jy4d@KkW0)jY^Cq!0lo=7^J zU#a@)D2_Uy3!2HhENrPB6Yq)PN_43a8CPwn5;eJKU6@j+^V6KYl@galJ%71>A$e?9 zZPFyR_$f1JX5BRGfEFrWLk_qqmXxr~1md*D=+*QjW))Zo4nWQ?7K%ZgKHn5`_-Q+g zO^0rrafVo#1S{(b^%ys#H`JCO=Vrbgc`pRE-kv)OAW0RVNPF^xB8xsGj%8pb9nLrM z5e`k?+A3FX;8ZjheXz>NNZjVRJXvfiKraMWTz1ol-1Nz=lh-5e!V>Ln zO!7S=I)h}FO4~O}5!_h@P-mPl_$R^UG^rK!TbiN<4F&^fJl(P?PKrVxRSQ7uxFSF3;OCW#q2$!C7A&4tvfV5E zcxYqv2;3WTg#KjQTsjTg?c~wE^mqtnWN2f1V9b+&r#yQD>R$L_`&RuURw3X*bpDsh z0wR-{bpwG%cr%FWpIg#%eOD(K2`LGOGq{+XqDXPj!my>`Eqh^>Y4*8WUgG?2n-S;r z=82J{^L4Xn2g*KLBHumaC_QoG5yYvSadqn>g7ylkfrTWX?`_qN}e|xO|U+eUr zPG}K}KkWm5+KD~X46Ln89RKMA@>)4zvnTGnQrAD|68(rMHZe=m(b`X;8AI1uOPnZ7 zTHok!48TzkVaeWu3oZ8Oe7#=T0x)Hu?-3bK7FIJ%8Wb#=J7xDD9?PS%o#yuYwjcBT z-Q_pJ=k0m_`#gIIyJoqLenzV%YC7a=FYNfuSc8Y8`?KW%iL4j5CuM_=9HtNm-?&tQQ$VS@%36s|6Vx-8!V(|p>vxlPVV>k;%p zUTBctO||u4*Z>~w(1ny;zTHetV&660N1?)k7 zD)fm(t0C{$dG?=8+hU1J7#|5fuDfBpvCejeWwMy=`xCO?yIvJovoazK_+<_(Xgl~n z7nGMd_>8{`OJB@}hzZmepuG+VeHkQb1k&HEfS$Z+mI^DZEKv585yKW=i{Sn04U=?8tB>#h(opOWVsoF=-6+#!QxYxW$BT~r2`BsF6sB#Vd)vTmTtm^ z@LL3EV4U&|t&^)-{!09+>Og*B&x6$&<{Ww4b5?I|3eIXm`n^VxXZOXV4!nrmjc0 zD*3+Qp(0Q4r3{374-Y808qz7CTO`u!Aka*AuP|JdZv8;pNrZ2>U+6tZ(rhpT0wh;Z zU^FQ^lPuO^;cj8>#jfW`s59UfdXm!Ymt2pyr_xq5DQ%B+i9s1*p<$& zpLY4scL0?NF5kCx^-w%>SD)k2CY$Aau zju1G%Iy6!qoTxl`T}?yk(vW3ITlx96@U#b6qaLl7<|?;Nol-hK5(GgE`~mHq^<=*J zXcBiz2LXBgs{@ppHFXIi>8zU20vI04?{UrX1OhyRFn9Ups_`=X05EP11uPW5$ljY> zABPB<*^n)sXkXEe!HDN(l>&+!iL78)pgQ`~Kp7LB!8$u!0LZCP5QC^b-eJbblEm{T zeDLo`z?VaW5*DjV0pdIdPfdCrkh;A1CDAz4CZA0ZNk0_VQNu3M9e{nft85hHeGiHck(aggSpWW zy)d41Mq1)k94=!=j`^qDLJY?n0C(CFSl6N*n-p;p8lRvWHoKAsa24Sl_hF^)VkT1ynKLj3U({TA@tanrHv6;*9!i|DwyF#lb{UrBz;T((qi6cPD2+0sFf9nx=t z>_QTfq-Tii&&l)?Hkp8fG|N*b8*XoBxs4WA$!VE>Y%=7ma0)N#*JE)@*r0wRs3 z&cY^W%)J+(p1-T+XngWfk_o&+o&iyG5}qSMj4J|21{1BLzRo($wf%s~z(FA}5W(qm$Nkb9O8C4_+)xYKzEA;AzhKbH>498-c06fV1Z zWec&KdT;H6;DS-0Z>13#?D0qzeg>|*+P|R8e0Nm&-;;sH-9NwBPI@@RJci*;u+gse z?&qd!i+e6?6cUMlUjSq4<^0@?(9THytR3fQa#)ZSJi+M1V`dVMi&@D7XCXq)LjkFs ztuJ-Q*`a`$=Cc-@0QSb$qkY>^cM+wl;*~mT6k@b+=LR{5-i((5Z(#i?m5RdBhi1Nj zj7OG7%g5sHyaja!FrPlcj15$#o~~s%kg=IH0T|?7_TX7k27DLW^b`>Uz?)lEfSo2_ zgXiA3iwaj(!W=G-P8fv2e}e!~LGm<~Q4mUw%eUx;euM9pqabB(TQ1TUSl?gBarAQH z0_H*oLO)xxo-=L?_yYq8z|_6eT2k7>Wwof1;bmxU77?im((;Th4%dYC=mqE+2=iyA zl>lt5{?EPMVLkai)N+@<1zR-Jw93>pEaGQP)w2N2^dJMhn7?6qp4v=RxGF-R7X=Tz zgXFu)FB~WKg`(Z4-l1p7F8ok;W}WJ9?F(HqmpFwjd3+nx#|2_7YCDj$2GWZuwNG4t zaXLi++jH>~Az&>%Pp+aEOOe{_GyL`<)`d3?7_3Yjb<4rrN=y`ffn9GlX(fY?&>4Th z@6&?7&zdlD86P$W?Ql0AA95_**sr6D*YoKP34-bF{qEw^;B|hZ#A&Ou`)r%b*xK5j z8nz~GB*!_)6lSwLvmBpN zHwQ2e?;*O9rX_9zeZM>SFohlCG`uK}0hwf1H4l$mu4;FFn!sNnH1k7CVU+M2gg;gC z17gx4>6%hEH2ds`^lO1t7$PzIkM$I$82g|IhPY#f?1DHDw-4xC+=C}0>Mx_bars`J zRI#SUJ_S8*K*tKPEK2+4+t4pOo?F8*j91A8WBUf08a}@>=7-U=_ll*nm*L4hPM(_< z3BAe%txXU4jX((t8&>qbHo29{ALbf1L3Uk-Mmq%u=%-={*`nvz@``}nJOKlFk{bYJ z%7@;w>BTLkkC^S2h@5qzr_t;DWBu_mYh*137MDq=K+D8})Y9&9XJRN5@SR!fU3j|# zPh#yB1dO(!x5J!O!9ZOy$V$h<{s?j71Y+nNe}WMG^%f*D(R_ot0oaqi96eWw03Yy^ zwv;E-bgrndgmH_rrWS#$v|XluWq?8AHieRS7)Z$)Z>DJrN#wmvC1WA2r#2#@nM^w>G%$bh9qngBbyT9 zVtM|e*4waC8`uh|=AgJJd((UfP*P6j6x%kzX6DX#;>jN>`{#3 zX*35l;auz??W+r; zlw6E&c|pw5lp)8ZYc=ajo&|I<4cM)~WV%LZfF>uu-a=R8A&FdFjt5dQD2#a%wL7@C^DX5V{d$r43g2%N4tm%&u}S?SLENiw^eQtD53j0)cdoQQcA!zr^vxW3sCquVWojizQxzaszxn1X5Yhly z_A~9>&X$`1XK?m>C|^CwhVqX;73zzp(bHVG2i~=F)^T~ZKDtR6sRZ8Zb$ovw3#9s* zOqp`!i8UG46|0m|BXr{O?RIr;l8j=%#2!ix=f$43-}|svLl;qM6LTpW8f-Y;VhH-! zATe)EEMOC6@~QHS96;H}`ifkwsq1nAX0TGpN{=ec{`mo80%+pRu0WI7iYOz5<{bA$ zYh6GfS&glh8FS;$2=X(Wq?p#!$7l+#L&?{_a6S3ZcHn}Q39aoT%fT{KFiJSiJ4J$O zHlfuXoHkuU2-Z7WY#jPa zrr92#<`+XuyJPKmjuOQur=dZjRq*u^ftF?`(USsjuF{Buq6-W`mb=Dl+Z$ZhUei~3 zK}RSUqqO=qr?y+wZOyV^WH83pSL0K65m!)>Qq5fm87jhM5Vw}#<348g8`c#)L$!6hvd*E@6v z7PRE4VHVxVQHY{+%pSwVWLxwSH|{Mkj!o?K<(18@!6a^qK)7*q{Q&3eh~fU+x`SfD zJ{A}-a45^Ly5Gb@sh3*CF9Brb6zKPCc6lNT)aebnNBv^V7fm&FX+Nf!s=s=e> zvhX%b(zW>jB|}M;lhRgWQ5e+tcFtsUpC-|gj?65~%|k+SIF(H}E`Iku^K5f=RQ5PK zGbRINcX4{GxWVI=D$+{RN#b)tvZk}3Cu@t7ABW!}1y#i~FB55PIfW;uOtCv#$Ayhr zOi$!uF|A4JcHxL0nOXSV=h?@PP-+D%-0r}iMeNYuD1(c@IaAV@x`<@_MzPS?&g}Js zN0%EU)fqmn=SLLLC`!uyS2W19vFVl7l#DV7)Xfk7N*G6$Pup5$v*}Hod zQqm67;EoQ_>iFfe#_g8Rg+YC&I*qe?f0c*d#{2te;rSla;i2$7YBdzqWxirf-mtpckg;%~v&k^09Bvk1^6&F2qXO&H4*K%WI>Dy=K8&QTPMaC)~IFR7CDZzsK*V{8N8P5eK{Q6-og*sviKt}>;CLC!8B zRt+QQID0cc5rwzHxZ&-on=3NLO`(p9zfj8ag%jWJ_jN~f#cZ>ilqWrd%92JjedPB= zcP}XNsk35p;VHVpx-H^)Yj9~hG@VF!-C+p^9VfiF#4BxkqXw3AkGpj1N!42);`xVG z6!I4PG~I?>^aBc&yRSCk?19lm1qYW#oFUNp_+v|@V!Y;Bc~sbIDVOC2J^~kyYoi8{ z?aBdu1*KUF+c|_+-{#>kqOQ@P%Nn)3FS1fRZAi^2!Li0o<-Tg>0Enqw4bsZ}b1ED) zM=6vx%sn2QTZfIR2+Z{^Tth*V+){3on2b*ctV)zf1VB!1GxdS%m9dQ^2JPa;#I}o3EMZKj_;y0QeYjp_V!0G%E%$YG z<#jJIuq>wPs@$cD*G(bgOpT_6EU5hsn2b$nzjKe zy)z)}*|Hjxd0S<|(ycblx7Og5#vDAbgMB-<@3KE@i%pI5CzH|%D_=x(&*j|SSD2?|ogFFzdXIqguNm-uiD6NAL6)kaw9t8hhVG*t> z1in}5+hL=V>$B~WSj3GBAG93ORaHbZY+Jk}T*7QuzTH0;fiF3(^3Wj5M=vUtg*ji@ zyw7t8Sr&KU<+L{n!M6YKD$+{XeJ`m`Z@^KB)%4wDnG}=BSp|u0Q>@_LYU@p!s$82$ zx3+q86(-7E%Ss?U0z=8bDra|k-FN5U?9%kchgaSI;QB+rW+M&lW6TG%b4Y_7!0^^XuK{DzxX8(17vfufl@dmxIqeyArAxL z>`-mC_@Ap&WAyWWw2#12e;&3TvX6`UN=BI!P0gF*dqLL8p5DN~rHuR=$_^dQKVM_) z6WytfyQ2c9fnaK?0BZ~T#r;+uu(V8TVfmTLSj!i4pN?fJJiX$q~i%acU5qM9G;tRQqlBX6u zu~Zx%$OWxiSHzz!i5^xYCSD~n-&4LfvoGVx^-MOFsF~{kWTu8a zSV>sv6$H1#;_Rv}hcO_f*Ho@Tbwm+$(M41&(Lm=PtHzbnX4az%Xi*C^R?X4wcX5Dq z8?sy?Vw}C0`YJR04oUs=9L@w#+)^D#$7K&)YI^yoJW)4^@*M%$gEbe1Bu8 zNk2KV1Dg;sy6%qSZ@C!KN;0pQEnjSr{2y0j7u%Iota~r96RP~vN)APq-E;6_v2l{j zv6(ki^zED!%75 zKl=fAm)ca8p7|mk?I&~be4%YO;JRq6sPbmsXh_JcDjQ!<&*Og-g+D3UX{I`9yEgWO$u%DAZ!a;Ewe^Z(T+4&6VA8dr&TYHpR&}#mw^2;^(Jz+BEwCyjJeH?- zj6G|%kR^9P`_UN`w|Bc!_4oBBQ#vMPY;I@Q#X5T^x6~XNrdn@n7I$jAk)>s4UH5g- zy`oI`jyx|7s0!&%YormYtUaN1l*F(tW4RIb4sr{}B+VXDuXz+VvVB(Y>cE zY^)8op10B+G?QKOen-5G?dr~#JlRFlEm1TH)#TExXN2b#I|5!#XKou|4tab{Pubz>#82*+f^g z8@VmJe=0T`AVIdejg`J5zltN83@Dp*jcHxB-;A4@_5k);bPJC13{RNSnCbD7Kg3PW zuG{l8oyMNmTkW;_lNW8XxAmOjsJ&ONlda^WAG`1%SYR(>xxY&4e!WBVIT9f@--R;L ziDzapco2qyN~)ObCWc1WO=Q%O645iOYo>FErLt3%%0j2%S>M5*OS}bG4#T}MblpB- zm?D6p_ZA8wbLqtxC?dQgC}>E_|*VRID|IXMY

^f3ZwUg5!rku)R8l0WAw0j>AAVM+Ar=0rdbUIpD&c2eE zlqHZb+{89#k%O%b!wDhMUu7-VEAgW zFR+9AX6RN-)@Q(EILm+bT0!ng4>j=N`kfJh8sZk-lm_XGoTSL^*J}%r99%V6#5L)F zx@5HJ$84p-vZ;mfBZ3%`fgpg2>)f4i?E?5W^U~FAO1xr zZ*8CqUAyQ2BdHdn&m<&h`@%u#j}tiWYWJ-Yz&FBq6iGv1wFK#-sN)MHeB=EHI#_w7 z(!VIadWAduZ$)6@r4}zt-Y%LdI-P~1I)_vL#b-)X&$+Q@RC^5zbPK46{=;5kS~bN3 z$JkTVLa$g-rOW$OkbOxGk-*J)Iul#Y7IMPnuJVrTK^llNF;xVbO#rmRssV~D>7_m0 zd8+L!i@a&c+bRo6ZT>@BZec$E(UwwkiQmi!m484EovN@P3YaPX2ALw9Vhs5>R% ze+&jp)Kyhf<^N(ZZgtX<`d3!4r~R^9Ss(inN;=TqaBQd$`BR~2qkWtot)lOj>szTP z<5?BWqn*R6XgonkcO#s1CcEJdVxp;%z3oT5mX^w<>O=K0dW0Tq;Tvvqv3_4$RxgL| zk7#>5pAU!cf2Y>&*Wy6!{5W$oPr@;waHIxi&jGt&KmR6+1@^#>1&q~Dtr?RqF2@Lx zp=JYhMu-*x%yPxnVtF!sp}FvPz5Mh}{@3j4i%F z5Bqt|A|TOdtQq#$5b2VMN6R>b34=Gw#bC7daa+8D`*HGs>Vx6U9XhESJL{o!pTU27 zs>K2!3qpQ91o!&|0E;BiL?=K-1s}Kw0pDFuf4UQ(&zt*x=hCap(zi#6o+17r2rpUQ zj*~ui!K}HQiE{^3usb&rLto zPjG}6e66^_@HM;U$HT{FD(SF*rpe;_e)>5(1-xJy9PWOsI>kJOpw)1fGAat;mC|58 z^(7}m&M?;#U*~9)nRk(yzZxp|#f_!)>Z<9duxvI=*bY2&*jh40bmBSPcGsV;p3aoF zf**~H+swTKA9-zTv-48-vAN64oS4VYdY2c4{wfk8QB+#}#L8k=yL5pV2is3WACRRM z60JH|%I_5?^j*Wd@uqV|9%&y`vBY9I*}D_$f}IJ{dCNm7sY|8^UWhYh&zTo8U2Zyf z;9V#1wF3#zIqk=Ym5ZRpC1SYxLMC&$DWzl<7Hl$@CW?ooK2{!(pXfN9v;$qncupRk zNZWiz(}s_&1)Jv!68J@;js5ZQc24PY$qj|VkIqrP`p$J3EYUF`OJb@u4V=sJBoKZKzEnBy5jAMs!v1;De4rj(;PtT;SB=C&M#kR8TlaUk6; zn$sGO@yKRn;AL#kyEl@cOdoyP;xL;SdU7`Bv0jSo9H2$XqY3Nn7q2O=My|@sV!6i? z?x9r-qE-YZ2*Q4^nDqxAT84EjIrILJE=alr?=F&k6CBL+-XZ1}wt+_*V0HTLz;t(c z)PiD0<|u4vTw#wiI`3q&3hH9nh!j=uD?P~`?|}uyJ7ktKl8qaS(rs2U`k-ydLBE-H zAUN*c8EwrruB!CO0`V^HU^a!u9>*f|*wbwN!tryjeoqaIkaj0%8*R)GJH2k2)V?B4 zgH+~temXQ}Dze>Ip48Refbj*0lOWO^m?S=~DZN~kcVV408020@_tLQ82L(osXtKD7 zK)pBNx3OkT4%R0}nJvG$DGC|4ridaGaGB(K)hH5pVd|X=Uz$a)e!@jiIPe-D6uSeI zBK!jM4YNxBqm0{_jLSu%oPJzfH4vQv2*a^H{rDQ{kuqjAUnJ5dv>6a3qCd0*BGuA1 zAzy~~fGc22Y*=)@<__uVE&2|_06{W>&YG+khEeyzYgUyb*Y2dXoCgVF8()pYNQq{~ zP-{tj6Pal~6RcRddu{P5U{I)1vbtDl)nR_a3}!^F%GgYBNaV}}t3+gIfEteo5?vhF zq1<*1;uL_dzj|gJ7@Kchecm&w4M{!U{2ZOo|6s3iuI|N%4+T(f=?(|*6pn(&RD4i? z8y8j*C|P+dEetUfO+irRc`>%33&^2*BpVRYz|#Mh5&p+iFW(7z3kji8psjw=q+?~V zwLGy}V4Mj*9(XxC1Ut|F&wDWhB9zH6*Ulof4X_OAFtLlaoskloIbfbS3)m4x?b%Wd ziJePpVs2sze8)JG(J&d?Fy4@rj`7A(25llZT;m*)e~xaRskbTkx(jo75WLM?!7#lg zx1CJ(X_{t66HIssngTW7oZ#dJoz;n=(ZnL%Gz+0bS?O%p_0$=Xod5$>fYeG54u07o zkM#Tjdb%yUxaZTuW}`!Bm=?>YyU7HH)$iaysNV>WadwX{LpHjIVq}Psp|$JelTu(| zK3LCusGR>?eUR<7Fi@M?o3Fw#83ZCz(8vsP%zd3rocr|O1;`s)5bALy4}B{lPxTG{ z)XBO+^O}i+tE^Krnl-4jjZ)1iO6SNWUrb)f*oJzj4QcWddzup z<7>4EQth0ZFGM?7Dx3F5%F-hVZsC3656Ph5M6ial2-UJU4k{(}FA)@F@5FFO**^iM z!nSEp$b&D1{v!HvV7$ve|%+4 z<2-JZ{x~N5zG%9B?xN<(ugc1}Qe?|oGUhy(OhDrlt&39#xIn~+`B`Hc%DGw7>(uQF zKagt=x^27&Qqo2%&$5q_JxI!0WMGt~w{nuOD@s1U#;4G)@Hy|>tI3_`?%bry_(Ur4 zmC!NK%hJ~vD^$ggbn30U$vJEHxx(n(9$cf*?=adK#36}y1N;aJBgtI1ML0YaHcR1nQVg&k)Zu`r4^{b5bV98-Ol+*nsxl5Wm6V5t=#(By{eLLwaAeMv7 z+$V&W+>U|e{&~7TmdDqB@bh!9#pV|F34X`BUx&9A%XlH^m+CW~a{&Y%cD?!9f}O#k zggtxA9HIX6i;g!Ae@*}N3lQUcCaYQlS%Y7)aq=F5UAFYb_n)v-1U~q+@$b#EFa7@+ zmj2(S9^HT2)RT}CaW^ut|Ic28nuW8ukiq{>P1-g}SR6<{vvu=uUXaQM7%;?LQuVLc zLX_KprS(k}Jyleaxd}ET59Y4KNA_-?dv(u@b}#7M{yx_@wIFlm%Qa_|E7ll<+#r0euA~o%C*ID3$-~6o4=uq z1hZfh*kK?N2^I$t=hw%43bLF3NfH=x(4qTITXA)PovAx;R%sYK(Gd9LZV#b57-LTK z=+(Q2Wi63ay08Hr2!oqPJ>pdjY_C*E3k7^%#jx%vEd(x!gL} z%T)Fu#12~B_Ww+3=&aALv>fv&ZDt$+bFR&sm0s>Xu=OqF> zB!=__=YEm_*ikP-LjZB-@oj+v`f zUFgBTeH^g!FI99KMxm6FX8uHhSKJY+LA9?4f0B)g_MnDZT|k4o392#H2k|&hzp-@U zBu~4xJXc+~zc5390)HSTFpK8lQL{57s^|7Hy;16$@(!H<8zFV&06?QL-T|xFiOjzW z<1~j^lHuYStA;7Cn+rR;Vs%)-S(d@M0^FqSk#J80V1hlPD6=sC0VdR%VtaB>OC&@X z1$zCQJp?I25|;6&Dvup4!4IKu9rQPH!I%Y%41No@zr7Tx;n(i}$8EzXno4WVH^CfDQyE z;!xXs{8HHXtIAmJ-T|KhLUAe)jEA^lXGeNU%&H(;IzbjweeK`8u)4wC@LdyCdjXJk zY^9I8jW9fNgQ#4S2Jl4;bO2<%hquj6i~G(_`RA3Mr+Atecl=rlc0vYF=Cz>oxVjeN zwMt~26vK`lL=aMxz?{>L()J;!vtho_=;%g{iz;Yzb5W`BH2v(?YKiTfn2pDS9i%@^ z5lK-;588wiqz@}i+eJRBm#zyARcnGVA`@Ygm*Usc9>2K{5wcCoD5UseUJ+NztI?C) zkx8Z;p$CVV@dmdkql8&pRl%4`^Zqj*JDCV@K8#nU)`{@Iy8MxGKBXb_vVrb==ivK> z6|{eoM?7+V&00);Jgk_(Nz=jov%Ajgy`-XDRs|8E%~M68}YA= zn3*b$elFM<6EH~i$|7us3E07Tl%R1JxOC=`OrQSEB9K;kJ!Dtk!8HRLaahDs6u%*T zvm7rWxRCi|86-zI`fY9w4G}<^-dJ6LxW;1&w=>QkWD z*g`_Rl%F1KiO($L4din^c*v{kaXdIjEP^TrFGC1HlvxnB>iLvl#Q!Mt(v8}xR@AGD^J5feZv@N;CT`%Yf ze?miome;`e`&u?&V3BxAc_9CNGvMp<3f|nN#aF)aYT5N!-s{)?d1`O>YbPG>i|6Af zx1}Q}9|fsv?p?t4XLTttAM69;N_Rt>x7(x^b8rG&KmLQ~>g84ox&b-660s&erHu=1 zXLqH{wazJ|GjDcIORaC#_(UbWj45(4WBuP})O=4?&soN}EHvKnu8PFWBuj#5A~UDv zFrPQhAavf|l^}&IT7(^Rtz)nE53*9Q7R)iqx8SFtp=?H4C_2;hh4 z0k*W?ptJVeXeVJb_yMRmipFCr5KMNk--2|B(MlZ>IbP}A-X8v3AYRvFreeOq)I^1MsW5!E5L_nA^*$&#cUv5azzbzFQb3F^!tQy4>TDkt5%i=Vr#!NZ@| zW~bbU;1HH_FiyS;pKI*7k=n5kx+Vm7xnssFOD2IU#2FP0w{GD0OiK+`@dgIitldd> z9=@bzC}trKmvdGEg>zZLdNc9Gpa+7UW&luK$?zPNkM9{klWXQ{$!otGK(R&@z)R|z z%LTXyX4@v9$zW5O^VxR0#ycnE7)qcV5khs6S>YK*Mtwz4%W1H`)vo%~%J1zha;a z|K=4Uj!iYyM`n>RlU~+G+7@q)%H#-VR`>ikg1j@or@v@VmyToI4mO`K;Hf&8WbWOe zyOICA+XQB;XWr~Vk;8_e3}Mg9pGmGTstPq3np2)A%U70GoSsys2x1v9SO&?c1*Fbb zqic?n;B2b`nv$;qRgI{-81pw9+AB$$plDbAaN-AKVe%@eTMnSxa|7sTXzRH1w1t}J z)*{7iX;a+RV&^?+mYK=*bR>3zy58+ZdfZKeO$IMHM!jTsLSN;&^`!SiSBio|r^+4# zY%H^GjgkH(5BX>$yDz@#k78|+dX`B7nc#JHY=DP z>AK+3EEUGgpA=>m?qzWIsfl&vCsw2@1}UXQsR-4LiV2Qe3_)W_+X(3!z8o>(r#WS7 zcF8(2))~hyN4d9!Y+QUr!EMiGDY9joBPsi|X-dkC)Rb>QTxJ7zUd1;(ahXRVpo!}a zr?u1&f+C~zVi?@fXC;`-q&M=e3^RM@0+kXCnB@J1;WO*|{XG_ko^48d710h}JbTdv`Ce=#Z;sM8N9n&O z>4%rG6sAAdaqfx>g?=2>Z;t8?Bw;9MqMwP;#1i6@j4)Y-!V!e%7>28-3pEc~M)WPE zoe>xI#0yn3A6t351wA`EJ!)BdFRoXgcl&c&9mDe9;bG4~lNc56Kmspg_?_PPW$dKq zzZbsipE{% zaK;>MPB_=-a3h0>vnd3@`Bj%+eqL{Z_N53>CQ_}Y!J+%|Xh z>Ey=ib>huUoRq;%0%{ZTI*rqWDs07;?W5&2e?uhchW#e$76X zE>&>xICr4C?@-y5i!NZ%9cnAGDHkkN7^IGOIq{T1(>~rFVrEotu?ldCCPA&=IS^l6riXJT8QfC1$&f2YjYB)6VJQd4yKF{%Lqig}`LN zt}sPR5t2+1`ZKPd1y}4mEvBL>Nn4cixY_8>k+1ncStZ@39S1uGUH zzG^vFLfp4D7Q}D0&H@2*~dr77J!^pI?^uIMR{420DH-+wq_Y z2)b(dtBX;Oy7zC5M{XPbIdMoe201z**R?OMr~S>RC` zj`hB)_d~Er`mfV~{{6QkBhdk;%OU+_Z_5S8`vm5uBo>&g^K>-t><1C)p;Ws1|Wt1T+qR3_FAB z8AP4TMIag3PWWE)CGyR_!u$zV)HM6ml`CY49+BUM8Slg=XhRBtikj_^smM(amSAUU z@@N3eRU-L95?)y;HT{Ay>76)2Deur%s(Dxo=GvkC2IIbdo7l-L;kPYzr&*$t;xeAb zY2efhEd1rQpn2$N{3rCaN?WnzI1O%qKXA4N02UTVdW*0KsL1(lusv26I->(lC+l%a z3;k+GfbBu~Zo``xd2DL(qAlKJc?DJv$4>lXU}d<}d!YDQDc+(tRu!sSdQs17m%7Ou z%nH5e{QeFw+1XI&zm0-wR1fX@#sM-aX%Ns@aP2j;r4OYLHYz z1@SS&eqb;iJrSVoT)01wf0o1-Q6PVoi+N^}(3pon~EZ=%07o9OPp6%y{hu zNB|NjzVE(WkO)!IcN-rz zF7}r=+{??}^6Sf0*r)ODnVa2iFW2@b8U_pqjy(g>-sS4S+SfRRRH@ChrrZ6WdMy0c zr|aXdbZx(nw+5GIt%C@#BbW5D0At#GI$6N5Fw#FrSsVa^xQ9@nveC$+6U=j}4&rgp z5MZ!o@b*}wCPsWP7`3U`nO^kb`F95$Hke6s+El`idnD{Sj6~qLfnr5Q0TmZ!*{2HqLYv7@%n0!;Wt=CF zKbA~6jP9c7%ZL1QgB~6&nAPoKrpC2gEK~`vD;8&!K0t^2ctiq&Tj7de6FS2b_aytH zM(0J#fJ#D1U|sS;Hc%d2#+=3j2#b#V#ufz1x2q66MGYcyLIn1>bOaso0Bi9jYb@EN z`dm}0QO&-mHZ*TfBdb!@J_{Wm>zrX4Wj|ejR%6=HU*+4I1YzN*P9meq{Qfl-RAea- zcW8p-!`3B7WJu;kX_=c#>a1v_P!X)*6 z?9H%MXK8aAw6>1Mdk(0)Kk2L$F&Ja6DFCDO6g%VXEjD|8)1(*Tthx;DZXFjhjSg0p zxObq_&`zhhi6kt4pwFXUXl{y;&5tntOn2lC@E_Ez{wCMV^7wEEo(`lRVwhW$GK8 zhY!P-fEx+j4N)h|-51cjoeO{19<6SqlE|`|wQxZ^(p6)`%%XGGI9p^Najyrbjy+L? zxl8vksiw*x<-2!kXfFE-{Q&I8b38t42}%y?O&C65XgB)S6!ip~OcubDFJ@X@gr&?| zsW<1-hFIU8I15RbwNPnJBcIK#AWX?|MXFW*)X-rd*l4s@%q?>|8hno-KpDp7ANFp>#c+e?=xot&D4 z5vXmx`zF<@51APJZq=Sx0klb>$@NsrA!$^xHs^Wr@SMd)lw6a}ONKIH{AD!S=qaun zP*q*_O22Gi?WFWCc1Ne^yJ7$bz}kFLj|6-_c~>M>x2f?`x>a*crg$DPju>#)kIJTqb{f8LUz133XqQ%MEzHG8h~RO87Q^!CUUvyRTuPRy1EEKrjkzFN|!sD ze8f(vdfVXq5q$G}qx?}^Ymu5O(d}|RumcvbvAwZ}ql>w@5lru(fO@h<%d5nGCYXw1 z2|P=QQOb2$Tsm20D~WXp;KP7P*%dwibjMVeXF+r~hf2u$Ah73{3b4mipup8w%L)0E z_;Z7_47y8#ov5U>_A-x>aab4$0g)Nc57$gAvo&%36O)k_@8XBkdsw&S)4T6ijYK156l^K4Qkj2B9? zQeIz$mkuc6n+G7R4(}%rjDi4|DW?1egy7uLg(8<`I>SSZ*X2J-*Wp?N%U(P&JL!I! z3doP*aovbWvd|CA)v{8Mf{X``1OZsg4MDoUbRbL|R=YGYi}ttmpC~4vz2a5n*mcVc;{l0SkCV0XLLnJ@VQ-sVvy&{9>1i^O64!9y0VAe?-LKrJD{=3R zKTPD(tKc}&RM$kL**MF7BWjF<4vDVUJ-f&4t6=HIl^0b{Mc4gr`&i0h(IR|#x>%L3 z(8y}+?&Q>~a_-ElGG$X};xws* z^&}%oR%J9Ytf=$8mD8PYJ$n zg+bFBzyDyA2SSuBoqxj}8Vdivd)t4%S1oN}Ya;P){`)^e?*FrN^6$n*$cFSgt5-06 ziqthp?@N;94y&fiN2$FrYG$w4K}S0PA+H)uN@S4QHTCPelW3YAaA0!O;`CRw5t>P{ zsw}V1HiF~lvf5$uhp&VysX!6m9vQrj;hP67-dP`Va7x} zNqpT);uo35rcLg zozQ%}%9DB+(MJ^c&8(l9M7(9%7w;jg(v4DRMo`B#hUhdQ_FMIt`LlXP5Kp{J&S=Cr zg-YX}Vd2h~`i_8SrbWL+3b(P-lwpODRErGp<_Uu%B`5#}rGjnT_k_#QQE89&<>qa% zVgG;(iAmu(85g?rBibU)Tz!XTQ(=jNj<@VVivZucbbO zwc`CKHqfXD7>Nzoqs2H=35E_Q>th4_WK1|TMVVg&GpiFeQOvaBRSrV6a=t(Aj#=9+ zuD~GTV)7;YmW-XH@c7h{f}H+iP!~d3qp$Wn3>=1J?|;BGa(a~V+?8ixWLQAg0_K75 zFf5RnK|q&pjxSJdySP;`bFEw}7XQiTZg8FMZRlH zIY4hyv<4I4Fr9+6?H^??XaIsxM`Eb+Ku-b z-&W_ZA(bw)8(iIu%+XtQ3oo^UR}3`?91()isW}-pJHNCLGl87)fE@^|03R`@WpvJk z)q2RWXUM~upshKodJ+bs7!Mq-s;W)0@$V^g3{$IX>)w~1?qZu@1JLN-55u9)@znuPS*2 zM0_@(&+s(qrK@kq2;%~l9vPW#s+sfEhu{hQG(N>X&B;t;=E^BFYwE~~2ZujfGaH#F z0EFK-KrVOi^jNe`Y)V>%te73bgxFQTo&otr4dts-MSn&j{rr?jW)78Z3>cOgh$dm? z0`fodHJEgeNB_$Z^4Ed){l0$Au-0PTU>LcBOoxLfn1!SLb)_{Q)SnnZg7n$k-C9Uy%k zHa!Lg&QAuF`M~UuF(eIGNIFYj3s0C88)&kIEUqe+Uj_^bJTB!00jV!C0_78Uacnp zp5&MkMt?9W>tncIikl%t?C}|m32NDI){2I;JSUi#MzcYX5VKOXd@&s`HyPW_xZkpk zR1xp{zy%ep)OgNZqR4(v%h>QN3-B-$8&y5#7;pPy#&H(W!vtE>P*kMp-x$bgnmXx<-C zzu1moUv@O`w;rmA9vz4nx01tyaMt|BEQ#qtQ{xC}f%brvSd`aNBFaUS5NcxVa5eO4 z5dkm&v(U8ZG;_kIyQ*lkcL;a2E($*b`}#O>G=VtJ2dEo|2ukIHiDp(@HVf)YY@#s5 z2I3H}4l^}2Tb_Wz(5U>$!{CDjqm%aD6U?ULc;^23u5IY?_LG6{_FJAxk+{OJ$m#~% zHjeZ^Ma>99+@cVsjXjgS(94gdKhuVw7%k=xYtQ@SWW!LLyc=BJeXl>Cuf~3Eclq63 z>brczpWtGjVPalbENr8EW81cETOHfB(=j@>*|BXW9ox2(e{9>Dd^2aJrsm9rN?IEsY8_>YRB#7p60+dVHE1-;dIn*cJC8iE=?VkRmjRxpAP@v} zw461N;vXrd9x(*rj#A&-T?7Ow33;B;8j7YTHVZD)Pgg~ZfZ`h zTW{r#9Q)}C&eNy!?X!$_V{aD>=?3QOxb&s8KMJLZny|B1!hH+2*0i@HOAB)_2K(5n z?N6$Ud4|s*!x1e z(QAwiG@c*8Ydu~y5q@!>2+x6d@IQ>^iRm;{e8Rrb@y*lI9ow!T1>y;EPr1-*Aw47r zh_EnG;^?+}eJc2Q6RCGydZiodqwN%BCLCX>!xEz9%C@*lFJXQ-uB&Y-pdln!U1*I1 zaG?x1(~G+?i7evC;!r2(oiA9)n9AJpoq&L+M2@tOZ=$iu%NYNlzhh+uAA`ojo1bDV|T*vJ2OO>NI#Dox;3}(xo96%nBp4G0m9> zTC1_!;CA874m%hOfV&BID<|t!sXI4D3VOIS9(*9%MFq#aJXBYSZ!@ib&P9LJiwKw% zo~hZ_B$%oF@mj|B_3E`K&EoPu-<6$tWe;->Il=gEFZx?@=bZE=f(7#+XZ+>A+%uCn zK+|8;s}DR?|Mfu8dJDgHAT9e=e3b{;*k{^so|Uz_kjDFEsZXZ`Uf8kQjAC5aC#v{~ zUFhPW>~rxE9hGjnhfLbIuU*wRa0XM(H~O8i+gqBAz0*GH`(Mwuy7!3}Jq%#yN{%Sc zliVF2r{k16O@Caf6(%=~wqexyS;2$({Z zlHFEiDs8;b`5ZGNFsE$ccXBQP)N*>hBUFP$c zu_NS!>}e+TdlGLH?o?YITcV7kCwdBG_BAVNs0ytd{bY0tPR^r{_mOM6q>J?K2fDJ) z2yApx9(f7sz)pJzap=N$y3p}@a9Pnhg%<>Z)8+tDB3F?`iRoQAts zJ9_zl_P_ppCSkNW>*(1KjyfYv?+U!IsaC;W1exB15wM_{uoUD=)B}NBF`12JVuHsr z;3n%r%7Nrig81>^p?<6hfqMZhc^WErCP3KyGW z0NtWE{4}IugCv51U>PN-p_v7kLi&PM$Z*`Io-k-Rci%<2JsaSUN{P2L5Sk-$cLHZK zLb>GBTEy2cN(2`K_O{n=^@;4g-q_JjCGS0GL%MVR<4zL%=0ztA=O5O^+Cw!r7-8N; z|2t)(04-RK&s5&qNFU(h2Z@q0Q8D2T2g4zY`H9i9)AHEZGnD&*_H9zQWUYJX*Clwb z^U=JhjR0ftX<}df_C(0}hRg`mz`DH!{P2X3*WwP;)dgzVcny>>SSPq| zg*scZ4aUaVh6xl8=7$Ch6Gl}aCT$LSr7B?prvzHpfa4qSr?z&C^ZKd#`xbO}a%B8} zMHe)5>~Xl!e2+DWzjyk3NAQtgrJKgKX3r}G7k*Bx-7 z3j-B$1-ucg<#W*0?}j-C;LCtrw7%y~C16EU>c7IneAo#p7lTFGjE317rA3>xszfSv zLoyMvLJ9NMy0~i=l+BA7#NVJYCc?3J69Lg&Enq)O5%_alQNyBFA`&A>jqeoyx>eQi z=+UlBH**!jupDXg7qd5QQ#Z8-LEHXut$7EdY9Ik)Ahq(h$wLYkPtgR5k8;+sZd3{( ztd+FJ(X*@`-cYK*JU6&+48`ZXd#pt!rBCk*h^?}3R*!?u*{4Dgs{}voH~&Ia`p}3p zwlAUYE1BAm05PoPL_Xl;e%V7DPi;B)6{GC-DJl!_t4O*GK?g$4YvU7LQNXE4$Lq29 z{qJt=6e1Y^Zqs2yQ?+GtR5+@jq?ozKBsou6!JUsz&wMbYBaY;9ewH{ASoLOxhKPGA zOOjA=iQc6s;Zt%Cm4N{vOOv@;JGEp_hGPzr9d)b@#d-ZvN^vQM%XKPl_FYes7dEC> zkI4r*myu959^dx5ND^N?Np%Vz&;uDG`~@cn27Qf-F2nYr;;K!@XnOSpR_m%Gzqr^=3`&kwtlCVXkg+A-mlLyBTGCz_n5=YMkK=Wi@Go6+U;^B@kHA`5p$wU4EsQhi zru0q?)s32ql(+T_g_QLT5C0Xht04Y!BcuK6*n$aG*-z{ek-08>3r}H-aDX`{^^=Z;GKZ{mELfN8eWx7oOnmN4wKigm4DVHY&s3Y06=fvxg z3JO}4!@OR~Z7!BNcO8BOtjVJ*M-S^+`k4#)Q&xXC{N}z6@L!6x7xhH|bHzt;)|k*< z7}G~>Dc+-|GCwfND(u2n_~(Kl2h-h4rOW+eXD)tjZXd4)7f)qg-jTSty3yD1p;dPn z4ZtX&2mf75kr#WNO6Q-xrtyU$A{h%es2T(qb_m9FkG1q0uxs98Xx9wx>yO8}R$xw= zZ{YvTC?+>dU-6&r$YI3)c}D%OHevq%n;G>#*q;CKDv17%+4bN4dg0kPZ*cs40`Tz% zWiJX6J8mEDl;3DtId8-Dd@1vp`V{*CVxuCW$TY%Qx0{bW+YCSg;%C)489WOVXk&VG zPhFZw#|C=;GB*u=>l~C`b=Ww)e_cMRC2FFNydGOEI5MzXZF0p2-k6?W)W; zYI9=LhZ=DSIA@)@SSu*lA@gx<@>*cUcCN%y2AekHwyS^cd{jz@0P0TZeGH3~18`pu zZp*$E8`I+K;jmqIbCF@Gg{#n?Hi8A0t4eM}kHV6#7SgneYW^Z4+v}`=h7h1eE$v%r#*#5_f{v|khfVUR(#T1 z0rc^+d2t?g0Q+B*C``5HV>e?aPNSNZ2}n@P`_IMyMwtwQGR!vQ-+I7$)fuUi*eiot z5_m>rTPOjPFTb8Z1rQd>{EFjLx0}vJyFfwwUi|Sq3lx;VIAU#_x6N`lf(GnctAMaz zh1i;y((3GEC95T9D1RLY!k~Tk9t5~I)4nDC#Lo+scM={Yh(AAj9h2DbkVq$afQU?$JKJgu)>?Tq&LrXFusf>ZV1Nu^d6=3kxN-#c&vw!c`$gHOpZFG}! z#^i2uTosgR=K}$sdZ|hq=3#Bm{@TGM7r^g>^Lbk>?BfT-xg=N;h3&~`2QnT|3e*(o z$AmyU1J9BADMnM4VW8C6?0i5ygA$A)9kKH+_Pq{9S%Uf7FbsIaXJYjfvoYq=mTK)K zfX8LY(K@l<%LZ+}Z%_3WL3zsrQQUVX@v6PC%O=@0~>j>#!F`4UM^_z`taJ#kI!WGWPx1l4xSnV+Gbxas3nXBgKSnSl^ zJUiuy9>vfaDnr~+zNCY=P!N1oH}Mu1IL)ijXcwWt9v}*&&+|1W)v>Af( z-1d_Yi;b5+kO3(DCznTUgC>vq<>LcVCYT>hDuio4A!jrF`B4gyUOKz+Dlz_UfgnO4 zOT2WDeL;MfV&7`(Rz`|h#gW`yM-{WqNJ>fuL57>AxT&QAzhG$fZ>S+{La_u@+ExU2 zu*1>`Z<^l;obw(#5C@dM82b-kCt7;s9J%+stTUy+`1x-ewhg!Hk~-oAr8o11rrPJ$ z00vOb;+V{D`*zU=$xE7W08xP^7){lIE%1HT7ju+Yqi4dipGC%7*EfRqWI8Cbm;zC| z=Ei1w7%YEhyNQe4@h|_)=)duE`zD_B!zb?SKKxvh2q_%xdee`$aAy#;Lj;wOV1bF( zKnm0IQpk7YT%D;sMh`5&9;qkf26>_C%%;%?No^ zz&WfW1B*=~+yr@kY-@5>SIy8b z228aEW1-rkAo>K4ggiEeZaDuzj@5xdl=9{P){~UKPngNLP};`kGq=HiJ!~b z-ueIX?BvknU0QX9)XHTx%1*<=Hzv!1VFB`$VMze^5fQ6icg&Vx>JH!W^J%*Y9Q*9D z6dSogd;ydY9U{db)!+TI;?5z9cn|)PO~*b6&v?R7K*my_iA55TX+D+_ zvbSe zcw-$!{2NBHQ(FsYoTtwFMMSyXRpa}8`CR1beb?@!T#c6-e>S#u8)s2E@=fyh(evOO ze83%x6kZ{6@+IAcw1>(DkH(o66gm3eUGaAU`{qUkIcg=V1**4KY_Z$4o)GRwKD~!^M0X1Q0j!**i&lB;iPe63- za>S<0r$Sk$nl}UBF+^D{@BiUu;QQ zVV%Hk10r#7xTlevrr$Z<`uu<1If|TC!Ls#3{y~|K6upuh1d&(5%cX_Bh>lu&Y@HO88HJ#}-bb|NdW`Tg*LZfxdnZQ@4Q4JEQq8?ELUi$8!F8dK)g*zWMrHP}S@6PHV~ zMw{KxN5=XUbRQg4dTzJjs<>+N)Q6mDWiQ*kS`)Wiv|r;JLltEmA`DqpPbE(R4uS^0 z7rqzc z4sFxU}mI{RHIjypeFhKDFg0z~4J(e^`>bf}hdkDj2Rc zzPuoJ*~RwQBNXI~I&zO`IOC+x)Z$}^DNskvhp3A@Vqbg2)nBD&H$_?UOJkqvqLNqK z^_H4GQfar(>us*V;yS%$h09k#R3Nwa*&Ag09@=|`^2W!A@`hagLBSI$ zH@)|s+k58t=5mVLyEt7+_z8_%L3}MzcI*`Q<-8*u1qX47V+%byqu83mnZo%OTtBtjEW^;Cd-)ec!m?eU zTTN&}D+(eu^uTZu1#l!{RyMb@c6N@Q;0xh@WL(3kfxPa|uO<-P|KBoB+{4A}xARZz z^M5Df^uC?lHw=ik29 zQg<4*y@t)E6Y?E4wx_33*M-mGz9}``tygSbf`b1>NDnmpa)J!^imF0kV3w6ImX)*_i5{7ICN%bYnr`w(#jSX4ik#dOv`YB%DADJ|W= z73;UZ6(|!wyL{ydswkKD!qbV;ZTi+wFAk%SR^Z;uq(zm6&)fKGAdy z1=E-k`7WWw`964v+K(C*bwqozCvqoW_k16PjdRc6%gz)$F8`vM_TR@{D3G(@o73BL z)>Zy3`_LDT(#q~;E3uBRtky#u6ZSNgOi__iL$~lHq-(u|c0^A%E|KI3bL)@1_T|qU z60OTqMO{%L{tZi8)`>)^rPA(!+qPip{vKQJ@3-2^PN|>tVE-nI>7L9Js~^!z=qx#& z!aA!2M$=rG(JUhF=Q!Dct9IKXCbkfE_IB~fgk7Up1((?c!vKc)45pqlM6Zi05Z)h zLK<=Jca?l_UrYN&QHtxAq!Cl52X6=qqkcL|h1rf|^JDBBd*>g9;sysq23Bdx(1ASE z)c)u^iJ`#Tq{rHzj!dQ9g|Y&jl&bCF?MyX%B^%`cYI2(|C_z&6rt%O!SeIW!<0U=_ zb8M1T34$k@*$T3DL=+|FJRa0xIvpJO=MMFfs6mLFTV%|3AP1_#^2rCP3reC+KM2RU zOMiQz=1;g$$J1y@$({Q*^Pr}bSDoxX?y*J)a@H4#-(HF-S|70Khsm&ENEUawHePK` zB}fYHxqUxL41>+qJVVXlnv(c)Ej{uQB^5)Sn~fy?A@q|-C8%>%TZ{0iu|IQl zbj(}Smr-l=3GiTVf5+)@j&Y!)u^;}KDRp{xSmGYST`9~uqz~NT4IWO~u(uxTjB;5e z>o}m(Ef3CP&c@F}PP_-;b_?$MSu?jAiEq?fDcX-2hPD$^K<5*Yw4TFE`Mf4?S|oB3 zV_Z>#vQu7tF}^af{btIi+n1{F6GHzI6RxU;BEXc*pteq`^Gw_ZlnHRTkW$Xy;eU65 z1j+FCK%~z8OX116$n1-<+hFf;`^tG`XXT+dJm-axqBL0}OhDheQaJzO*?hg-%(c9o z)w15=XxDSvJYkolpU@FeNNOMd>vNW0qIPzURyA{7c6M$qfGrtntqejb7jK}21vs#- zcug__8ir`Mg1r(2OMeP)FDcys%}~`~(Fd;XBhsFO#JEnLWmA2R6$IL}yW_n8|Uumv%>QY2Jlla~||Cz0lFRR!;A6)~9l|IrdFy!uFB4{`J3aB4=a$>?S zCMXU@;Ud>@VtqgG6iIT+d{H`D%T$;qvK6z>^I~%p|DCjw=hv5^i{V>G$=#LUK~K#kd!p z^=8;Fk5L^qA!3EkZzJn@8V-_&VT~CT7E#(V7G;V!S+Jqm@v(tM-;#t{t&nDjCms0% z9SI4AH(ejWb>aVfYehU@a^aNF4wGU*ipaIbkjlH{jS|t7cpKSBC=A&zAY1|Mq8PzC zGz^0U$^p?C2Bnhxv{QB~N(HShI1-+KfWq;ZDj}|eDC?$z@=|3-oKMPvw*F$yD>HAm z;ZeaTwe*DDb10sa{1Z9o6j{D$1=8g)DHhN*89#=ZScZiTeq)E5r565L2CFOb-MiEW z+gHF?wfqa85>a4fELkfK@iN(bIWchO4)rq#LYkYm%}DIA;_+JlynEvcAjr<^ju1z$5`i>gDoac*4{r0E+@L(MSYpRcg%yWb_O?Uf+(xqs^xdB)br-1-u~_J zDk_2HAu$11M1-NwAN)Tq#QnM?8sJ2V?Y-^GHa;o)uBrL#?kStVW%m051)W{gaze$Zy;?}L9=xr1MvHP*R5iN zpd#6=g(^RT+C`A}@I1ia%iE(3`!2&X)PtsiLas#aK!|M{&&?iA?sOE;PT`WD@17ZV zW}FZ%w;_NMYpJ2acL)G)2Kp~JdDNX^%UnpJL#&U2*1lkAR7KGiu{=i~I5<&{&2^%T zo4VPbX~?eAv? zH=j?&&Hhl3@Ljd$jdJu!Fb@iW7xaY*ciDm8M-!(4{1#9B5O*LQhclo|SVslT#WWaU z-hO3&zlsQgUv&t59CEY$>iT*O?09!>S!tiRF-sx%4f9f?x%a86cx+4IIBieB{(^h} z9IJx%=R->0XZkNw?n$edlOoj03y+F1G-Jxn>;=HxEABdjsV6mM%T3c=X3AAc&&MW| z{J9$*i;b1()9BT7XyalOjxM(cM8;%-+$ zydK?MG8mU23Z&z~M4jEPwwzv9f%TYu+|k43+9Z%uDC4cZDO zVX8^!y)``NUqzEeR1^*J%!e_*5R3+WUmuAmz!dPp3k=lM(ttePZ)OoYLxfB!{g;P= zQ4~u_p8FL>v_W&GRM!}kE~>wMW)W^_=eZ}@BI@)Z$s`E(Voq!CV@cNJ>e7+u!jB=DG4Lfb^1dql>vvVXm$0> zex3dD+qhL0kzWE!^y>2CoRF!3{W)uR85}cf6Rh68+5C-9vix7{$^^?FJYME@MU6_R zOxa=VJ<~Z_jrcQo40lWv*4`-1I4Q}wtY!Z!j*i+-4|icF{9saqI?X=7E4u2{s#ku3`;NOtzYqNHUyW41cr+*J_%bUwF5o9#6k(ufb8HJ;RS|J`QuS@RYynD_lG4(H#z9qlX_jHFUrjln3wEQ!h2a;rblHt;ZfyNQ&`*; zIQ7aIOk+(eN+ji2$mR@&PNIoqn98IT$4If$<9#Ey) zg_FPbSnh=7>b!Qp3|wCnPj@?N^kX^k>VvhWOA-4IWQsqZ_ndD)Ksl`spMKf6vgKOl zn_u1fyy_l7i-Jh=#N(<*s8tSEGQ;E~C1^8d_WU}N)ALH_R!l;3&&b`~a$Zi_D+ke! zZmHGc>X2@=7o4Qc(wq&&ba0mb%B$Jeh@F(+7M2O#{R-kk&y~eHy)^xoW_z<%%oA+kaN=w5Z-jr{yrQG|w|e!T2esy)Yer@<3gegMoVBA|!Fq)Xsj_^4rT{w$ zAKRW?>B>1^XeM2ghrQt1BZpO<-&}@o{h^3n%QI@AS!`JnD1JQzGszVjE* z&b5SJ-JY&rmxwqW1zb-@1H0a#L# zX6m0b$8sbEHmZHTrI7lTz*J4efzKL7 z35a8*Ku?XMGB(<4E!khYkg?bOa~e+LVj^Iun);R1#Yg(cQ=XHX@Lf^!0=#R4B9|F= zq~Z;g<~eSPtr7V~NIs$bqMc#kap&=1$s0AiEtJ!pGLJmy28Q20NdX|G6?h(-J(lV7 zZZtPC$xA$ml~zR*ED~(>#fsm8$9}kydVU+&I1j5+uf#$kB29$>W*xK8YxjpP8Z1;n zS}KepeiRh`QVZmg9v>xZlcHi@6yL=jNWncst|8}2EK_R>QZHxMRa7o0gqLns5 zgN`BCae4I&Ox282EBdq%&W2Ymy=3qj!~B5?AumG^p#vs3sB2&90bEh>wuT6JD9Oi) zx0|s>;tWET2g}0q%@a4bmlY-&Fs*{3Gndh{GX7zV=dM(+ zCgK_Y%8k>Z8N80>(cyk7;~{+1bG{K@jA{&d-5y#;3VdylN$VW}6ftIY?KIr=U{ zh++65i9vR^0-90;OGqIUz@XD5q0sCH?UpSmid4a&z#U6itDR_^BIdD9@J89Wf^lyY z!ko{4T=_+bJIaF-u%8yoC#+8rCOBc=KtD7_e`PuJNS)iLt)9iPrLMGY zG%y#dCPx@Dx>zCXz_j^i@x(uD%=2LzMFprmR_hIfnqtPs4*#b!{4-EUC|WCa6=3Ls z(H;^koqTd=ya8Gfeq3LucaY{Y@rgKOH55*3p*5Q#s(@YN^oj`E5QGf^x{n}icx_E$ zbfoDKgG7&J0In_>a0_YdGy+Vt13U@kT5}8A23ttvnc*pMplj2^z||tSqHYaP!V?at z7sRaCporH_9lvpzEw;&oB`wtn$BYph%!yTTqFag&J7pV#__LW919zW47XDaP)K|CCd3I!!#EAV{`uH&#b1(ZO2L_{EWE1_Nxd^I-Q zqZSXuvEq9RD0i}MgQ$p-$OR922gFkW$OGlYTob$@HhP>4DfHuC`~$M`W;X%=BAwlAiHnrO+4oh?I>_43-xO4~E%` ziMP)#JOx;n3r6q|(IEI>&Wq1FbuV5&mJ$(*L%anMA&61j*eWGZ}?e3#6(7Xl3^={4t1 zJIBllXM853fGJXG1T{&(?jJ4paQKms^d?8MHw+);O$NKb@9~ae{EHTdxF}rD`rhJ9Fc_gjoZ^rLRQ-9*h z0ZU}ORw3hqkaB*%xz9GnZpz9+7}u9&>4{%DEz4}4cRZDvUtfK_?Rw67F`?f_#-BkB z>}Bumq}QqQ!{DAy;EW(20;3_z^MceANh+mn%C8raduQ`Y(d&bcL`N3VdF=)8 zMc{V*yA+Jw8-kjFP$NCWaHaO4QOmg~SW(YFyXyO}bC`c7Oj4>+IbR-(IZ+>3`LCEp z!Z`XUC{-9p?`^wLr%E5^&o8%lMe-fvYFT{|-EZE@NGUn6;&m+qdMN!J2ERi6ulz0$*WJOfYSoS=WZr0r*OI)?Um*4lgfeT^qARFSp3usEKi+Iihc;(D zBpJVoF!xWr$Oyy4I=Mvy>1fh!>pw%fcc~wjEc`A;tIIQRN<~YsK1?QP z(B)DL=WCLRQgaDabs$O7Lo5@`!GFv%EORnPg%K@%t> z)MQe9{qnqFCz}3q?wA$`S^#&o*_Y8f<3FR@}RftN5RSUTOV6`hv5A@OaJYDz( z=;l9QZ}pI>#&4(3L|ip0oH-OSjckMQ^~iocyH`&S@W|U7zV|hKZlDCz*+A-{Gv~q- zN3P;h(mDQy%fJTcuh9~BPQZ!n9H9~TU*602W+Xx}hD_t6pNk6)VlM32OxSw`312h# zaN1oOugA-bmA1L3x-QkMqy{ZR0t}b=dkl=fd?Q}p$&bDlWG3rrUlX@X5Wrqk^voC@ zwz*r<2Ywnjm`R~<8j)-|CyqH@ZNXV-OL~1l4ZM#XNyeh?UT1pr6QWjX8TFHTbUOul zIs**^YkjQ1z6DcvY@*5zJm}LCb_Bmq?(21psk(QaXG(U(HC22B<>7-2hLLt!u(wX; z=)hJ?2kb2i_SpU(V>xe7UDwDDOv*>%|D+VS{%@3mij}9?|8~*m_2bt>`8LP}DfTMo zGf8O9>c*487jG`@uBVSHeki$g;fsfovZYccr=mU6>v_Kf*~#=&iOJw{PL)P-tJkFS z?SN%SSjSAgRDV7WqrEeEzDnWi^z!mrAkiLT`f}c4iJrJB{@88u^^|BQaBV%*sS&js zXl-8!=eYYE3o)8BXZ3Nb>DZb*5x^n!v+d!qT{)EH^ii=%vNlkqImnqJIEhb?2FIyG ztS@J+vYG57AeE4NnMr$1B3glYH?ihlX-YYNnY^Xld=0iLV(eLB&-J+(`j2H(jDPy0 zeQ0ysecR{L=Me7oHO0PBV&v_oa-PGcZ6Erv?Ao&kkTv@ij%lv?-?!|hzH%T z3mZo!H2_;j2^DvS^gBSR*F{pDU$n=ygz7vcIEwt5OVG$bR;6H1##R zp2ECLp3R{m$6)k%rN>0P>Z zjgl;EEmY-!&VAbu&F+!3GeAfjtY;~kQA5OtAt6(vaS#pqr`c*d0cQOln#E@HPk3L0 zIG4c-DR7Rz1s}-W!%#8hF@7=wv09Y5Pr~@_W5sA90L!-@6w%7JAD$so*8LX9m#1P`ZDa-Wx?N>e3ia>d{Oj2cc|+{Tn?SSb zl3^?!ydzkZbxV>-D)1P(1I^ZUTFbv$?A=#UGq%4)j?EE8AxYO*6Cf91KAig(=%48o zvfPj(Bv%$oO^Kb%(or;{oGtw`@CSOT&V!9B${TRnY4X&~{>E#JmOjxZGe{3R)r?^R zK&uPEF2Gr;VL9Y}0r-}ZBYQwd8!>CyYnSUQ@S8QWksTU;#fVsMcvlRUt{%lHb*QSE zG~s$Ld0{`1)3NZ-AHCtx@05`An5iz!PJsFaEU3S>6^Ry_SU%vA^)g6H{D6M06@x!m zn3R*_F8if>5Q3GpCs=5_ffZF@W(sYyIa^z(>va-j92`~U9G7eTU*hzevv@olVa*le zeNY&Yces08V9c^z;{tK&)bGSaOmSSSL1u*se{W1?4V$XKb)hXKb|I^JY)Opde@xv8 zS(uMOtqmFHe^f`K9od@jsGUtYQ&^324pmBL=81}py?S8~68JASj2Tc2(r&9?fF0IR z=plyhBs!jX&t-ByM0x1sUP+5(RJX9Yx$gJoSz3)uVP+7D92ZVu;bl{<4v+gf+Y zkvXtNO;J2mi!h{!Zs^zD+NMejk6_t)uocL*MEJZ>Cvy#Y+aq??06*?;BHlb0YaKu1 zx~@+Y&6?$KXOY9)c>3auw-mb~z6*6_V$$Gr%PAmh+wZBTbrIZEIhj%6QD!i1xCOKh z#8l4%BhN5DVa4?{S+C}$)KFn3&?>$}v;cMJLnqnp>Ni+G;+#C4Rsgg;{fd4}lX>1U zYKH~{@whkEEpb=%BMygi=-22@-e<;~4U)UiN4g9|9ZD9QA>RsUIHlRNrd3!v1IIs7 zYT;Lp&GO~9nz7)`Q(&tpBs(rg5&T5k6mg(S!CTqEEip3fL--_EzwvwG*`*?Q{@ z**>oR+8*jx_r*#SA!@a{Ny{b*$8N{ko+aSbLrfG~Tv!)Mp)nH=Z(*umwr`1l>KH*x zGkEfhR-v7a;?aV=-j1e!X>+%T z7YPQq3h5^O`Z$dFlTgYFhT-%yb$-@j;3rd2YEesTu{3^)U7n+tGWwj2FgUg00n73#g*I;S{0TN7EZW15G`h%}oZ?jY6gw&WX;;$AaOjEtV_E)xu zGd@{&TX$3c?{r5;$I<>wgn?Lh1N1%9iu7UU+WzER+ayMWbPe%6*9fS)OE2*LPN%Z# zoTLKRLc1HxD_r9xG`k!u;`hv8p%s86q{HPvhf}2?n5ujY8W&a z&90JlZltDOMhqG!Ust3K3R9PpY&G&h<#;rRQyO}x;}?~5$%PHyDLC~z13{Y*C|P}t zRRCWO5(J^@BAj1RNk_323%6iVTl74vxb8uNMv&8iu_1t@g6fj^xx2* ztBavM0qQ7N(lXPFe>v6s<5Y@R(_6Mz;D-Y2nL(=ucSp>yZs||i%=R1&Z=`Spt&%q( z*~TR(8HXRV1dE75boBQ>WXDv4otH)cj+ClA2L{A+?!gh0m~{MjGfJF`_T{_$^Q|82 z4S6E@Wjx8Dz~+QplD5)JSE&rQNpWIH+Kx?$JadUSxuRVd`F&pN4zIcBsMmES=Yqb# zwBTTz-PTPJ$G4$2H4q0`P6_?i$e~AcGNu9kxlVgRTv1!j`Fb>u4VB_!QfP`hgnD%7 zYw%-rAD;V!?H~|c7ngC$U@8)u=qQ=@fjn{gHM2;VXdJwwkyENMxg{{mrk<;xEvC;; z2^RI}5bZ0M@3mqw9z~3@@;p1RbOTT406zN=iGn*(&FgAF)I~qa*2jUt(n6BE#^zt# z7otExBbaa?3(CIoZ=*3aJp_|ERM}THy4yu3oeKrcHR7`Um2H9M{HSAY$I4|_d^p@p z#F+}==28EYw>|`co(aBA9V5>3`~?Q?V>`vM4$=h+d)FsD;b1i;@aaQO(xsP4Tc5i-ui-Fe?KF_uAv;lmk(j_Pq^wC z#EU@dOS@!(p72TRzlti*(_h(c0Jn*G9@3b+4Dgfn(FV6fqoT1i^z6nil1s)kA**Wz zsbj8-EqYpd*cJ>U|NS9iz*i9dD2mN1uVUj>9 z1EA=zjlS_Fu&4coB+ue0BA*rEp8IAxnJ>!@1kB$wSOj|uO&}i^+IN=+%SAg0Iunh- zA-Sw-E_di8-OlKGiW2UBmh83w7~0~PornL5!sWY5i&Gf$rqQ72y~;hZspIr5Y@+k% zZ$kq;-RQD9cv$#_Lp%PnLoTXqt?1NsMTBMGp$#$i0C+jmd{JrOIZ-DU@9T zmPk~_%15ckEuA7g^(RZQ?#Glahc)j{(E_UKE~jP{a}29(0F1q@gcDo%go0A{`kLhN zWp>gbHQ>n{^fCJT;=HfSw!hP5k!vWfH=hs8linE>0?q8ht_q=i3~0`&*-`5W8w%5jJ(~G*FVeYm$mwbg?ERw8DIDnJ2fDP(k-@A zbjs_bW4r0f?T8ZNl#M4sw4?kvn#~gk6vCry1R6c+3_-2$x$a+3#PAl~24w77bs6f< zZ^$o$v{8Y9Uu!`bs@@}MdRTrTcdYo(gFCBLB}MK37uMb}IP?Es@{VoW$;6r1wvCB7 zv2EM7ZBLTP#I|kQ_FnTl*t2)-{`YLv{VdN@^}4#hpLch+k@J%k=YZ(*R$-40P=!(K zhYDl`LK!+#gd;TMnPuZ5r!1g?v!{U}x^aX2q4Vq8d?!)MBhWQ$_;MWXM)>W9w6U@M z%&3@2u@6T}>%H6l^}`EB(F@8$T5m!3#HXJ=;vL?@$iB1yj?^nP=q!W`y1^nLius!N zC;f)u3qd;nLspfYUjUY|##9uKvgasB3+4!fWbir{c@)~UsP{1t=yN{hw^?y2sg)o2 z+uP32cxa^3IwSo9Z>pHF$ygSY+WDyjvQFB^-XJQm>MCeJn~I8J^d5vtbdgDv8D9y3 zN!6!fDc}Z?RaS-ZYIGL?vjZS%KQLm@+j_y(qbst&(e0o>Oir0FH8p*H{Ct1K!yeqp z=G4+_C(~9^)~;>rE{B`RzOF42REVgfls_6-|Q430bljopVLP_iRaf38ncO8f`uy4MIeN&BTrwpO?NwDj!i z!Oh=PFcfOQ_Gv0l-wE^j1#Z5P0HtKq{K-F%Zs`|r4DFvwQ)n!TCpCjsEJB?q(pFo9 zs9l(IUlRJ&UZKd40rUaVG5YX{wtH4jNh>Gu^EH>2wN7bWn#?w`Uq`Q<+>;&2x}Qy# z1NRkA7_M{Dqp4>n%IVKz5BHMN-fcObjU73BLIu9Z@DCOs45{;7+Dg9PQ|B3+t~iM$ zko@<9(Wpz(z;K#Y;#TQgnZ&>21-i3c!-@ow=KkU0dOLh$FY@rv^me|__W+#CKzzPZ zppx(LFBaKh-{K&&)(+4?6V6HSJ`ZA-4uubn&Fw0 z`v?@<)ibe3`uwMt`8`!J>i_`=NYmn9S!sd)j+K@%aCDNjH8%fgZeskuv((!EX{k*- zs(Fp#Q~u3Tr~HSdP91ThL~dAC2$B*|TW|MyS_2n|D3S>Gc$lA0XG11z2YBi?5P|v5 z*5f9RuJz^-`HoCWho?(G3NjMQWbAe6$5;cs2j*#yq%k|tE#jOD{zdrH zJzP=?Zoug*OeWD1(}(pb-$FFT9r%N2+Y?Vd1a?{FZ{p)`#JC>95TxAOD)Ty%qg%dT z6Nm>ex2QGOW_zoLyCIyH)5Vj;XEPYM^5@+cv_#?);k;OiAT5LANBb4R6^HCa?yk<- zjcCs0hi#wYCZLs2$b))$6U&i6NTj}pnrY+Z;ydr$eV-t8^+%m<@0Ev~- z2T*;y{`J+`oD^U2MSpK+Pnq%A(qe8xF)Wx_v2Dq=_@z?Fhvt=Ldl_;?`SG91Z{&|9 z)gPt~`t92`p2~#NB%=K0IJg&^=M=Y+BHF?EUFu|0?< z|Cz)$N@sZ_Y`j*QT_;#XVfJm1*XCuFa<&H{Z2#@m0}_jUwq09^>xly?|43dy0J6A| z3E-<;uB{5Fu%cr+>53ct_(s6QZb>!tBaY=ZWT*SVyeuK@s{G=WpVQlMW}HQS zpfLFka9^m}gHYAwp}sVJLkgp%-r=*fDph_!99mkdC9Dd+%-i66Eu6Ki?I5;m({owj zh`yZg|n9;eF8<}-}PObpYzw|$nwgInylKOqilNTuj$z_kAvMj!C(N}m&dc)8* z$yv9kTEs_$#;4kkrSWVTl?bZ~6o)boxm8OAHVZs5bCK0;iK49=JNs^*{Tq0Y$X59? z?mkc2iLsRG%_?ldywc1gXVydPZIlgWKybUZP20$?CXq5vP=1YIAlEjxHmeZtB$m;k zt*;Op4kvTr%#I-{L2|JqYL_CYD%_M`SXhj(;7T0(<Kr1ZGaVicA z`hdXj_>6kV`!jj#D3RTfV_gYBPHyAF_H~EnH?RcHk>Hyz5QgrqKowa~Kdg)?7m&up zh}P{-Vvpf7G1|r3=s&svJ;6D80zZ#EVDaUjCgN+YSDWKJK5~MSIPvH9aDT#_&>Ark z&w!1*mwJ1~XMY5}$iF|h|C;}8T?o9j-!CDJO>iB*=sG$@yAYG1z(#h=BRZNsb)PB+cX4!}MmAQVUPUK?*E zb>%O*-U2_{t8doVY1DIl=$#0VWAc~WU8q`Un|AEet zi2w>VOJCOixV}{%vFt^u{gY)k%MM9yI7CS{`0PjdaC^MUFx1AB*LXL$`|iZyst}x2 zDfvFpfg2bn?NGd0m@qF)ozFlQ(U^@)iT4yfrGDIaktH^Z35uG~i&v;E7aVufOq)r{ zI?^caShM={BJI3SZ-i<>fq_W4-)qOBZ8x*vpypSfg=SDf1IXFE|E{n&W?F)Yi823M9zcM*{@iWV&Nv*(?U83*7 ztGQ)P{v5L9;S~c_#K}Iu$*E+Ny`WM@;$zBAijY)ym?H~#p%$x%fmCgSBe*xfW3%4{4>J{Wa-J1# zPe8ZNal>gtqDhGC3-x4nnpcAH1-caxQU~e-Ecp+i>?DF!IvLF~rF~&}5l4Za`I>8# zn1+A_NAUhM&3JCVneK#JDu*ka5(3twe>Z#?HM#@{6&!u=JT0Tt9C1d1afPphBjeN= zYk4saf)KSz~i!9>C( z4>}dWmuK_5c_I)}x_}EBZSZpX^{= z>$a8{)BZ>458+G4GUwFEpnfaT3JYQInm}8i8`<_JWz(e-Ee~pb)Kv={ud6aSwnT`g zgeIaC^vb@m9VblJ^nO7Z&ZNA2-C}XBhV7ljIP|rAP1jbG{ zL!GQ(t+W6w|6D^KtIW}Du642|QCUA8-3otIGcld?vI?DmmqvoVW?JdV5zOYwj#rbm z*F|*TBHgu`PAYmBs!)H^o+O#Hj?k_~$A|I!gsViL7E*^(*yd0)Q0f|mo#BDe)p5qC z*$+Agm(RQ>RD~l0th$@PA~y+JagB`Gy%O$;KqAD23Ze6?8RF`#(_JG=V}``Dg>EB0 zx?d6H`-xy$7n~Y&Xdl)Vp6`^rot6^i9OpmA^UubDW1QzPXU~5$iBs=)7CDQ+nm^L6 z4j&d`=zHML2m#FLA@dGG?h>+$;yaZgE3d8hh@aV1?}U|l6)7MqX&MH|O5O+z^tyw@ z8G)V@6p=WdoyhG~jQi}J{XXkoEF-Lcrp6}N%@{`5wIY7`1!F07?XEE< zl4{#APEgaR*W@`-d6rGz82XlwTGddQz2NaIbh@70XR^hNe)4+k{JBfYBYjRjPvgh5 zd^WNK3ie5y97Cqw;+_c>$#5_zLySs3lc7f(R(4wbU8bP84>RfE9ZB!8O&H}EW^JqpCbTZ@(`YOZR?+lrpr^QE ziAFPBb4nYLOkemE5Sx~sX7$dzD6^C7Kny!Q#=eM}B;~3!tb5VRF?$U8NNlsS$FqfN?wBLH1`9aDv zN(ZcYI|IDpN7zfSI#&>)Ns6^{9;#WF+j14?_3nPS;7AXiP)C;5k0Tnn zubn(_v5(woVaOQ)R!5dO?%uf`%8rp;UN7L~>XnliAXhr@jGr9hHpT>9at{Pu9MxYj zdB@~jw+}elQ}@mh4msM_-^oZrVU)|NvLwEVCMpCHcsF%mWbzb}0xmFd-GIUOB;smy zRXaa+;LCGz)Ve$#$~`nWJwbiF+Z81CI2Trj3M`q84@wX@E*tXGcC4PrGhbt>`5GE= zDFnGwC+q^Ce_o5=Q(`AUDFogV$_3Jg>>k#dr**aU# zoguo`T}R{t*Ki%a9w#Q8Ln)nQ-=4-|N^}tD2cp$aPq49De^1CvIazJYHeF^5C50bN z(6dh>LHvpeFd(zKPLIoDp%we#oG3JpIQ6 zJ}?&@rRRuhxxOaprej=i%%xwR=IkXDKFScvQu-H^8!MDjHe|)e%&OPxEi}Qu=Ckv?t{OW7ep%9zOO7T_mWGN} z$Q~MvZuK?+ML64nRuwx@hsy87>D1o{4p>W{)Me+M@hk$QpG~-XG;Hia`j8o#_ZMM{^m!ctSNe>lp&fH|$saV*q{lIM_9{$@2Rnmtjf zyrEM8a8Y~nTVoEo`KPmn zM8ko+9kzMd1l_w95O;ta8=-^K&wPW4`9P(GmyCHaLs^TGK>p&^X54J|mKcK=SqtNd zAVjuJ8bEv!O;u1a8BG-spN#NxV4J(}bM9{b0Bf~BVUG9feycXT)g1fkxRiAndBQgv z;^_o5iD#q45KQjJT8gK(@P(DO%j-9z<>%FCmkl|PX~qp^3o9AlLP*FImIHmdGn&NO zo3t688)W{zh^psqLt0HCFUp$f(m)87!Jkf5v6+Tom(*|6FVczJonjxe+@lPAGh$IX zd^Q74+^5ZurM!bT$Z8seZ-xPkMV?3>OJE21drw8L>s|9VW6>>7yIA2gNn;NwVE6wN zG7ExQeHD_{^D;qPId_H%y^$5YliPB4Jc+J1g`2m z#Mjj*<88G<{Wg0?*QM*4XJxLL0H^<8e#J9-=w zRML{1{CWWF;E%^PXs)TI-h@I!s5arM3U65mC^5aalBZc z&cJGaO47spX$^VcW-3$Qovno9+ zhf$9k+)`M$d`PX3b}&C32_jn9QX@98gn--b^*tHT$7b4EiEc&H6{wkT3Cvxj3w*{>9Ccc z2PxLIxV@&+n8Snb76+SNk*#E`nm(UGn@Cs$k_%2qceJG<=Onz9?II6scmYZ)K$(>s zNfyKmnD7q<^cn4avD9jRj(n&9=5Ldd4`aot`h3*EW{&Uv%q))CrgK0!_DpuabDWo) z4r%3P?o;}AxYFYbIZ;RtKuXSZA&&=0Nny?pAjCdJ!a`=CfjX@N8)1;~o&BZ37W#V# z14MlzeiJ%r3%KchgKtE~v=(O8^5W{pyM{&;23>7V*wZ3p>S(pxav|jISbKXE_MG;- zhD@W3iDEIDrMEL~J=`C}TIE%lTqdLzkKwpJQB{4Y#KUh6&HKEM$22|V=mR92#_=jC zlS#=U{KK`cR(c=4k%lkDk{q4^K3dlJ^0xXcd3zmqp7GtcGrF6uGkkM9e_7h<|GlZU zi9IgS<9G`_0_jt_ASC~7Zu~*km~)vyAT$)o$$fHOeb(oY)f+Mq%9673CUt30bdgBG zIib;3FWVQ8liYv5KUe)Y{{y%fnw+AS^KEr=eXZEDjL(iT6=kx(69)dWeILb z_>_=tgk@SMa#zS(!&wQ+S+L#fH*KAK>TRnA)S4Aw?E5}AuY7$|_aes*dVSJmc(%R* z36KJvH3dx{30i}F_E5$A(qq|Pw~61q(YD(T``a}LXaZTZY@|AqaC|N1W}9Ry2(EN{ z6aCM16DC+a!zCHV%MZ}U7+~QkeV`&!67{64=w<|n>np+nb@W7W5o^o|yZen~#Vbf2 zKkuS9dtG=_HfwyI~=sbJ74YIw< z&KQtbzG~lNev?p1m~PR6Uzy=G()ful%Lwo|lyVFs{(g0Ya7V)14+S6C{)j{U^rHUG ze|$Rye`s%J3wk6!O2v76HU&TYq4yeiX}wA)nT!eUs&}6A314@JN5MD&i%NrE?D5#B1z>zNq7l9B}f>HR*$b_rsxwx$C?%QwiwSUdMPP7?F!< zG3R%F!Iy;6=%y5=bf+Jf>!;teFUxVM(2mM|A7qNCsogi<~b@FXs0+Dt=WdjhFl-l|%V{G;inqzTeyRys~T6H5NgBu+ z1ysk)R>TU)y9iEbH#6b@B`Lb73V9g+SsP7rft#G#%tMnh@3^DVTMlgJ;xEqffCz!n zp@I4%DBbTNcfOdh>muH}yKgS~bi6kXWK)DJ>0w|bKoBEaGZx1pv{D;2> zViNAO0;B~EhOA;_Gr#pDBj;}Y9IE0~jO~h64q@$@i20FuY&8oklWH(w+i0|CHN-qL z#uOEf;R~x}Jw`o+&9chq2)l7VdL8`mh442Tc|oPs$_R)?cI#}*7s#G^XQ)6|8X2lQr*1&D1x22L1aM2aq zP6Dd+N1V2F$~JqHUdLHLJf2uyw-{9=pY{>h*dt1?2^%$1GkuXmk{vO2taOW~{_;|EWPgmDL)oxtcnlG;r$LVmywK!q@iguMm zp<3JeCj}*;fF`fRSoxehYB{!hvg!^CDeIlztc5}b@hVT$rFG63j!24f=5D>Pq69(H zq0P01hQXzEiN&OiuvH{cN`A&Nc^Rdk^MRNk%L9{VI}!6rJxp_sGn|?ibhv8bKu<-W z;V;?Z@mca>N9;-^7A+`q#98u4871eHgi3_E)}mREQCS zwfUw4L7ovSQmm}N7AD7|w*s~aL}M0KnHZ+|six%Tk0E74#v+FS|8N8McHf+BVG}>Z zBnWZ>(*9Wm&RjmIM0pz*{)nlbdf4^C;0*Wgf|-|0^27!hbt8nnjq=sEP*SAULhq^O{U z-8eCITI8B(yd|&R4s_yFivl3}m7-w54r;`09%ALR0OAAPuaLulHNrgb9ONTy&B}&v zSJ{=N14|w(qU{CKO|J)^h!QWGVlVHY{mOt?B+9O9J|y=)u}IUdzp=<>)pXsc$H}*y z`7s)?Pr)>KMFvg0eAUVU))T!-KH<2VAO82IP`$NCe@@^bI@X>;VU==;vAA-MWSF~V z$ZXI*WD=`7dQvk)#`=abP#B+gjAZSL2>2GAo;8#Wo!*}7OB5`93brg0Ksme`POe8v zI$n&GYiJU7=wCLKQr<{Ea?=?EBl%9$hSKR2Z)AaU=>7mrIq$~T>SlSr^;tUjczAp+ zL?RxQnlkA1>1~zpc)X8S%$JvqqFoA&UO7Kz*SB=@&eNFM;QrIw|Z*-R@2%#nmhe(9r}Oi zsnvA<+fys4wWcHKhyGCW_2B{>M?$4!`!qk8(|-us zu5peF3n;2((Tbjwcg5Tfot$88d%OO8tq`ng*n2-K+ToaxQ|@vzBE(OWlK|b3jD?(c z&5G2D)BvRtFO6YNmpLB^pXd`Wb-aSxpZ48*&Vv2fKHF>od8C&#wx1$ zLuM8O@4)PN1>5-?p%I6ZVufenUqtGr`CRK5wHAtoQMr=Ns~4Ycoc@Uvn+!o+}DAA_Q}+oEr@r0#w?nXp9i*8{42 z6C1D)Ls_y`&A`;EO$cZz@ciUSfhB#w*2aJ~PD-iL!2GYwm-Rb+y{7!q;k~i~f3Pyd zf;+<858pos){!@j#4*mbf~JC3GoRb7P#WtakJG(%%Y$x3<<^9VrYokucKUbqzAXqq zjuR&L6v6Ey+GPSc4f1_1u4XGJGG0=nPbfogZ0QW=NFdKOasm6KQX4sYtZLxL?iC~Z z&l!7jJ(}d`lYpy;ATbdAdsXdYE3Ys_27?$&m^jF90v^p~EjxbXj^|Fcq2Pjedb9|V z+qYs+?J`f1*=uBwpkm%`6DSHAn4)%s0xh{iJ9PMDH=6|zaOK!^H;MKlaP737B+$*F z%cznCZ@oM2Qr~J@8d3Ca+d6Hd*2)A9o^A;SuaMNMQgxehzgJ;6aNRBzVEY@%W|*mh zv_vuM$}}@!III^Z82lePVJ3vClrNy4%zAa`z@P+mST^)v6IFEN(AEyn9hR1QZm+7- z=!K2x^y^H(F~a;GwvPwJL+=HyjS3*Xao&;z^rUQsHddEAiL3N1yC8$op=7LKt*=}k!wGF)Q}FqM-Cfl3+#1l zTO=Dd%M&dWar~)pV5>QYHUvY>7gAnE!ZroT9qOe@CH+I|ch5x&^_H=2hoo$@8DAJF zCgx#T9+>HF0)Sz8B?Ae@Jn$2T18-m@_ROc$3uh4mIk(C%w*z<|`g{5}%$p)hDAcKOvSBZAE!Frn^v5kY>i` z|5+TLbs%hqNmt=}wcwc5MZ4Xs41?Z93o1=8c2&j}0I~w*FT47Pk$gCGxNcRIHWY&X zLxHQrnv!#6yn867LQGPbl7#I>pqFDk3FxD}_@|FH_CNY)1Cfp#o?&k%SIyQRI&#$D z5;AGgPm4#h5aL?9(KAQ&Ll-$4M?e{7_o7cc)S`J^;~uC`7hi&Bh{g7U68WyR;_9yh z#D&836R!E})2H+=2jf0ZJUvO z3kXfv&XRZ#?u(NHk5Q}N_H!zQT6+MQh|uRbZ-}#l=410$5y{r^DxmZg@e5-`GK^Iu z5tCt+9BE94cl1v42M(cnjDbf$go5{L0EVrj68lgViBVz(k0_85F^pSi&4_=2UM_;_ zQ~_gtqgrU!&umIfC&5qn$r3g0mFMp4J9FH0>FZ(EWOI4?tNu!%uA|_Gs)7<9uV)ZtDZs48XUfnp8h6S43od-9d0bW-02_|Pz`JJMqU`RG{HKq zKnaRm8in^?t&{(r3%8r06EB488R3?pQ5)(33kV}i{;S#z#HTNE!Niimv=8oPv9B^Y?%%@_)tFjUcv z{!LQsqm_tZ1CJH%#W;6CVS=L8ulN`&=Le{24gN#3^)LLL6{R;m+)9P7udSauWg3al z=j9}-$?MuqK4z>(LN_im99m@K@cqA^AI}*%He}h}Eu_?={@^Us1YDBW3>NoY!n<~K z4mphvn3$kiDcdbMA;=)wj|o(tF!G_W@Z>B}MN6@&lD$)Hs6bvK638qPpw$n*9mo) zF6n8kbm6TL+VuBtTm?omKe<|AO|ZLhz>kN=#|c-Ec^H3i)$glXd2AqFW_#4r5$EIH zM_&lZ?Gl2gB-$z%AbeZ}OjESBw=aovw=l7yzu7=q)Q`47f5>-@>jqcYR2^s zjj_3)-m^AvrH)Dks}_L_U1Dopr&IN%c3qFTIHF{ih56@mJj||iwRU&2lZ&(%){m`)t@U_Nn0J{JN%ez8ID6zKv;IDF z+@&ZT7}jnYk{yj_t~BPqa#AjXE61rXEEh`utjdOyj;^y%ktV9z06=e={oazdwLy`g*(1*NwTP-c!c5*w2Q ztc*D{7`J&tembkwPdV4UHLd1TWkh!^`&<7itD{7uOnB4er9-vufq6nGs!GLhrP{&2 z`aa!632_c8=s5NioRQMyk^BBAY^wR(Gc=gHUq+;;z7>KN#5vG5In~ww=Fc<`$_kR} zl2*bVtgappXqF|C@j5Nw$DWCiqeL7MzCvCiX3=v=G^d&T$;(ecaY&P~WDG@e%!CqE zPtg&Nt8Nc$=ijcDlu6leGK5L9;^6?>9dkI{&i*u|FWtj7dBm(gWs&o}ac7tFT|e-R zuay+B>*2>X+}y8b=B~7Jorl7@+AFLDMoM4Nu45Ybjb<(FhK9Oh1^+BzkV8cDv}~&D z&V`dEo7o|xaeV6O1EpJo%Nvo`g^F)z>5I5{N=3walT;p@rN;+Z1*wh^4K6vpax>%X zAEL3;OrUO@)yD@-1v9QjfJNha5e=p*yHvq z)rYP+xk-}?3rE#!`BY1~I+Z{>L!=gcztDgaZN+Q~6hhN<a*lJ{D z;OI!_>}bO9FDE`Uv~1Vd(0rb1IZXW6+~cqS+l2HfkVA6QaOKuyry;!HO`>bsW{RX# z+=J6!ox)O`11@{uYr^#~;i8H>TWz;q38%HI8*1;KS15ddYrVXugWbd5;ADCCEsYq( z7p*$$Zn!yW#EZ17y)em4k|!piK-gNDA0j7KY_O)L`Lm=rTeJ1q!!0V*CT?lVK`hh{ z>ViP{d}sB@p+w!#Ef8eV;>bJYT8xLZJ##@?5D2W>zK4c5@hMVt^43UG%yRk)+M@lp z;%DgDefr}~J8URo;DmgC-mp~g{~0C11dI|9H<2-OOc%zPSbaa-5s;;zX3bZyNn@O- znl;ceCGiHDFcFE$mbMwp(gMM_ zpr63U64tMJ`3~48%6+dk7V4TT6x*Ma<@Pnh&g+yqbYlXgV``82gv@L(OkvUfL*o~U z)myIudYFL0wU94?`nilx(1lDPz*xhW9>2ip>jm*SQZ}hIUB3G`(c;vlZcNo=z-_ z)m}YuX4kL1)g4zD&@*m>$TgwIkkJy^E;>L01eeu^Wt;50jMg_!WP%DO0q9UIxw7|B zJXe5HJj6if4u_=4t&=fD>)f9 zV(i`Orl6;$zx{Mak&w}Xp3$8ofZKm^?JlAvuGx6#nKhzs1Zwf5dWU9MGB&5*u&qyC zd<-0U^Wi_Q=n^uKzdITALtx8+ANDq!dO4YRe_8RkSr)W;c1-TOhYAlu!+nw3n`HJB zdXo3!g85bV_ySK74)t?N-qEpZj@0@)oAm*6|f!JwiJ zn6$2dDFZoRwdlp!;m?pi>eBqcwOdG=awBDL8~BQqP-qUE@cCi7v7?H}tArt94qE5# z-_;_@w2CB#gI~i%v`SsxLW4fs)=Vz(+Gy;XVneDDEK^Z+ zLMGZwE-NrZSelt%{mV{V(Iutvv!E&K4f*&ZEi%+5-=(Z^=4qPM4WQ_Lq=$afIJ3N@ie@ebZ4;dL$q<5>c3OJ zU+-)T)tz2f)uEi}!Qm))n@QQ2 zxKp=NocBYb#~D|yz;*gqn{Yt`0JuaFPoQWfgs5yu7GV)wKk{~IN6$g9@AJ#Cfs}^w zpD9f7dPjV=+!gk%bNb+|9dRdy##nz#B}03#4YW z-V|=j9RP4BK=)aFXtv2M&q2N8#CxPL5`*7#YOc(EbOC^4y!;Ee?}#Lb>M8UNGIwAs z$e{lK4(cDkbuu*7?=O{9NLkY!u_bgze|O0*YVJn#ss;?ORf)0+@*;DY!GQ@k@9B;D(F; z0o>-SaFV;kS_j&vNGeT(742WZsXYc_yMFjAtN8|x#te?k`eCrU01DV9jAARW4(dflZCSCts*}Jq}#z=UyK;4!x zU*b^LN$8n;G`jFN7RDceNnI(YzPlA?kJdha(xrLPFFUC=hQm#e8g+#Ia~y+FN3Aspnps zatV(|4;;2&ZIxB3h1F;}>#M27V+#yKr$V=o>R&qCi)4F4*AEiNo1c zF%)`#ohlorfwnU40fK-{t6!T&Q+BX%d1c_^pNM^BI7UMF51 zA&)JMXO$3O#714&ELhxESx1PQ;zK6KW;r+p!BTC;=LOgT-<#Op!s}0*aAf64iXp2U z`$AmEwwTM4dMN896=+nqf`|bNO^2XC-;4grH+e{VKY)A_$(c3@N(mH(znQ8}>lYL* z#!$v}`H2lUuD;ss-VJ<+kjrP^U(JgSR@^C-C*%t?2{jE))_D6l?RP3H>>v!v8|F6X zDIDct!J6)VMn%Skp=_t|1TsAgzFh&Hd<;6jrY^3ULPMomEO8}R z7zJu%iZX#T1ED{%-#ZKFQ-WiC+#`xuF6=6n*=V*1Fn?zUZFR4tx){&8q9Iq+( z>iNc#3vWR`Po5Wh+?TJydwGk_xezab>SgwTxCM=xfMqdiWc7fxg)fLFtic!1)lv2a zK-)2;;$O7E6n@V6L6qu#JfRqMN@!f7MJqL9Q5Y({1><#2^brBH+jUJpm*Dl+ zg@uB+>LCW|WJGIazuTw(n%qYTXtnfl)9Q59mxo$cI{(C35>VceSFu86)yOwA0|Y8U zMOr1k69;ecyE~Ln?J)ZmO8F=MHq0Nb4Nmd88Q=24v7XWVD~W}V+pdk^UA^<8$-CH8 zlPiokTjIfLg6m<)C%}ES$DGWUeqvWZpN4mvn++BsFEtKZ*XAu!mvk6J5wY1(<~}vm z6OJ_Bt!x;^E-2p(TZW@I_Xin{X&PoWCs}5^oeBeyc>kgf%&6UD9a95w8*~OOrrjbU z&piDwFRd1%<++@;vvoxsXPLe1Cre7I2if&vY-f+#S|Cns@N0E=@{~qY{7GzmEA$Mz zQ8V07@3i$ouek#AbNxZfKAR zrZbX{zr%$YT?ja2Tq7pR#wE3&ahQiikB!f za2=8=&nb|t6T;#iUU22)T_Kx5-UyH!*M%W`_eOV2kTY%j8J?|4G_BTNMmCEtU1fjY zNUlI|RL*YwkAsrcg=S3s*)dU*GmIz9+3n4)R*7t8m2IQF&25RJNEK@l=aDYcYPr$} zXWlwo#S3c71v47xqu9rT9m5CMGLBR)lRb4dACtW=Zd?Y>(OBu>U_^ejZ&&9BT4wH( zqifHFL~&L*HsPT3xYU`7#uH)VwQaa`5W=vwh@*u3xk3let+$Wc`3~BAoW-@Vf62yx zFUs!dEN>kW(=ZVJsP=G?6f*E$8aUeNd$zui>D+n{^;nkcz{=)V zks{5X}|W|29}MXU@VKoAjUF=HZ=Q*W)Eh^!juXd&-w#}3Gl1kSREn&LfWX?%V8j?6 z7$QYi!gfB+1ecepH{d_;*Pja64mS(p!WQ--5^j3KjUi0I(9}P!@oBa*RgRO$OHmKN8qpv-4fIrMx8wTsnz zi~N2fx*_R+?j%PC)($5WR_Gh@EtjEm0|x`hXBEV2sy-+ zoFY#tt-L;@Mol@8tAeQ|%}%Xf$7Jvh^pfjg4WWrXf6hX<@$>A*hl>w;trm!1&Rx1t zO#?-)LJ?O|#h%VpD|zxNIS{>g>AM~3u5O-4vEorY)awGc2eYrwFJm4T z4z^bD8#`ViCFt7=uX6LRbo`mOObuCZT)Xx^kn#P%2h;L}ZF;thTL|O-fw><5%&q;! z+;7b0f5RL@2)OwF2Xn4}F$b~m59WCOVs0>O)#KkW*919*p!Z)fry3EE2!q#iK8KfS?3U1;BgWPs4S2oros%@4-HO6W6p5vnvCjm+qGD;fc`NvQ-Jnqq z4J9u@#wPFGj!=F42^C#c@61Enn79D7;J%mA{)4?$-kCjX$)R0gpYi;8H6GKw;ID2Z zK-#e__dVZr{ogs)0`gT}r1lE?*P?zmHz&3OaPI0~a_;|8!2O@H1poo}pNrs`JmVa3 z|8fz0nRy+AjB?fc_`e9a2lk_EwRh7ekj{R++WfbR^Vf>MpWk8=F^Z3F+;6tM-L!)> z8t0*CR7S~)F|9$2jjbPHi|0;QvT}l?5Y4@W#a(E(l*^NL3=C0c%jUPhfSX>L#zOD{ zfW86nMvE^NRBAI2)(FO6WP{By@8>%;Kt@8BteLY)lw*=5(A63lc7V7@!xj7)X5ME_ z76rrS{d&z=#>GQZwI6L8f~x>(Ci&AYFO+yp!?(Y$6DL;HLMVUzyHUoE;yyOqJ85Ef zOGfZeSq7kLA)p#A1z3K8Mo(vz(%=Lsorrq^mQ-X$7m7A)dmCsCmbRuQTR8vt!@#g0 zV(ZVSm#Q|@!tD79hStqN)%>IdyfYY~4-gL5HCPk(u@bbvLb75-ng!Pg>L zxc*vG5`Z;5ydz)-M7C}ITGM(DD*{ovnTC`y1*adF`0Ru)BftO#vTuNSRTT-O-IJ zI^JC-Si8j3UcGA<(UikkZ_IWx6PmO?M=ia-W@%JhSaWIN&5YWA1g?`mX60^<>*dm+ z$KvmY@GG*&AjY#u)O$0q)-ZDy{Q4%Q)dMk3Z!1WK+>`ZUZgaV)H8SU~5dmI~!x3$A zo1ui^?H&m&3iDKe(9fV)gI_ILw+-a?Xii5YbiOW6zvx2PT`2hjdLhq%h;M}zOvUYM? zp^1BDvpgVsw-$p|C5NFQ;BQ^K z9it#O|6lfR|H<9LzdXzOe}Udy2AsOR6D)tzu1@Yh{UPy|6KtY^jBC3?fNR8HM0s;?RJmh0w&6X`Vu_(OvCuz1e7rUiNl*EWu%mjOo zyih^^{z2pL@`DQzw(#J4u!aLqtp6mqO_C*Qz|NY7|H6)vz-Cr4WvDk`9B1&?bwK%n zidUuP4Ax1o1ZG1W4aw*2{=`tp>7l9~@jwR#Q_9Os!qzYy6n@mfHc(n3N|c-~PToAx zdZ>C*Dj_98yPF)htUdh=-dgiC?EjPCjXQqpsA#A+o9Mp>ZxahCJxQkw;YnNDCoOw2yQZytR3X;t;d!-@qHPLv7wA&B#CCO+>r>tg|(Y{4Q>_)A%oV>-Y=a zW+bUT^oMk|;MPum%dgC^YhX_Q>a8brL|gm!woSL=+}`@Sb!^9zpC1u9#=EHOZsOHE!CMy${Wo~yHO_@Sp48A~ ztQ7hOyxCg^z=r)7@Me!mJv}M`vxw(osiWgprtf*rzOwrGDQvk;go&2!6ea0ny)J}H z;oI63gHJc}(veMkF?Hs!3GS$-Q6Z{D(ALsOCz;x=2QUwM1XuYPu)tUI>KD2&j&S$U z=W^2T7P8DG_J%s0WAw<%PH{t=TcWk=KVCd$hOEIvcz1Rw7}Y!7cNTQ|7Hekj= z6U2)0wJ9&3cj9P90R4x%U4Zi5n6x!m)k7}?pG9oX_3ZC4%+*iZ(9Iqv&27?0!eg(`CZx;yuT;XmQNaw*pY}0zPsE1QcyJ4!CX%MyAK6T;2UShu6k&X8~g#4mt@Yb7!TIE}fh3P|Laaki(1_`SY@FMWavD6+W52&5aR!>SQBUO_H$^j?F4ogo7 zHjj!ID9L*DlM7mJ>+@bYc=08iq1Lw#;#Lf!DkdS(j7LC4XPeNcRc+N>U#)o!~oB&s?GOMH5_T~_r88LK`_ECRH#=Cq1yAIQ0z z%X~SjU)Ze;TE8wi3q2t~1gBuVDH_r-a|N;WOKS>*Db(Q&5+@8yznfcMuX;)<>90kG zQe?5m97kp?qV~K;MT!)@6d?-N`=!kl8KvL* zgq@8n-Q{>XQ9s;=JJC8cQXFpdY;&#`?)_-?`tMfZHe?+vCdq``?su%#ohcd}=%U2l zFQ2Y##-_MXBfIJkD_NLN5lj*&RmU{r50{e7xtP@6-7`^}GuJ0HIMK7Li)FBYx$S7jqyKH-Tq5{nzN&c39Y%ajrE0wmeVRb zvhUPy`Hgf|j~bMOrZv_yS-}JgS4DlqHma7_!V+B9Q6VLeX<6Vhum&$NBqn6K(l|vS_{?Q1?D^bhUW?wselUJ-ydUS- zgzB8&JmMG8AnMV0LiEwEbAS*$hTz`NXYu^}-SqGa?hz_?>}q}u(Sv#jt2 z`3X$(6^Pt@h5O>38;NdHks9fw!AM!cO_(uPqx#DHm^?Pq>mM)t6~p)@je07SQ&Ji5 z*n9_{FYiiQNg0+Z$?!=TNt8Gg3rqHegCI}mWkq?QcAG}}R-)G3rmorwePr4$U@fx0 zTpfJb-dO1bl=%s<08Ld*X;_DX858OVLUZaIV$0;%c`I}ipcG8W4yJh*;JEM5ic`#Y z*(ova0)&E>J!eXJ&~zKG%chc9(U;oFf?mZZyoCd_s%0z+RZgF@CH{P9QgCp9u^iIh zJeac^TVgJo?6Is4*4#z@dapwiz6De}iY0YZqaB}tss3&5Ak}Loh1M!xF zwkybTqA;bRgyI>?9|Dr`n_aV#eT*bqz<}O@2^%@O87g1XBp0g3Z$E_cg2p(yk-eJ@ zHPyA`TBi}tiLmTC0KFJY{8YCK>^BN6=7)HhZIZ1-U9rBBeDH97*x+ucfS;ympkKHf z?OsWp-6YBiHyWYY804GBh4tWVY4^0F)ta2RWZRJVZ;<8js1q6Qmfkm_@tzJpb^-l; zVrU2JMc@>bAJt-@;+^UGO3eEYHO<`YU|*qM_{`Q6X=BKett^Lhs(+#p)K;9c-Jt?Z za=I;bRO`J#r`8T3$86XvNuIPg2OD)ja1Iq%5)N}yo&#F}7xxqZHeWcra99w9{h;8$BFjty6 z)YRn{4V}@ajeM=cor2;+dPWKGOgZ$9xot|Hekk+pa`oSyOrOR8K=VA(AR~TQ-#~6 zv*H;~ykYO^{AyVFgIikVZ@JUuo(fQPwgp^|LXTsbpaWE2?FToZ+OvN5n@fk`?A6ay zKk{hc!E7jm?EHn}RHS{)#!uaMMAxhDQo?Az=9Zr2%W~~*-tZ9)yX-LGO=;ny?DSLl z!Oypxvm`k8UcV81yM$9~W27HtxT1b;f%1}WgfG*8M!!c`$y8~LE9}^}f0LY79NOct z;qi15gX8bD%;Wv|sKdoQ^pgc5)C0eK9Lm{v2e z;aN}mjBtSHX9#$R|7=p% zvH6>c^I5GIVDyi`_uJmYk-!;AE$3~dg)22G^Ly?_p3t~9UpzUlvefP4su{}vs!&)` zxu9^YAp#sRYH+tVNXK4+_0wVH4BEHrDxvuwebeRtsBen+f1+=~d*Ey>i1PY~Nbtmg zyv8&%O&xj^% z8!ugAPFMQc3A6L7%+2SXx~E=kTk0H5wwU?Jlzmct$wA9uIdwl1j7Xlr$x5`u<5=x0 zwfeL)3?nmN&O$x+$**n6f^tYhGe(-^33}SPIkZ%qwM6MMjeV-{X+jR$3+O zLMc?i?EN~&$6*?CW})wQF3xzxF5WSBnhZn}Z0qR`R%d=Z%4W#f|x9Y*JD(1PmK>1)F{q_Us<7O#Hde$#)0G*P~T zG)HybJ~AJJ{8W3uLE_?zn82ExOx<3Y(xl0nctifIyxz&X;pMN3;Ugq7~ya^|}jifP1p$woF101_n4QaIEz0Ejy?G_>g2%v6`UK6DzehVx%+Qr;Yn2JPjO<;|j$^4|28SHI z(z^>i`hNSGr9cBiurk3Vx>S15nlu*m<6Gc+8cYJs=|nLBY&lOuUsUObk%XGqM<%D! zOs(;S85^aNEpMe77C~&)71A#*Vq?3r1+M^>C7dMac#{9sH^=dO$>kSU6Gc(c)G#% zwOqF8))VRB8D&7pg^bOjJ(|1tNNcAHFXxu4->3+}pwmk4Nj>}v)MTB5n1u9q&;WA= z6fH%bf*wQ8`#3JRf#nP|myUE*C z_OY2ybTl$2?*@MXN7PBuq!%cC?S?Tla}?F0^dh=^0uykkvmae89}r(kQ8R%kHp9gN zo%6rY6Zox(L6C%}7tzkWZyI@w>z4?iFUf&ga-h*_Y9(m)6co7uAmJSF7ga&@ zAdAPmL24i?+}sWFU$@I;vc$)m-`zpMlz6&9%%&O?apWE+w^MCaS-M?ca$Z=RI7x?> z+`tlk3a=i;q3qJiK3y`d_1@@Y9UtTi&9_=Sz3tcWm?xU%hz0*7bxEEVWajr((L6I> zSaNf`WMa&PCZ3d(+zx^m^;inH^2%xDlx)WJ@!4ny`9okU?Iox)H+O*`laLh6=TC($ zjQ2XS>x1zAZEkvj*tSSaHAlBI@7%F-CVmgiO{jJ!4w<8^U*7KH{&ToAm%goaz4H6xvmOea z?Q$C{GXoEGgf~sFd4i7~f7u&cTFgR(B>zTkBvf;fXKoge>RePaAHOi&e!}09`s(3u z@mt<&Mv~O?;10yY+`nB97v{NZ2p;Jdu(zHu8J5C<*n__!s}Dxps-z;+X&q!^`3ZSs z%#LJL47U^Wuu7qhg{jHI>J@@SxFZztgTUQrIU`^NYqdrsi{SIHUzi3ef07$?cU z1=B$4x~v!^P`rn_CrD4E&kFTbk;KMuszfLbYLaozx32VPc^Z6=7*=u{U{d>Ng_++B z8ydUHY=b46BT9<7lf;3YgvpUv%%D)a!+GP(zr$T$SfF#gWdsjgfq@esui3_4g&?nh z);uCFgZ){k^cYUzso>|`kEydlgQneL8*|erxG;2JUj1KI`0c87erH6*XipctYs0cv zk6j=OGiEmydCcJ%?t~MWj|5&TK+6ePyGrfwwJAjU* z`MRx0TUuM?62h=>r{y(x>A7goJU%wAcJx6~fo+1C-XZ|u$zgg(*5e zw(=w`Gi5zLr2>KFlwVhg;T?;;Xr~Q~*&Q^&ILWA?FtOHFN*e5^iO+&M0I0*%g3Hrk z!u{69W)q(8&+Hup1&kd5=G5@=xy-i2R6<-5M(?oYLy}F`9+FM8^Q+Y{sc&^tg{u-r zNO*+iqBI*cl3hRt@-V$OkuUU-$(#(yBIM4k9J>wyiapB;gqbTp*athX8u_w3?n%}X zsC95#udX_>1b%}RmgIPBI7#&T=`@uyazJpP{kOX5!*=>x-BkRoZb~~xCq3SCG`V(_ z5xOHC^e72&0BDUbWm z7^tPS-XwwE{%03pj}CH3L5&#nZh_-1%zLJMd-B&EnDJjkEsi52eZffX_3@L(;7=hj-|8k96WBA& zI$+WE3)s!a^35B$;(C+YEOF2^j={l9iMq_`2K-tGg}3Glx_0%0EKwMjVxqdAKgU9m z-t;T=d_U&r{I`N*4Ruvi{CQBX@D2r<;dQN1I$qO)0N*L<(B2CRSz0KDbk+uP**=}< zwS;rX_u!ol^U-Yze?^po+@SHe7MUW;4O4RFx{md8V>Mp2ZkyU<#!wc57kX=Ad;OdS z?PvRPyUCN$mecm`gH@H1I)t$vN#_egz{Zq&6b;OFBbnaTM z?c$j}JxM@5)LaFh1-U`aV}h|~8FQxM-jksYI}>&M4(0U*QtM#-w_4;U?-Gq`6809N zCL{!xs+099_g7W)%R48R>P3X-J4Y5{`HPEd<*Kk*BCLK}w54x0PK7B~4u@`vg7o~e z)V!sZs>fvB?9XJa<6<>Yx{lA^@(|{y7IF)HJb=?iz!yMfgm(zzl1nO=52ABE|Wz27@exI%) zw~g+B>ae+bT*>Nfr^(nNZQLHoe`G@Hmg}8vc^UQA4?<6IfqZfWg%j#5E`=Q4vZRsH zO&9>c+{!8h_3Xpm06H!6(9oIT+;T-2)o?#=6%#4~jdWG-0J9hJn5Md@Bpkbu%%k`l z9akqNWO)4>JmXRd=BB>YO%(sAo2dRx-DL2Ox+(Inx~V|MVJ)AW7_PDviyM`6qEkk3 za>XXx24NsU38@_f<)FBFojlxB$J7qZ_>eoX!scr;cC6&DObOYsyvnvS!JiJH`q_@OY(1RmiB3n8Ow9CWn*IKBEl7#}< zK#mq_y5fduggE#7SZov#(Idm#o{E$B8m!-@}G7f3Gcb+l?%kr@ro9S3T{t$yHm>o|9=%7aIzqPt<5G8!e9{{2X*Jv6#h-`ny&k_a^CA7S;6jhT(kTw5l z#k)2+(Zp7_uW9=YDYrk=_RnP2u*;rcL|&3S8I2w3{)$P=5aQ_-A2m*NG=1 zTSq}z^TYWI%h=0Kh}RGJ4%w(rnD(94y=G4xbsE8M?+lVLda7#7one*JE=-C}F8ck9 zE|=&ZchlT%#>8)xE!>gk6#myW;GL2moA+Qrn>O!Opk;P&&^S|0#p!s)h$WG}i4wY< zy=Ljcll`gbf89;v(%Gb>c0l zF-Nb$Ev7pf^BJ;@Q}%ii#4Y6Ql|JBWbu!$S*TEGxzAn{A|0(c7#UZ_+T=F(Huf4*FO7 zPoghkN?MIy{~UWyl*6MkeVdzJT>jNy&h($bvZjvTe&v6-Y-6&HT_!zp=+zySww?{z zvec^N2ADXGM5DMxq-wE6YKc8!C1%!&Y~uaWRH*SuQl2gWfwed9<`H%f1lU&35xup#tOPDJ65cwR%1yz zkH?_YrUW%@N|QL0ro0>c4samGVHrp%Vu5Yc4!C%EI-?o6qbr`5%!8(N0*e0 zi3(>N+R_~cSY&6RAbLGc?W69c9j?!EYY{)_-Ku+fzY0V+@wZho5yXUidN zrC83~Jq|X-a-G=EzYnpyjZ?l^#eV(0OS4-W7KdRUy=(7MyS;jUR{&!AE~!vJ008hm z{?)t2^&ffH{>57J-yLDTpkw!nUVj~7J{$?Q$Qn7XLrvT%vzfZ2d-=j6fhKG8-{)wTc5XDcQcs5&>z!U+J`2R6D|Me9iw%`g zmm!|ltK1wUI$Mt*Q0PzAOLdyfU<{!G^t{cLC(f3#Q_`1wnj2nL=+Wy-DdVkq#YpU; zoys4@+N90So@RWCinRSO-eE0GPwGsiVRq1E7d?DLn9CrwDJOVHkIGCL>rka=N$vFv zEaG|}7id{P_eB$|E1Y_Yn#Y}Ui%k{JPkX5DNE{C&K=t@r?!tan$4(sIrC9<09r zFT*^=k>gDEq$GXm2E{{y9fU9e zw=*K}G51;f?8G~xPR5Q={C<5R70lJ8MT<7^G0gx(dunZ^C~E-ZiUK9PgS(~zwkf$O z(L(@jt@69dRDn@-2f9&N!W0H#4RT8lac>wLr& zu=9QuZV=qQd$pXH5qQlEY-f<&}6vIXUAZ+nOq2g>MXySviL zaoZ?Uf-3l%uO7Zm-%zv5z&CD^=5P)kChm`?W;5Cghg{kNv0kiG;h{^x906L4ZP0vV z0>Awp7aOfV|nbG~N6=fiJI<6j=HIuI)LjxxYdfWNLw79R|BcaMNK!=*? z^6dyJ;ou)K)J)eLw%4Xkw)wEu!z2UvC+;Ae-vLfw;lFTS)$@1t;uMyK6LZF2B^ktR zZB_D;87C9&je`DjYcj#B``T={X=T`{FvfjUy@1kHXF3Nx3yrJz$wD znSJa3Mnv-cy;Lp>1dX?X7<0O~opS2aYCX*?Ot*Qcl~ei~f8Lh6_y}-b+1g@0brY36 zxAX;fLLl42oL2;XBLG?pNf;9k*%RgUzDmDoSEzs~B6b zuKn4nt34HUe5@+Sh`it-p-&dcYao~?9^2=S%%ZkmSr2)5cTykd69S1^MDH{@-d0}3 zRPUlPk?@lX={qo8W%ALc#OtdX0+J7Hyb0X6RVuZ0rxN2kvMDcxNtLyM1YD1yha~Qj za-xwZTIWAVaAQRmqNb$d!q#keJo z=app^E@?$?I;VOPhfBu&wP?b{kv1U>9xk`Lmn_AsMu*cQv&1nBDJ-w*T-qQ{+JR#Y$+QCCV^U_ z^ZyA`8g(17eo@L5Q^9y6;~KvdQ8mMjc%wqdJzzQkyL&EqZ-cUkyyNiisAe0sQkN(`BUI~(=S{oj=xBbf5slIR9HVSKSr3#_VBS~75gqC9_IszJdtQraFSp2Bh zW<6@k6Te+5r`DUeEDcK@*RR2FK}c|dFV2|T;2Z&4n#DQM^YWv5ha}auJdd`(!PRsq=4^>a7CT8Ar2ltQ*t2-W4+t3%S zJ~-8ue~-{)7W6Lu2(r{<*FRC*7CZr{qOcbv1pj2e4`t3xE-2z^5-H5|Tqytp5HGIl zqRmo@7XB@p+@}|n*Q8hePl2E{LFWQHa=b=EH`i+uQ@2uk5P5NiaVx<&{Qbwr50NP2 z9s+pgrBGUF=ezdl(W~gBso~ft)=x%h&d$(x*fRcRlB2dOKH+wIMk*02cE_S4Pv!`< zs&D|u1pYMn*M#-meJZ6?&MBYAaF^uWsMawxVk!^D_y^-O^kcdv-FSrXJh2G2-iL*l z^@MvTe<;G5LT#@>7e4Q@G_r~{&$@J)NBSIdh3+8p0$rmhj;gM!F<9pr@MITv z{uh#wqpW{A9|I{b{h`hG{(h@)DlMIhp?EmRKh{xhQ7KlHM_aDDv-ial^7bXX^N8p% zCwAG3*YJvp(~!MoGq-K{_S{6=gnz#B;_-^`xjlSTVONv@}Ip!gN`V?GIzFK zip+`mjVcpYFL0L`3jt8+-deE7H)EKPPh~Q+r%AE^pU#C1_-m ze%>5Lc$v9;wRC#1eA&4*hOL?(7lRUwo~zs}Xu7J8j~YzdISKjqJeR5!W-)|RkA3#n z)tWdlqRBH+k$BD(ljD|j=k0VA)mKys4uU1_%Ixn_trM7r_aSbeRH-xkPxPr?8=4C4 z&SG-*Ke}HD_oG`<2Jzyt7bD5K&>-ok*@l4?jBW0!RG|l(<=yUc8ojvX2`eQIQnxxh z9-2Dj-UTt*c8>?}qPs(9RVtP7u3hD7kh-^?cn1H_Eejl=RQPdhaa3kxLWNb|+p6QQ zYbt~osg>ry8^nhkuRboTmXCM_9M4B4OR~J!Il75#<-aUMs?AIHDPJ6Gb}!UfWyU#QO5kox8BiGg{ck* z^fJ`FE$r+kv~sw^q^k;h^t!qzymtbnG^Yjed(`SQsbdk$C|;yK`Cw_~FW=lBdywhw zH^+UfR`KQde;j+5H+$-f!@JTJp=Bi7jBvBSmo~bQr}rUPj_enkQ;A5*BUaQe^^#je zGU(y^HrEG+IowLbuEGWI^{@IU+NZNgcx5zG_49cOCv=t&bLXB&jy?Nul6ELl&WXB; zOUvV>zA&+5F@8mAuEO7u`p!@j$vR$mEi~P9mfu&9k^a;G9d<2fWjtYkSAkX-L{uq+ zqf!CBB)RRO?W8T{g%>hCN~*@A$q(?(mnCt=d+mK@yWH%F$D`E(4zS9x7M*gNEy}T{ zS?r!tuv)a&7zv`S6PXc?f&*OFnpBuFoDH2aEj@zqmncyURyj4zudWBQ+FT|DF`2rO z*IVR1tF}^3n`>p5EmDMj)}qZNzgbXEprW5(Qkx#$yJ=O*AbN#0fmor4p@;Y^RTa|8 z@~^9;;uKJg!v&+oD=098intIpOXs`kwog`1n7-qQpPn=>iHI^S?tQixORAPG^nQw3 zQVe=ZEVBa-VK>tJV)3~NLcZ*90EQOl7Rx31dl3IkF|?7g;%XPIVokO%&uO&m{+cl}^nipc&$=sLH;J3|vZhGI!h3 zPH7Fc9{J%50eUcxzQ*KX)bFFab1g0NjSKx?#v7iu3X#(QNL*tR3KHJw*-xSjAMdRH>Y(LouLh zky^czO^nOAHg+*WH+)}KYi{?T;pmcbOT6XqPi_bycbxAr=R9eaStq~a)(EtB?d_HI z^>~o?(={Re!neLkJ#p6I}~xB1;kw(0t{Avb-B_Gx{t^9G4~%G zi@F*h7B*9;3S_O(DFF>+xe)-*8j{PHangygWnry2l;O%GZ| zr)(Gk;8)T2)e9ZaPGE@$P)$ljgzcAv7VU*sC^@hD=?oebRE0+_?FOJ5U=PYYXi$*$ zBlMz~goA>KNj3^p2e+YA*7^;;Ql{2F`%DFdJlA3I!DoWuJX47pWQw7RGFTJ|d86=D zZTZJUbZhEhBhwvMo07k1noeetj(BC)ve-V%HqpA!7KnY6=Ek7A_X$jq|Y z#v{k$R0|cVoPHf>hehKs?znX*2!=PJqA+T1?Y<6Fag#JBl4w&6i(PPMydLN9>=ahI3>5)jFm>&e5`K*je}9Gj3bs z&g$Zx)q{aEEIDIFD_(Uz3g~z}@L&a2NY`3DWp! zS|VYmCw!41_U`!l#Qng1d#G0^KL?HpW=5P=Bo0xyPhPOs^Q@cFnO$>Y_bD`==Eg8- z`;m4a^{6*|Go1kyLaLBQkWCRMZYa81fOxcUsfbTtki*+{^k=%V$0QIv;uKu1Nf-bv z7%v8hSNx52OjGBP!iFuX5#l2)YM8bDUCUbx5!GO*Cd00S&wj8vn{W8~;@P+o{u9R{ zKoNVcpMn977NK7H;1{AxOMPZ*mMjj5sDN|WiQ>GeOx3D?W{9Og(`536MrZvh-<6ZF zra>PCa`x#hM*#gLfIR|cCjKTxkiTo^g{)hthpiK0x zQ(OP-l`7rQn*yh#4oDhP3fP=K^tw13h%3#&05Y-?1nf?(t3(5NIjU$N?a%>WELG}( zmj~dNH;a&kWZWA0%2^S(8CbMeC_gLndiRuljc!9+e-w~cJ@U?kGl>ovhH|D2FiE0B zT-OoiKw+*=yd5cl%)_=|jn^sop)?z4(ib5x3rZln?N(8XLf{>&cM&nb*w6UcZ4yW0 zLRHTc^9-6h$O@_;TWJG>46@}|ZMq-9myEp#?-m*bQ^U$HVDJ{(USQU+$6G;#a9qn! zN}jz46y%*oW?S;~qpHjvt|u*GVX|po@_TB}jD|Dq`|)75#QeMLVtzbsn=+^`l*n`| zpJ!}dzx6I^gE~Ld4m#Bif_R#~4mYBfu5>Ry*sKh6EeyXPX<=(KbWg^-U`^1XuG*H9 zH3)cG&9zzRx^tN6Xjc}NrgG0xztS`bI-%~2UD(_NydP&Qu0nLo7Tp-z1^v`TymsVM zryR%}^3CiheqqCI&o=Jr#y5tX!L|sQ%2RdGZ!wVAeBdlq0lanwo^+*MnxwY2*`L=X zZ7T=%deh$^x3#8nkJvcrOk!1t!{K|hC9|SA+aGca7Px<`V@gec>=iCF*05>3xX^I} zmhGTuCXO0*AY>VHW>dT3s`lfS&Dld3(yqhEdGBL=Xa+M4t{q;ud)(1ZQ8CF4=aA@0 zaixo}YEINmBo0Qr(bOEGcNOu3Ns_B6vCo=!ILypj;nr492$FB?U-#r&)?r=y=9ZTl z`!G2pZm2YpNVn=7?g+*B@LKtHuxC3Yg}sd3_vdP})w=6%;3iy{u5yq{AxS-l=&b9; zOL^xJC%HsUfxqKWM2k&V2ri;9I_Ew^r(^5_Z;Xr>;fz)f!up&LKdWk~h6+d3F)q!a z+=FyziR(%nc{~?Vh|gY{i$@=l0G8{(pkL{k6?%1i8M3P&tsLw;_ZIxtT0#*KuK*iP z!%R4;qCW$zafcx`L*Qb|k&Xt>+qb}o7f6pa;w}Cih9UcYt)EQFbTo?FNi9b2Cc`PG zc^{;#By>J-mtEYD+*4h}#OTr}3^ZSX%LI3OdvP}k+8Wa4Im`NnKYFhuQ4ki!n;f0n zF*rMDvZ&clUu2xeww-2Q7FVeURBR%oJK`58+g_jziGN z>xl+mGo&(Ta=~|Z&cRwwgP#sc%y60Jqi&}!v9sA?+`sopBiaQ}_&$C3;RIA%6uskm zpX8C(APC;L1OG*^y4JRYx>g0ZM)Sw^OxRtH_$^&bEjIX4+6<2A^Le2+7j}+E7D(F~ zuGx%VD%S)5nW?D9>%{KNi0ZC3mjy~Ug5NQ96M|WSroJKGV?(psq*RHRq)X%>+XLQc zQ#Gd}xZzOnx}C;#!t+v7vM1(YN`~g$R={^WjcZECP42C1%o)`K8l-vX`Z<_!VyK{n zq;l64+w4Rwb}vUz$Jr0Y*2gC5a53i4(BLxY5R%H@NsgVV8h6H~E%%eX)OP4RRm^3y z-3`t?KvrkX=b*2Zw6&UL@ZrAcKICd?MwM*5KU(IF9x|PNwNj@4Rfc~r*DB#mW9@-Q zLDNz#JYEhd&b{4g&EP}&9l=5EJ1zGKRuL1{3bmeyC!758S679shoxM{$4@lseLpQ0xO8_D<7_vs4P|ZW zIJgg!R+MXxTY80|foG3$ZSNR6*?_ku3}_FRk%4U$eg5!;61$-(qYBJMy~ox$82y|v zezKBwwU(Z|qkOcY&N6Nv#dq^%`hD|915w*@6-}nVq><({Kr0;>=BaT1Z6!$f-67f z&}#H9?zkxzPoX|H`13OMO`lAW$s-SGu&HK!l9LIE=xYbH_p~>p6N#;5#fa@n)_q&V z5TeyKwvoV5gGTbt>QY^KZQ+^q+-4(ZgBFQJ4OKjI*4OBow~+4nDN)+{_u!eU(aQmk ztWG!-Cwy6NkU6L1EZL;2RpVGcNm!*ZY(W#@{EG{$OmN1%jbeYVVt<_!qkTT;SM8_q z4y@1XGqMS&%$ELh3z0t%Vea@yxJgRng~#v%%FKC6v<$|xNMbv<(qL27!SqKS2RKFK zt-}wwumOz5OLJmmDoC^@oQQa&igxo*6S(nHv?6FbB-3Z5oE8o~w15$e`_);;I(Yuo zlxxg!nP9uuxhoKNJZc2=ugaM2KweTg`<^3mxX)^x`Hl+&KJmh_ouZBuedO1sA!MJr z^L7MdMEB@1eP$#o%WLxO`13umr*DA+37qXL^*UQaZRal=j z)5hauAB;zcH|eo&tlEeg{7duiu?@%vJC3XI&oSH;mqm6HG`!`}lGgr?!a z`HS;%jc)7Ni($0M!$Gru!z9KhYjdF|VfkBj*9ND-WU+8s+%2rBru{aII8*a6*h%$n z!>=8EBsExL)t_(6;=eXw5~_-(PLA4yO78v-*4`;fw*bh}Oxw0?+qP}n&b(>czG>UI zY1_7KTa#7QHPh2;P0u{cdHK&;=lze^5qp2p4}&)H%X~(_ds&cZXXx{tKI?pr3rf4v ze_tL3P_g?vm3%%X;f!(n40{tvSwLUHDx8#foeoak@A^Uys^TRy#hLYVbp#>yR~MNQ zFaNSf6swoY(B5wUAgg1c&^?hum5jzXqR~3EwJ!d5j+D}Np|$V)-VLHF|1XGXb3V~$ za0O+lGwE7oaULy${VvLk({E{vfV*^_7m zW!C2u{9xzbA7kX30TXM2nyI9z(>J;HMPxgpW2Pw2_-t@p#O279e0~Z%pFEPH<1%wb z%K>xd#Rst7B4P69j&{wmi;PiLdk^Hyh7NZ;e)nRH4D>5e;cCwl(sFUe+ zN6jhN0Kn!W*vee=l+gRe_h-A?COXcK$gJ1tG>J>e`JVuJ{qZmqvVx=1F|cF~Vm8N` zj=s9y9|5P>*8T4(2+iN5B6DRgxXW-walGg{4kHBXF;v~_L~Uh<^MP@ed03NH^alN$ zs~+Ev9Nfz*+|T>VjlS*gsF&9hSGzvDAY4%#ppd{NSKy9&?!9pEK%ZOUnLS3BN(LwO ztr#FJ)zM?HC~HLjV@ns>9n1y$`HDTl$s%Vg()4K-Lf*AYGf>%X`Wal~QAr7UlpMBr9`qf0Yecq7Msb=^}ty({~21*+4<-^O7ttP*zsPru>l zz0M1Z?`zSy8dihYmLhkqQ^vv95lt|jMXfh>?Em{mV{v0=A`-YCJ zMAvwxLq(4Gem&kZvNijA`el9@ z5(d_?_-qoQXD7rA`TV2fmLGncKZJp#MXVxeE*@X1pao6dP2YT0rdg>g!reox$eby6pYZ_Gt z@8{x|{rSYIfkfyp0%-2PUFNC;CsnchTKA1R=msAUWs}ZzFp{8NEz) zdGs*koCaLyY5;9N(lbD3d;dr`%QB+=h4fOaSVchs09}!5qbQyEE3v(cb30m$RNP!N zsoc363l0>sZQYr8wH)WAWF%xdBTbbHkqmaqx?dPc3U$I}{Lj>J^E!|HH<$K52;>Xm z`<=S!KT*=sRWq(&m1DYIoyN~Z(v)amV|k3#)JPJL-dxyS;7~U}uK6mE-qSZP{u2tQ zuJ<8Gm#|%Q0zE-OIWjW~ z+1wI4N8wZ-+{jAdIV^u!)IhII7h!WXuu!C+NlTg(77K$N4v6n>9^q4l{s0|wjbLtS zk}O$V29zFAD>H0N|Dl?S_)UO7NQq{OOb>~D37sjOx)U8cKemy6#rEo z8ZOHd0mS>la|kydOPSw%U_#>DrNuPmoA8Uc#c7R&aNgGH7eO00{+^hm5V@f#1!_#T z;3Tf8LvRlDGj+BsU&$(tSQlwjUl33^5=^U}?n0j- z%yw!bt%NpJ#HAs!>5H3;N{E77;^f!)!@eF`9V#wBB;yiUZOT*Rjc1~EGJT>+hsvsq zplTIYoaeS0uzKa9ENEMs3YEwr_?KkB)fGS9s*iHi5Yb6)7B+^v;;;=1{5PB=X!DBM z##6A@;>zeFZ|I`kr(%$sI@zhRNm58Wrb>OK3j`=$Z^N6xo0TYsM73XnAKad=JFT`^ z3(yFYL+!rm!{-pTkul~Nr<5$AgFz;Y07n*_j30vs%Y@LxOsyUyQ-DY|R>H@EE*3{h zT7)(9q?ZEZvtAg@Jgk!#Ay~pnydYo+XcG`|IRWC8K9>{f<|%J(kqlBaif>>A?Z45n z_fa8~7k)4igc6dO0$zUklHk7O?~7QceBoe`OGndHf>czkaJZ4V3$#o8Z&#RtjM8n) zrPVDb9*Heaa}+uk9yHD(Lw|BkOs}PRQ6CZ7Nd@dAdDmJQ0h!Q8Hnl)#8ZDpV!G4qx zD2!o@;e;tB{!GM66d2W51mtwv9)RNty~W?9_XzoP#0)j=uC+Y&;&k9 z;znvPU>Wtdj@ISnUVIfUpNq(RE4{FFx>v1CEhmmBF(}fXi^c+E;8;bJEGq`a0t$v~ z^V;e}dyd?iX*2d5oSGfJF*r3jRd#9^IrO>BKj(^BxHgMhig&DWYWdRnzGc-x0;!n| z*rm)x{kMTKrg37-EUy)4a*A*I_T9B-%|cF;^-pgKA@d_h-C|dpQ(pT55!}hj-EUJY z*8$`XaTb(9z`Tl?)>XX{#+FARwk*|Mkk<0I6xlY2ou#E8+mK6Lij&B!DheMq&&PC%F$ zIk%pxcsp#s($uSYKiywrXki|T_kZG93VayxRluaL; z(K3UJYFbsrnTHA1;;wdz76(`klc`5D%D~{HN+q!jaI>IQU}ITOu`-!2(d7xoIwcNg z3_)d$$cn6ZRFFBNg1j;hLY?uk{X(or>xiTq)a>YJbncV2huJReThkjyAGp?O++ORP zyqg~M^xo|^OPx;7z;-8~qdjz|U#@~Twa{MjeuDPbM}EWHUZhWc71mzv!%ML2PZd#K ze~mmbC!?h1pumOhu3!?YaFO1=D?$^3Ci@=DKls0#Ai(MMaCrRO{@fb<91(uKTUL9W z{HW&9kgruyVktUN(`V^lbpLhOdd`H#SG>ZY5KY8=HGQp1pt@izQDFr~8vpC4+BO-w zQ1ONTAKvx(vZAscC;)&}hX1)OZU~N(`0a%M&xh{!&ECnJ-te~zwlJkPwzsvlw{xbq zw5R|5wREv}qW|yq`1fAh|3KILU*P)yIzS>ydfOGcmaxI!vqhFTMc1J|R2C7jZLMOR%$!5E zxXkAFMvhQxzHUQzoP7*%3s?!YO;#ek*+@Qf&Tp81rUE*~-!BT$Sc=l9spxFiGE#Vg z$2(XFzi?<<7Z}alUpTZd25OJz!?~@uz-LumB0E2poxsy>sOd`+yHt8zqNz`gi4}uF zh-9$Tt-40B;mM$^;DmgiDK=b^x`UH*o3=dffR=9L{x1_cW^^^;uwPOEIzN;l~UlLisUDy=)#4)~df~Bs*(P{x14BIYKzrgz9#nc+{x9#|c)(Rj-jeY?gShn8 zN(KLQmb2|j-~)*33i}`5+t=e^OXgEw7z{zuBnC?*RqYx?^;n((@M4ESA>Bf*LuaJ+ ztq5hI=yvVQR2RiTTd}hGJ_i$41osJCo&n?N7Bc>Uec8&nTJyVt8WT}p3WHnw z*i*9K;l3l;ic)7e;tFx!NIfPTn2bDcaFbwR?%o z0SlQ0l@bafM{N%y>j0)va)Y2soC}4HWxT?J$oMzB7PV^DejZ$8JA9VZF8!~3)Z1%# z1#{*<1>WDk?_&`ui?@uFudc8bAgx3Ee>#ew7QHBpiVMzTXLl}688| z28gyZwKL1cS6EHO@59a1FW|SNA!M2RY>46$PhHzfQ{rd!gLqX_ld~EMt$iYUrdgn+ z&b>5S%W&FM>a(g?tTrMa6qG;)WA{1=NzR8muu#X_j(oe7jQ||yyaWsbo)DO(&;F>K z-++DsxoFC>Ga8a{Q(R0mR5ok|ACo|4gf>+W+5x>p_xy$mk1eDOAG?4} zQ%jZBb(tSfD$bSmr;O$?Y*-RIsU(vF*uJ_aGawJ&-ynl2wt(9jbI&NTrJ;oOJgGXp z{6b}l|7U+~j?WrpEW|6}6~O36bhml%DR(!9IG>%JGk*G1#HXN+{5&{>TYWnl6)`dd zK|EfHs#@{}gIlKa7|dUu(M-wSh>!!-oe{FG%cBv~Jt~BHMh0E29~0Uyx5a_2$-{;v zU58R-nm195MSN*lOe3>rQyVJole49qiJYK)0W007PC@O3oLS|)f2l91zib|IL1z^; z`x1=({Ug9jZ!@}QOLL=U&*Wyloje(aw;YuL8i4ettQ1WJ30Br#S+qX{?zx3bG1GKD zV*kT1=lhaOfpt$zf)Z&QpCOeVyW~WboCK1nZe*S})lo>t$p1VakvYY=6bA^Nmn+<4 z*=i0~tHKX0g%VW>IU99#?I+Et*#YD4g|7JvNa>Ya>6dT4kM5an$G8@&#vjey(v~iI zh{~Sb@m}Tcf2^;L*0%@C29?@Dnnu2*=-`3@H|N&|#8@?Ld}Vg<%Y+X8yAAivhwd^h zDx887nShZyMd-BG?`V2F{2pJ=7;rBy@cKM{9GmVq=_>h+|JKSLwWq4N7qQcSlw*_9l101 zH6I8=mhZJIUo2f1dap6|iG{`(R75PyGEn^skN0eW7FIHE#+h_!6DDt5308@4J0;4@ z2RlVNQnE??D2lDl&#E{Bw7S~~kRcqypnt$P5R+&M`g78ily+yLv4GI5Wqz2=qiD{h z4a*qr98~8aoPJV8L%Z2yXDJVr3s_h&7nr`kKkWU&<7oK?U`lllDF{i&N?FE^Y{)|7 z(q(SbFw1xIejUCyt-D?TUux zC1|#SBLcheqv5;FxWpJLW(6`7o!_4bO)v*X!fy4!t@ue5%leAq-@MK6ft2y9%TE{c zznhavrW?x5F>-^e@S$5yzkx&AUWk}rK^II0EdiB!rKVA%lXa{r5*rus#CWWCmwg(} zfnNr;Hwa;B3^@J;ZEW+;{IRdpz0vtK@5(iav5w!T(kT1^0m;bE3ZxMe=^A(%r|$zU z9>lwM^UlZDz^uismJPcIx9B62`!dKDCU%4Gl-=7(r?ge5(N)TBi6{TX}OsJ&Q{VJ#=r->C->F`mO0t<{X?$%z`~2qDR13)2|gKaxe%s@B}8wE1WIv2 zR?X68xyLPvuAqI*$<(|M@BF}#pe;j6E7JM-F@8GvySwblPKmc%_XHGP1X1=rJb0Ee z%sYdB-ByOMBfZ@9kfAdWMa#!;Gp*RMC5tB)u`@6t97)wtu!(a%{m90B->%M4g+%b{ zbuyM#0dtiSm!#)xjytKm*xyCGhPT}}I|w3O7o%&0S*hTvkKl52rRj^-b!re2nuEBQ z36lQo+4mb~^&!iP4_tQO1|hN5Iroq-Ug){3f2#oLW7TE)(58x`CBGGj)Q_dOM+U4qO?JOLCo=U{26}K zgU*(yH>8X(1ozzK;}dr6w-+V>kN0BAKVhi=BFC{EEN+aWbW2}tY*0D-gzBmrNiZ$t zv{sDdQy?|PcW7==yty?oF+8^)I{BJG*{I_7Y5KiMw6@+Kn1K`o>npbgWIR0rI(jD- zK4sE3Jo&QO9)T%7N6k{rlF6mt0I!|BQu<_>=7#@p691KZGKrnemrWeT_weAluNMF` zL96eE!oMB|JpQ$X*+~6PTL=_%I)hkd-bQm;xOdK0o!)C!Y_Iw$a1{9Km<|`pqCG!D0w`QH5!!-6tb{9R ziCF6B*ZgRm9X1G7emB}+&8duKYb|4_=>UzCP>{$pUKbtCKB0y9@n`?U+xz($`$<3i zco*izYhslfTUTXZ9y&L*SwXkT2t_<{ittiZGKyE-+OLEoXnhNECp@2dZ!n(#9VW!C zy);v0)OD@mn(&qad9G4&W#gXUr?I0Cu`KESiaF?gX&rI+MRdHtt=6+kfobENRH!u^ zT0noONn>3rIjYS@sF0k*O7g$WJ=)s=o0{7VN!hMF5kEb5?W7)#j*6YPKq%ZkS!_o0 z$`BT|)gy<)4k!^dg)qaIuli)-^Dn49=v<)G|6yd~UCSKIVZ+v`D%`*Z32RPLi`u7n z1dlbv<(9LZGP5?ea|ZX~!+-;~XCvRrW^^ZsNoZV-Qs{Zw?3i_UC$16ZJxs%%qh~MB zw-fovWG|2N+hv>o~G%YR9yt#>_WMPO0Y1M%Yd}f?};SAN5`7-Zf!l zy}cj0bLY?MADf#Sn?S#jkB!yO-CuF%&W`@7bSUdv9`H#*`HuIXA2E|e38Cgh2Q8;V zM6UDQ9krsZ`E1Sl}O_^Xg%=1CGOGuzY5m>AV-VZ zx%~Gg2iMyE;CGYb2Uj>MUTZXP<2@A5b_X2J1&_Kxz!(cLMqg3qs$1)ng-I`z|un|VC; zD#H8P{_+ls^^rOOLB80Gv%u5E6wi3F`Nur7a;c)#YoqYHi?f^Y#Cy-%mMfWQv$4$< zhD%)ErQ;N;wx;?|bi3|9!gYcXr<)HjH_<507MoY|fVL2jMY?ZWNxb*r_;#F*PHx}F zx`2{%^_|^U<}~0g@rAY{=E;xXxoh_wp9i0p82=GS_uJiQj@QMbZ{l_C=c+TDLPA}d zvWeL@2;Apx!I71d5AhPKO-`rq56HLGGwf)7uJkF!W3YXOCOpUS^nhc&oTnJQndl#M z*V8dEB$J(gsI8!UC1eglSK_Z>vOfEF9H;u#;L=;HV1fF$Abz7TSDY?ZkR>mJ|9JP; zUmq-5UQi8nPeXkW#Bx8RKbQE{3I8%!?;Bt%qVvud$C2^rGG4yK%FJQx4z@!#pMv|% zUcJ7WMT?nR@U)AmkNkW)cq8+uN&y4RF4kiJrz+lzdjZI4jy9tSBw6#y(EPw%gTIHW zkS`#`Bv0zq%MV@*XNDRDegK>XY)Y#U=R?5cRZgEFUYiY?g_ZH{QL;|-V!UZ4QmT)ts6;ce)GbCiAL z2D@JfCMXwMbH-l#(fO`iaE-*Sgjg2-`G(*(#+@oA{#JX(QI=}Sk|>^34upybI%+yp zVJWqu$_&oDrQcgj)8ThBsF6Oxlr`WAprY6WI!YWM+$RE9QqJ?jQi+?*0RyF);+cR& z1S5635tQ`)^ly3`dJs&MRyVLv(BVV@UM5u<7dHA5X6<6672dqR>FdR|a?5>Vz|{=E znds0{Og_^UfhKa>0XRx%W$ci~N=ITURnNw3+^~C zob3cIE`>u&!^fMs>H@la2{9yZ>_Qz4s(JVMhyEH(a+>pK$y;}tW6awxFbv{7M}CI! z?f+9h;4l?S=jymhf1ps1ksKeKDaSa}u9|wam3AHMd2{eS)=N>=@gvR8L%d4qg~ka6 zL1Vx~Q<~@NzV08$o6H_kMfD-P$yDmL_@wkrr`QPNNRIG^KrX!Te!79AfP5L013LP9 z&Fh=tO1jZb-Ce@#ZJ{#B8z0}}&EtWB3_}lRXS*Qj;EwSe9Tb#ku)jNjaopIDC`Pc{ z6ed0!9}G>EiUkTb5-}7HO6!~v#3QUtPB5&BD7HDgayDww|DW?EvR#{U78^BJOX%7Z zK|@PPtcbQIh|RY$9{{n`A+GY^{ISJ7bqe#?n4W!IM7qP6&R2AS}13$YC<5YZNQF zBd;`Dp5l3j>$6@LeRf3rNxJ_o4!)s2F}tBMjRRjI{)zh{Tsyweo88m)OJ(`Wfi5eP`x%@G!1( zR&ac9A5uJlG*vmh40K1>Me;EV;hlNbgs$WPK*xv>*3Q&Qb5qDt8sT!pR>)t_lHGL} z;%SRy%s|UuAjd_VWZ0?-1peT_Y(zAWdFf1-+YfJKkO{yn#DeZI#PD3`7U+P+Ko`FC zO5$k3J;u3Y64=ub#viL8bX;6U^;1xA%6 zoxxdWLP*eFtxNcYI$ga{2z!Vaws>;AR!@Y2%vChxp{zH~ z=mR2rLEC%#BDJy=N(Eem4c9<)37{CUHFhKH_+bZgub>FQEC|`2q)NLEhTvWfqRuL3`zs{!4+u2;LC+g<$^aT zSGDfq7EyfqMWQhaZq3(!vyy=d_Pod2Y`RrWHG#x>e67*(-$9v^a z3GQ?j;cQ@S*@Z-Wy0+4yR$8M$emLEF%74En!^s1p=1H4ry%Fq??Nuqir>*RyI&z!} zB3wN2b#r3%jY3=Na5KGb8Z;n=fVFNSQ_&uwX{rz zZGSd4r)3g_?(OO zY_O)b0!4PTp7iLI8-@O7Hwv}pZ0#m*N5Abx!#msVh@Me6;naq1Hk+nNZU2^A%Tn}5dV9Q6|WY-2{% zfE~)GnH>EpJv9Gg`ltpjFQUl^LCduv)P`;fHCUfEqY_-|($)eysu<1c*w^nHbTI+- zh@i#Z-S1np{7~gUy(G0Yon0zov5`m{#R}!lLb=354dLySEz+Klz5-)KilXUZK^R;J zlI<8&1QM^Jp}84zRm`L5p(0}xDxxTI-_p@cqDj#vCN1I0yW8R~joMoQhO@Ji7-P$L zsq3Xl6l4)?gZMFZL8M;_zhdc#T$e$X+vJ6T?3MpcN4wb=LchKCdFY1AdC6p5LsYr*A+{-+ol^DVhKW#0z z4e1GYSQ^w|*uq~^0nN5nn2%sCY$4h6H3-#39@^s?gH>Ho2E1VDiXiQ2qv0Y!G)ZG7 z=@S&=(t*6-#j4}-2n?4k2B%!gjs|#Z-b|>Xwq|f`P^!g`d0x?eakhvwiVh$iY#p?5 zRp3I{QFGO~2hATXTI+`Nr$ZNSZ{ImLT5E^c)`n!&Y|dpq9)A@LV$J88C@!0HKU{ga z-r843G1Nm5;~O2W+Ea$zhgu10>hhkJL1-8NvI(_eX^BP%it_?T!6z}rJ`c5%b2Qxo zvhi{>C0goJX~vU@NlPYYo-ShCT<$*Jxw2wPH61N1)U=XK1?=MDVm^r#;p6t)K;B%m zEct)7$=r>|oD%>M=FDl|yNe(^adPT_Oq=;zA9k*2w%HhVxno>G>W?So~6)XSZ z`mDsV0U%Xpi#)4NaVxf0=AJ+1OK}dt!H9Y6ZyK)PH!HK)e5Mm=z z_I8N>#qJvuk_)QeYuFFZmJ&gaAwi+Sh?sOj-2+g}C!y{K0-K=;6O~fMGg3(bZZa@v zKm~0}HB%=FgAvb(X{M(3oNZLdt&&@Z4qeTn%XhsDr^Y}%YAASU%x(v_U`G+8j$Hf_ zQ>KbzRDB>;WLW7p318a0dZY=T(>>Oks05rq$&-+%JOx7Y%UtcLWk9U)?i1>$etZY>O2WYXGT=m$QcT6>N zO2dn|o1~U_Hp@7i7Bn$pQ?y2)5ULUe?P-6Ue5r;NPK3E|Ii1B*)aObj9m`uzCJTnF ztvE>g$hWxr#Pnd1$0sb^699Sg3bCMbk|4jJFL|w)y_`>F>0!8 zZV_0}8SeCXC0yZqZ|UX=bA_=SKTYYqzs_AseGAwY&H8RS=3zXgKvkF2V4V7-qrO7~ z@8Nx6a~?eHGQKYa52!(qM_F`EJ$6NSOJBVSc3ZpH;uR+o=COKw&dEP=Grwv7uO)tG z6wOTY_hMq%-ieXlFK&y^Be76j4st~ZAW)t;`W?RXyNN+JwB{0B;)dO5d8WX31LQBx zvEANJ#~U|0g##TW|Ji?U`M5_ocJeX`l`YyHyML?>(f=y-B59r%&gb zX`i5ktY?Ld+Q$tCxi^ZJP^}R|0zF>X6iWHEDf!ztPe1>2FOAeyxft`y?_+oQ-;L)v z|3ArmK^qrSCqtKCrii?ev#FDtsnh=m=xZwMDnj8km{8V_u?Qlo1XA zfab`O(kI(AJA!M@SD60EGWq#4eHLYx>fLv50I>+Os`PTUaPs~n%k{o+=GyTP_m}y; z?cpeK)0?-g(*n8BP}9$Er=@CPy1etQZ*zk@d-j2g7 zll|+q?|f4$$l}zuPG{$2(S>NlVk!1}(ITFjtF0cN!jfedD3!40ikAiU+%N*L8TXaB zC_y&fD(IWf=%8foxhvdDv5*mEP6TN{z zD(O3ox8+E+Fr>c{@zu~r$^9$mG&15UbJF>=^}_c{d>C6HCNwX@3?=q7j=N}$B<2hE z9$yjF4~QFNE+cja8}=^9$jTKFGZ$ov-zt^V#Zpr4H=jR(kIQEF1?%NV{xQtqh|$_X z=Nf*KP|gn}$^J+_o9Ss{XqcB&5ev4k$bVSl?7cy_a#G~%BU}^f$IaQjtGruXv21QN$4`$IHJql8FsOb6j5cerXfLfi|c11NUX}TjHv@IWc*BUC_GEW zp^%pHK)d;(IZAxGVx!z#m{92%43!ow?ntc8=p&4w*RMWZ=dCc6J|`Iz7b?u1m3ayz zcA=$-iH1d9cKLxKoI0vI)!xaNA*!~Q~DV*{k)ncWT83&^aMtVl&0!! zzZgiEpROplCObjG@9o(FCKDPictVd`B+MFtlW}t9qH! z*qIw+=ken>UG>QJJRi$9X;b#R+Axo1*Q9Cw5OwbzMkkDwl!$t9ggwHZOM|6XAXc=mnVSv zYT}@S+sSK_lWdBKCrBY7bXW%J%pi|N%lV+t%*`S1pn}0d2}d^?Lr8M|VH_x!mqNx4 zDxcV>e9wyim7^`9Q*^33=VNn6-GiN}c|GKR}m`P3H!rT!Uh#py;28T;yWy^0a zN9MzCig;It>`qvM%%Q{ng`xzN#E1y75Y>-`w97^$XXZ=i?5}Bo^k028o%2*2s)KN$ zU`S{p4N^EYk2SlfLB5aIe(Xv^82u4ckqTf-Di7{C;1h?hZwcY z#Ct|@40JaWgna=>Kfo&M-`f-uUJV;X3~yDH6c$So zBjgMcfc*?`F~zj$e8EVkJ_!4B`5S=*?9H z8hHXb5kKVn=Y<(0LiNB1Dgb2gU$LgfX79dWx+rehNCCAJ>NJ5*p|+q%uLb!6ME*rT zd!xj{8`yx0F Gh@T-aen!sWE&6Tge5rXlu+P4g>|+$?!<> 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

hq@od{3JjhV58{F4Z%M%A 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%0A`FtVA5p{OaC|go?8&)if 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éM5s?K1M_USkb_#rp-v?F!&veC8za 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�wKss_Bu3xywA2P+T0=)z+~51 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

a{d1)cT7Ud7Bt0gM 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

3S0Z8UzSKei?lZLSJ_tFs%tanX9aD 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�m}#9Q1_(u{aG=Zw>P%4ec@-%mEeh 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

=OFbY;7HbH>7Y#za>Jk^dL}9!o>Uij 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 literal 0 HcmV?d00001 diff --git a/WebContent/WEB-INF/lib/commons-io-2.5.jar b/WebContent/WEB-INF/lib/commons-io-2.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..12349182711347e3d0b66ecfa35ec7b69a023b7e GIT binary patch literal 208696 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 + + diff --git a/docs/licenses/Apache Commons/docs/allclasses-noframe.html b/docs/licenses/Apache Commons/docs/allclasses-noframe.html new file mode 100644 index 0000000..3772c42 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/allclasses-noframe.html @@ -0,0 +1,125 @@ + + + + + +All Classes (Apache Commons IO 2.5 API) + + + +

All Classes

+
+ +
+ + diff --git a/docs/licenses/Apache Commons/docs/constant-values.html b/docs/licenses/Apache Commons/docs/constant-values.html new file mode 100644 index 0000000..4dc961c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/constant-values.html @@ -0,0 +1,264 @@ + + + + + +Constant Field Values (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

org.apache.*

+ +
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/deprecated-list.html b/docs/licenses/Apache Commons/docs/deprecated-list.html new file mode 100644 index 0000000..59b8118 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/deprecated-list.html @@ -0,0 +1,473 @@ + + + + + +Deprecated List (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/help-doc.html b/docs/licenses/Apache Commons/docs/help-doc.html new file mode 100644 index 0000000..dbcecf3 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/help-doc.html @@ -0,0 +1,220 @@ + + + + + +API Help (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Overview

    +

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    +
  • +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Use

    +

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/index-all.html b/docs/licenses/Apache Commons/docs/index-all.html new file mode 100644 index 0000000..8252b9c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/index-all.html @@ -0,0 +1,5802 @@ + + + + + +Index (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
A B C D E F G H I L M N O P R S T U V W X  + + +

A

+
+
AbstractFileFilter - Class in org.apache.commons.io.filefilter
+
+
An abstract class which implements the Java FileFilter and FilenameFilter + interfaces via the IOFileFilter interface.
+
+
AbstractFileFilter() - Constructor for class org.apache.commons.io.filefilter.AbstractFileFilter
+
 
+
accept(File) - Method in class org.apache.commons.io.filefilter.AbstractFileFilter
+
+
Checks to see if the File should be accepted by this filter.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.AbstractFileFilter
+
+
Checks to see if the File should be accepted by this filter.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.AgeFileFilter
+
+
Checks to see if the last modification of the file matches cutoff + favorably.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.AndFileFilter
+
+
Checks to see if the File should be accepted by this filter.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.AndFileFilter
+
+
Checks to see if the File should be accepted by this filter.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.CanReadFileFilter
+
+
Checks to see if the file can be read.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.CanWriteFileFilter
+
+
Checks to see if the file can be written to.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.DelegateFileFilter
+
+
Checks the filter.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.DelegateFileFilter
+
+
Checks the filter.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.DirectoryFileFilter
+
+
Checks to see if the file is a directory.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.EmptyFileFilter
+
+
Checks to see if the file is empty.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.FalseFileFilter
+
+
Returns false.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.FalseFileFilter
+
+
Returns false.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.FileFileFilter
+
+
Checks to see if the file is a file.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.HiddenFileFilter
+
+
Checks to see if the file is hidden.
+
+
accept(File) - Method in interface org.apache.commons.io.filefilter.IOFileFilter
+
+
Checks to see if the File should be accepted by this filter.
+
+
accept(File, String) - Method in interface org.apache.commons.io.filefilter.IOFileFilter
+
+
Checks to see if the File should be accepted by this filter.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.MagicNumberFileFilter
+
+
+ Accepts the provided file if the file contains the file filter's magic + number at the specified offset.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.NameFileFilter
+
+
Checks to see if the filename matches.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.NameFileFilter
+
+
Checks to see if the filename matches.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.NotFileFilter
+
+
Returns the logical NOT of the underlying filter's return value for the same File.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.NotFileFilter
+
+
Returns the logical NOT of the underlying filter's return value for the same arguments.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.OrFileFilter
+
+
Checks to see if the File should be accepted by this filter.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.OrFileFilter
+
+
Checks to see if the File should be accepted by this filter.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.PrefixFileFilter
+
+
Checks to see if the filename starts with the prefix.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.PrefixFileFilter
+
+
Checks to see if the filename starts with the prefix.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.RegexFileFilter
+
+
Checks to see if the filename matches one of the regular expressions.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.SizeFileFilter
+
+
Checks to see if the size of the file is favorable.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.SuffixFileFilter
+
+
Checks to see if the filename ends with the suffix.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.SuffixFileFilter
+
+
Checks to see if the filename ends with the suffix.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.TrueFileFilter
+
+
Returns true.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.TrueFileFilter
+
+
Returns true.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.WildcardFileFilter
+
+
Checks to see if the filename matches one of the wildcards.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.WildcardFileFilter
+
+
Checks to see if the filename matches one of the wildcards.
+
+
accept(File, String) - Method in class org.apache.commons.io.filefilter.WildcardFilter
+
+
Deprecated.
+
Checks to see if the filename matches one of the wildcards.
+
+
accept(File) - Method in class org.apache.commons.io.filefilter.WildcardFilter
+
+
Deprecated.
+
Checks to see if the filename matches one of the wildcards.
+
+
accept(Class<?>...) - Method in class org.apache.commons.io.serialization.ValidatingObjectInputStream
+
+
Accept the specified classes for deserialization, unless they + are otherwise rejected.
+
+
accept(String...) - Method in class org.apache.commons.io.serialization.ValidatingObjectInputStream
+
+
Accept the wildcard specified classes for deserialization, + unless they are otherwise rejected.
+
+
accept(Pattern) - Method in class org.apache.commons.io.serialization.ValidatingObjectInputStream
+
+
Accept class names that match the supplied pattern for + deserialization, unless they are otherwise rejected.
+
+
accept(ClassNameMatcher) - Method in class org.apache.commons.io.serialization.ValidatingObjectInputStream
+
+
Accept class names where the supplied ClassNameMatcher matches for + deserialization, unless they are otherwise rejected.
+
+
addFileFilter(IOFileFilter) - Method in class org.apache.commons.io.filefilter.AndFileFilter
+
+
Adds the specified file filter to the list of file filters at the end of + the list.
+
+
addFileFilter(IOFileFilter) - Method in interface org.apache.commons.io.filefilter.ConditionalFileFilter
+
+
Adds the specified file filter to the list of file filters at the end of + the list.
+
+
addFileFilter(IOFileFilter) - Method in class org.apache.commons.io.filefilter.OrFileFilter
+
+
Adds the specified file filter to the list of file filters at the end of + the list.
+
+
addListener(FileAlterationListener) - Method in class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Add a file system listener.
+
+
addObserver(FileAlterationObserver) - Method in class org.apache.commons.io.monitor.FileAlterationMonitor
+
+
Add a file system observer to this monitor.
+
+
afterRead(int) - Method in class org.apache.commons.io.input.AutoCloseInputStream
+
+
Automatically closes the stream if the end of stream was reached.
+
+
afterRead(int) - Method in class org.apache.commons.io.input.CountingInputStream
+
+
Adds the number of read bytes to the count.
+
+
afterRead(int) - Method in class org.apache.commons.io.input.ProxyInputStream
+
+
Invoked by the read methods after the proxied call has returned + successfully.
+
+
afterRead(int) - Method in class org.apache.commons.io.input.ProxyReader
+
+
Invoked by the read methods after the proxied call has returned + successfully.
+
+
afterWrite(int) - Method in class org.apache.commons.io.output.ProxyOutputStream
+
+
Invoked by the write methods after the proxied call has returned + successfully.
+
+
afterWrite(int) - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Invoked by the write methods after the proxied call has returned + successfully.
+
+
AgeFileFilter - Class in org.apache.commons.io.filefilter
+
+
Filters files based on a cutoff time, can filter either newer + files or files equal to or older.
+
+
AgeFileFilter(long) - Constructor for class org.apache.commons.io.filefilter.AgeFileFilter
+
+
Constructs a new age file filter for files equal to or older than + a certain cutoff
+
+
AgeFileFilter(long, boolean) - Constructor for class org.apache.commons.io.filefilter.AgeFileFilter
+
+
Constructs a new age file filter for files on any one side + of a certain cutoff.
+
+
AgeFileFilter(Date) - Constructor for class org.apache.commons.io.filefilter.AgeFileFilter
+
+
Constructs a new age file filter for files older than (at or before) + a certain cutoff date.
+
+
AgeFileFilter(Date, boolean) - Constructor for class org.apache.commons.io.filefilter.AgeFileFilter
+
+
Constructs a new age file filter for files on any one side + of a certain cutoff date.
+
+
AgeFileFilter(File) - Constructor for class org.apache.commons.io.filefilter.AgeFileFilter
+
+
Constructs a new age file filter for files older than (at or before) + a certain File (whose last modification time will be used as reference).
+
+
AgeFileFilter(File, boolean) - Constructor for class org.apache.commons.io.filefilter.AgeFileFilter
+
+
Constructs a new age file filter for files on any one side + of a certain File (whose last modification time will be used as + reference).
+
+
ageFileFilter(long) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that returns true if the file was last modified after + the specified cutoff time.
+
+
ageFileFilter(long, boolean) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that filters files based on a cutoff time.
+
+
ageFileFilter(Date) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that returns true if the file was last modified after + the specified cutoff date.
+
+
ageFileFilter(Date, boolean) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that filters files based on a cutoff date.
+
+
ageFileFilter(File) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that returns true if the file was last modified after + the specified reference file.
+
+
ageFileFilter(File, boolean) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that filters files based on a cutoff reference file.
+
+
and(IOFileFilter...) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that ANDs the specified filters.
+
+
AndFileFilter - Class in org.apache.commons.io.filefilter
+
+
A FileFilter providing conditional AND logic across a list of + file filters.
+
+
AndFileFilter() - Constructor for class org.apache.commons.io.filefilter.AndFileFilter
+
+
Constructs a new instance of AndFileFilter.
+
+
AndFileFilter(List<IOFileFilter>) - Constructor for class org.apache.commons.io.filefilter.AndFileFilter
+
+
Constructs a new instance of AndFileFilter + with the specified list of filters.
+
+
AndFileFilter(IOFileFilter, IOFileFilter) - Constructor for class org.apache.commons.io.filefilter.AndFileFilter
+
+
Constructs a new file filter that ANDs the result of two other filters.
+
+
andFileFilter(IOFileFilter, IOFileFilter) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+ +
+
append(char) - Method in class org.apache.commons.io.output.NullWriter
+
+
Does nothing - output to /dev/null.
+
+
append(CharSequence, int, int) - Method in class org.apache.commons.io.output.NullWriter
+
+
Does nothing - output to /dev/null.
+
+
append(CharSequence) - Method in class org.apache.commons.io.output.NullWriter
+
+
Does nothing - output to /dev/null.
+
+
append(char) - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Invokes the delegate's append(char) method.
+
+
append(CharSequence, int, int) - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Invokes the delegate's append(CharSequence, int, int) method.
+
+
append(CharSequence) - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Invokes the delegate's append(CharSequence) method.
+
+
append(char) - Method in class org.apache.commons.io.output.StringBuilderWriter
+
+
Appends a single character to this Writer.
+
+
append(CharSequence) - Method in class org.apache.commons.io.output.StringBuilderWriter
+
+
Appends a character sequence to this Writer.
+
+
append(CharSequence, int, int) - Method in class org.apache.commons.io.output.StringBuilderWriter
+
+
Appends a portion of a character sequence to the StringBuilder.
+
+
AppendableOutputStream<T extends Appendable> - Class in org.apache.commons.io.output
+
+
OutputStream implementation that writes the data to an Appendable + Object.
+
+
AppendableOutputStream(T) - Constructor for class org.apache.commons.io.output.AppendableOutputStream
+
+
Construct a new instance with the specified appendable.
+
+
asFileFilter(FileFilter) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns an IOFileFilter that wraps the + FileFilter instance.
+
+
asFileFilter(FilenameFilter) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns an IOFileFilter that wraps the + FilenameFilter instance.
+
+
AutoCloseInputStream - Class in org.apache.commons.io.input
+
+
Proxy stream that closes and discards the underlying stream as soon as the + end of input has been reached or when the stream is explicitly closed.
+
+
AutoCloseInputStream(InputStream) - Constructor for class org.apache.commons.io.input.AutoCloseInputStream
+
+
Creates an automatically closing proxy for the given input stream.
+
+
available() - Method in class org.apache.commons.io.input.BoundedInputStream
+
available() - Method in class org.apache.commons.io.input.BrokenInputStream
+
+
Throws the configured exception.
+
+
available() - Method in class org.apache.commons.io.input.CharSequenceInputStream
+
+
Return an estimate of the number of bytes remaining in the byte stream.
+
+
available() - Method in class org.apache.commons.io.input.NullInputStream
+
+
Return the number of bytes that can be read.
+
+
available() - Method in class org.apache.commons.io.input.ProxyInputStream
+
+
Invokes the delegate's available() method.
+
+
+ + + +

B

+
+
beforeRead(int) - Method in class org.apache.commons.io.input.ProxyInputStream
+
+
Invoked by the read methods before the call is proxied.
+
+
beforeRead(int) - Method in class org.apache.commons.io.input.ProxyReader
+
+
Invoked by the read methods before the call is proxied.
+
+
beforeWrite(int) - Method in class org.apache.commons.io.output.CountingOutputStream
+
+
Updates the count with the number of bytes that are being written.
+
+
beforeWrite(int) - Method in class org.apache.commons.io.output.ProxyOutputStream
+
+
Invoked by the write methods before the call is proxied.
+
+
beforeWrite(int) - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Invoked by the write methods before the call is proxied.
+
+
bindStream(InputStream) - Method in class org.apache.commons.io.input.DemuxInputStream
+
+
Bind the specified stream to the current thread.
+
+
bindStream(OutputStream) - Method in class org.apache.commons.io.output.DemuxOutputStream
+
+
Binds the specified stream to the current thread.
+
+
BOMInputStream - Class in org.apache.commons.io.input
+
+
This class is used to wrap a stream that includes an encoded ByteOrderMark as its first bytes.
+
+
BOMInputStream(InputStream) - Constructor for class org.apache.commons.io.input.BOMInputStream
+
+
Constructs a new BOM InputStream that excludes a ByteOrderMark.UTF_8 BOM.
+
+
BOMInputStream(InputStream, boolean) - Constructor for class org.apache.commons.io.input.BOMInputStream
+
+
Constructs a new BOM InputStream that detects a a ByteOrderMark.UTF_8 and optionally includes it.
+
+
BOMInputStream(InputStream, ByteOrderMark...) - Constructor for class org.apache.commons.io.input.BOMInputStream
+
+
Constructs a new BOM InputStream that excludes the specified BOMs.
+
+
BOMInputStream(InputStream, boolean, ByteOrderMark...) - Constructor for class org.apache.commons.io.input.BOMInputStream
+
+
Constructs a new BOM InputStream that detects the specified BOMs and optionally includes them.
+
+
BoundedInputStream - Class in org.apache.commons.io.input
+
+
This is a stream that will only supply bytes up to a certain length - if its + position goes above that, it will stop.
+
+
BoundedInputStream(InputStream, long) - Constructor for class org.apache.commons.io.input.BoundedInputStream
+
+
Creates a new BoundedInputStream that wraps the given input + stream and limits it to a certain size.
+
+
BoundedInputStream(InputStream) - Constructor for class org.apache.commons.io.input.BoundedInputStream
+
+
Creates a new BoundedInputStream that wraps the given input + stream and is unlimited.
+
+
BoundedReader - Class in org.apache.commons.io.input
+
+
A reader that imposes a limit to the number of characters that can be read from + an underlying reader, returning eof when this limit is reached -regardless of state of + underlying reader.
+
+
BoundedReader(Reader, int) - Constructor for class org.apache.commons.io.input.BoundedReader
+
+
Constructs a bounded reader
+
+
branch - Variable in class org.apache.commons.io.output.TeeOutputStream
+
+
the second OutputStream to write to
+
+
BrokenInputStream - Class in org.apache.commons.io.input
+
+
Broken input stream.
+
+
BrokenInputStream(IOException) - Constructor for class org.apache.commons.io.input.BrokenInputStream
+
+
Creates a new stream that always throws the given exception.
+
+
BrokenInputStream() - Constructor for class org.apache.commons.io.input.BrokenInputStream
+
+
Creates a new stream that always throws an IOException
+
+
BrokenOutputStream - Class in org.apache.commons.io.output
+
+
Broken output stream.
+
+
BrokenOutputStream(IOException) - Constructor for class org.apache.commons.io.output.BrokenOutputStream
+
+
Creates a new stream that always throws the given exception.
+
+
BrokenOutputStream() - Constructor for class org.apache.commons.io.output.BrokenOutputStream
+
+
Creates a new stream that always throws an IOException
+
+
buffer(Reader) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns the given reader if it is already a BufferedReader, otherwise creates a BufferedReader from + the given reader.
+
+
buffer(Reader, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns the given reader if it is already a BufferedReader, otherwise creates a BufferedReader from the + given reader.
+
+
buffer(Writer) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns the given Writer if it is already a BufferedWriter, otherwise creates a BufferedWriter from the + given Writer.
+
+
buffer(Writer, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns the given Writer if it is already a BufferedWriter, otherwise creates a BufferedWriter from the + given Writer.
+
+
buffer(OutputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns the given OutputStream if it is already a BufferedOutputStream, otherwise creates a + BufferedOutputStream from the given OutputStream.
+
+
buffer(OutputStream, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns the given OutputStream if it is already a BufferedOutputStream, otherwise creates a + BufferedOutputStream from the given OutputStream.
+
+
buffer(InputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns the given InputStream if it is already a BufferedInputStream, otherwise creates a + BufferedInputStream from the given InputStream.
+
+
buffer(InputStream, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns the given InputStream if it is already a BufferedInputStream, otherwise creates a + BufferedInputStream from the given InputStream.
+
+
ByteArrayOutputStream - Class in org.apache.commons.io.output
+
+
This class implements an output stream in which the data is + written into a byte array.
+
+
ByteArrayOutputStream() - Constructor for class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Creates a new byte array output stream.
+
+
ByteArrayOutputStream(int) - Constructor for class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Creates a new byte array output stream, with a buffer capacity of + the specified size, in bytes.
+
+
byteCountToDisplaySize(BigInteger) - Static method in class org.apache.commons.io.FileUtils
+
+
Returns a human-readable version of the file size, where the input represents a specific number of bytes.
+
+
byteCountToDisplaySize(long) - Static method in class org.apache.commons.io.FileUtils
+
+
Returns a human-readable version of the file size, where the input represents a specific number of bytes.
+
+
ByteOrderMark - Class in org.apache.commons.io
+
+
Byte Order Mark (BOM) representation - see BOMInputStream.
+
+
ByteOrderMark(String, int...) - Constructor for class org.apache.commons.io.ByteOrderMark
+
+
Construct a new BOM.
+
+
+ + + +

C

+
+
CAN_READ - Static variable in class org.apache.commons.io.filefilter.CanReadFileFilter
+
+
Singleton instance of readable filter
+
+
CAN_WRITE - Static variable in class org.apache.commons.io.filefilter.CanWriteFileFilter
+
+
Singleton instance of writable filter
+
+
CANNOT_READ - Static variable in class org.apache.commons.io.filefilter.CanReadFileFilter
+
+
Singleton instance of not readable filter
+
+
CANNOT_WRITE - Static variable in class org.apache.commons.io.filefilter.CanWriteFileFilter
+
+
Singleton instance of not writable filter
+
+
CanReadFileFilter - Class in org.apache.commons.io.filefilter
+
+
This filter accepts Files that can be read.
+
+
CanReadFileFilter() - Constructor for class org.apache.commons.io.filefilter.CanReadFileFilter
+
+
Restrictive consructor.
+
+
CanWriteFileFilter - Class in org.apache.commons.io.filefilter
+
+
This filter accepts Files that can be written to.
+
+
CanWriteFileFilter() - Constructor for class org.apache.commons.io.filefilter.CanWriteFileFilter
+
+
Restrictive consructor.
+
+
CharSequenceInputStream - Class in org.apache.commons.io.input
+
+
InputStream implementation that can read from String, StringBuffer, + StringBuilder or CharBuffer.
+
+
CharSequenceInputStream(CharSequence, Charset, int) - Constructor for class org.apache.commons.io.input.CharSequenceInputStream
+
+
Constructor.
+
+
CharSequenceInputStream(CharSequence, String, int) - Constructor for class org.apache.commons.io.input.CharSequenceInputStream
+
+ +
+
CharSequenceInputStream(CharSequence, Charset) - Constructor for class org.apache.commons.io.input.CharSequenceInputStream
+
+ +
+
CharSequenceInputStream(CharSequence, String) - Constructor for class org.apache.commons.io.input.CharSequenceInputStream
+
+ +
+
CharSequenceReader - Class in org.apache.commons.io.input
+
+
Reader implementation that can read from String, StringBuffer, + StringBuilder or CharBuffer.
+
+
CharSequenceReader(CharSequence) - Constructor for class org.apache.commons.io.input.CharSequenceReader
+
+
Construct a new instance with the specified character sequence.
+
+
Charsets - Class in org.apache.commons.io
+
+
Charsets required of every implementation of the Java platform.
+
+
Charsets() - Constructor for class org.apache.commons.io.Charsets
+
 
+
checkAndNotify() - Method in class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Check whether the file and its chlidren have been created, modified or deleted.
+
+
checkCompareTo(String, String) - Method in enum org.apache.commons.io.IOCase
+
+
Compares two strings using the case-sensitivity rule.
+
+
checkEndsWith(String, String) - Method in enum org.apache.commons.io.IOCase
+
+
Checks if one string ends with another using the case-sensitivity rule.
+
+
checkEquals(String, String) - Method in enum org.apache.commons.io.IOCase
+
+
Compares two strings using the case-sensitivity rule.
+
+
checkIfCancelled(File, int, Collection<T>) - Method in class org.apache.commons.io.DirectoryWalker
+
+
Checks whether the walk has been cancelled by calling DirectoryWalker.handleIsCancelled(java.io.File, int, java.util.Collection<T>), + throwing a CancelException if it has.
+
+
checkIndexOf(String, int, String) - Method in enum org.apache.commons.io.IOCase
+
+
Checks if one string contains another starting at a specific index using the + case-sensitivity rule.
+
+
checkRegionMatches(String, int, String) - Method in enum org.apache.commons.io.IOCase
+
+
Checks if one string contains another at a specific index using the case-sensitivity rule.
+
+
checkStartsWith(String, String) - Method in enum org.apache.commons.io.IOCase
+
+
Checks if one string starts with another using the case-sensitivity rule.
+
+
checksum(File, Checksum) - Static method in class org.apache.commons.io.FileUtils
+
+
Computes the checksum of a file using the specified checksum object.
+
+
checksumCRC32(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Computes the checksum of a file using the CRC32 checksum routine.
+
+
checkThreshold(int) - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Checks to see if writing the specified number of bytes would cause the + configured threshold to be exceeded.
+
+
ChunkedOutputStream - Class in org.apache.commons.io.output
+
+
OutputStream which breaks larger output blocks into chunks.
+
+
ChunkedOutputStream(OutputStream, int) - Constructor for class org.apache.commons.io.output.ChunkedOutputStream
+
+
Creates a new stream that uses the specified chunk size.
+
+
ChunkedOutputStream(OutputStream) - Constructor for class org.apache.commons.io.output.ChunkedOutputStream
+
+
Creates a new stream that uses a chunk size of DEFAULT_CHUNK_SIZE.
+
+
ChunkedWriter - Class in org.apache.commons.io.output
+
+
Writer which breaks larger output blocks into chunks.
+
+
ChunkedWriter(Writer, int) - Constructor for class org.apache.commons.io.output.ChunkedWriter
+
+
Creates a new writer that uses the specified chunk size.
+
+
ChunkedWriter(Writer) - Constructor for class org.apache.commons.io.output.ChunkedWriter
+
+
Creates a new writer that uses a chunk size of ChunkedWriter.DEFAULT_CHUNK_SIZE
+
+
ClassLoaderObjectInputStream - Class in org.apache.commons.io.input
+
+
A special ObjectInputStream that loads a class based on a specified + ClassLoader rather than the system default.
+
+
ClassLoaderObjectInputStream(ClassLoader, InputStream) - Constructor for class org.apache.commons.io.input.ClassLoaderObjectInputStream
+
+
Constructs a new ClassLoaderObjectInputStream.
+
+
ClassNameMatcher - Interface in org.apache.commons.io.serialization
+
+
An object that matches a Class name to a condition.
+
+
cleanDirectory(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Cleans a directory without deleting it.
+
+
close() - Method in class org.apache.commons.io.input.AutoCloseInputStream
+
+
Closes the underlying input stream and replaces the reference to it + with a ClosedInputStream instance.
+
+
close() - Method in class org.apache.commons.io.input.BoundedInputStream
+
+
Invokes the delegate's close() method + if BoundedInputStream.isPropagateClose() is true.
+
+
close() - Method in class org.apache.commons.io.input.BoundedReader
+
+
Closes the target
+
+
close() - Method in class org.apache.commons.io.input.BrokenInputStream
+
+
Throws the configured exception.
+
+
close() - Method in class org.apache.commons.io.input.CharSequenceInputStream
+
 
+
close() - Method in class org.apache.commons.io.input.CharSequenceReader
+
+
Close resets the file back to the start and removes any marked position.
+
+
close() - Method in class org.apache.commons.io.input.CloseShieldInputStream
+
+
Replaces the underlying input stream with a ClosedInputStream + sentinel.
+
+
close() - Method in class org.apache.commons.io.input.DemuxInputStream
+
+
Closes stream associated with current thread.
+
+
close() - Method in class org.apache.commons.io.input.NullInputStream
+
+
Close this input stream - resets the internal state to + the initial values.
+
+
close() - Method in class org.apache.commons.io.input.NullReader
+
+
Close this Reader - resets the internal state to + the initial values.
+
+
close() - Method in class org.apache.commons.io.input.ProxyInputStream
+
+
Invokes the delegate's close() method.
+
+
close() - Method in class org.apache.commons.io.input.ProxyReader
+
+
Invokes the delegate's close() method.
+
+
close() - Method in class org.apache.commons.io.input.ReaderInputStream
+
+
Close the stream.
+
+
close() - Method in class org.apache.commons.io.input.ReversedLinesFileReader
+
+
Closes underlying resources.
+
+
close() - Method in class org.apache.commons.io.input.TeeInputStream
+
+
Closes the proxied input stream and, if so configured, the associated + output stream.
+
+
close() - Method in class org.apache.commons.io.input.UnixLineEndingInputStream
+
+
Closes the stream.
+
+
close() - Method in class org.apache.commons.io.input.WindowsLineEndingInputStream
+
+
Closes the stream.
+
+
close() - Method in class org.apache.commons.io.input.XmlStreamReader
+
+
Closes the XmlStreamReader stream.
+
+
close(URLConnection) - Static method in class org.apache.commons.io.IOUtils
+
+
Closes a URLConnection.
+
+
close() - Method in class org.apache.commons.io.LineIterator
+
+
Closes the underlying Reader quietly.
+
+
close() - Method in class org.apache.commons.io.output.BrokenOutputStream
+
+
Throws the configured exception.
+
+
close() - Method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Closing a ByteArrayOutputStream has no effect.
+
+
close() - Method in class org.apache.commons.io.output.CloseShieldOutputStream
+
+
Replaces the underlying output stream with a ClosedOutputStream + sentinel.
+
+
close() - Method in class org.apache.commons.io.output.DeferredFileOutputStream
+
+
Closes underlying output stream, and mark this as closed
+
+
close() - Method in class org.apache.commons.io.output.DemuxOutputStream
+
+
Closes stream associated with current thread.
+
+
close() - Method in class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Close the stream.
+
+
close() - Method in class org.apache.commons.io.output.LockableFileWriter
+
+
Closes the file writer and deletes the lockfile (if possible).
+
+
close() - Method in class org.apache.commons.io.output.NullWriter
+
 
+
close() - Method in class org.apache.commons.io.output.ProxyOutputStream
+
+
Invokes the delegate's close() method.
+
+
close() - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Invokes the delegate's close() method.
+
+
close() - Method in class org.apache.commons.io.output.StringBuilderWriter
+
+
Closing this writer has no effect.
+
+
close() - Method in class org.apache.commons.io.output.TeeOutputStream
+
+
Closes both output streams.
+
+
close() - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Closes this output stream and releases any system resources associated + with this stream.
+
+
close() - Method in class org.apache.commons.io.output.WriterOutputStream
+
+
Close the stream.
+
+
close() - Method in class org.apache.commons.io.output.XmlStreamWriter
+
+
Close the underlying writer.
+
+
CLOSED_INPUT_STREAM - Static variable in class org.apache.commons.io.input.ClosedInputStream
+
+
A singleton.
+
+
CLOSED_OUTPUT_STREAM - Static variable in class org.apache.commons.io.output.ClosedOutputStream
+
+
A singleton.
+
+
ClosedInputStream - Class in org.apache.commons.io.input
+
+
Closed input stream.
+
+
ClosedInputStream() - Constructor for class org.apache.commons.io.input.ClosedInputStream
+
 
+
ClosedOutputStream - Class in org.apache.commons.io.output
+
+
Closed output stream.
+
+
ClosedOutputStream() - Constructor for class org.apache.commons.io.output.ClosedOutputStream
+
 
+
closeQuietly(Reader) - Static method in class org.apache.commons.io.IOUtils
+
+
Closes an Reader unconditionally.
+
+
closeQuietly(Writer) - Static method in class org.apache.commons.io.IOUtils
+
+
Closes an Writer unconditionally.
+
+
closeQuietly(InputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Closes an InputStream unconditionally.
+
+
closeQuietly(OutputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Closes an OutputStream unconditionally.
+
+
closeQuietly(Closeable) - Static method in class org.apache.commons.io.IOUtils
+
+
Closes a Closeable unconditionally.
+
+
closeQuietly(Closeable...) - Static method in class org.apache.commons.io.IOUtils
+
+
Closes a Closeable unconditionally.
+
+
closeQuietly(Socket) - Static method in class org.apache.commons.io.IOUtils
+
+
Closes a Socket unconditionally.
+
+
closeQuietly(Selector) - Static method in class org.apache.commons.io.IOUtils
+
+
Closes a Selector unconditionally.
+
+
closeQuietly(ServerSocket) - Static method in class org.apache.commons.io.IOUtils
+
+
Closes a ServerSocket unconditionally.
+
+
closeQuietly(LineIterator) - Static method in class org.apache.commons.io.LineIterator
+
+
Closes the iterator, handling null and ignoring exceptions.
+
+
CloseShieldInputStream - Class in org.apache.commons.io.input
+
+
Proxy stream that prevents the underlying input stream from being closed.
+
+
CloseShieldInputStream(InputStream) - Constructor for class org.apache.commons.io.input.CloseShieldInputStream
+
+
Creates a proxy that shields the given input stream from being + closed.
+
+
CloseShieldOutputStream - Class in org.apache.commons.io.output
+
+
Proxy stream that prevents the underlying output stream from being closed.
+
+
CloseShieldOutputStream(OutputStream) - Constructor for class org.apache.commons.io.output.CloseShieldOutputStream
+
+
Creates a proxy that shields the given output stream from being + closed.
+
+
compare(File, File) - Method in class org.apache.commons.io.comparator.CompositeFileComparator
+
+
Compare the two files using delegate comparators.
+
+
compare(File, File) - Method in class org.apache.commons.io.comparator.DefaultFileComparator
+
+
Compare the two files using the File.compareTo(File) method.
+
+
compare(File, File) - Method in class org.apache.commons.io.comparator.DirectoryFileComparator
+
+
Compare the two files using the File.isDirectory() method.
+
+
compare(File, File) - Method in class org.apache.commons.io.comparator.ExtensionFileComparator
+
+
Compare the extensions of two files the specified case sensitivity.
+
+
compare(File, File) - Method in class org.apache.commons.io.comparator.LastModifiedFileComparator
+
+
Compare the last the last modified date/time of two files.
+
+
compare(File, File) - Method in class org.apache.commons.io.comparator.NameFileComparator
+
+
Compare the names of two files with the specified case sensitivity.
+
+
compare(File, File) - Method in class org.apache.commons.io.comparator.PathFileComparator
+
+
Compare the paths of two files the specified case sensitivity.
+
+
compare(File, File) - Method in class org.apache.commons.io.comparator.SizeFileComparator
+
+
Compare the length of two files.
+
+
CompositeFileComparator - Class in org.apache.commons.io.comparator
+
+
Compare two files using a set of delegate file Comparator.
+
+
CompositeFileComparator(Comparator<File>...) - Constructor for class org.apache.commons.io.comparator.CompositeFileComparator
+
+
Create a composite comparator for the set of delegate comparators.
+
+
CompositeFileComparator(Iterable<Comparator<File>>) - Constructor for class org.apache.commons.io.comparator.CompositeFileComparator
+
+
Create a composite comparator for the set of delegate comparators.
+
+
concat(String, String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Concatenates a filename to a base path using normal command line style rules.
+
+
ConditionalFileFilter - Interface in org.apache.commons.io.filefilter
+
+
Defines operations for conditional file filters.
+
+
contentEquals(File, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Compares the contents of two files to determine if they are equal or not.
+
+
contentEquals(InputStream, InputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Compares the contents of two Streams to determine if they are equal or + not.
+
+
contentEquals(Reader, Reader) - Static method in class org.apache.commons.io.IOUtils
+
+
Compares the contents of two Readers to determine if they are equal or + not.
+
+
contentEqualsIgnoreEOL(File, File, String) - Static method in class org.apache.commons.io.FileUtils
+
+
Compares the contents of two files to determine if they are equal or not.
+
+
contentEqualsIgnoreEOL(Reader, Reader) - Static method in class org.apache.commons.io.IOUtils
+
+
Compares the contents of two Readers to determine if they are equal or + not, ignoring EOL characters.
+
+
convertFileCollectionToFileArray(Collection<File>) - Static method in class org.apache.commons.io.FileUtils
+
+
Converts a Collection containing java.io.File instanced into array + representation.
+
+
copy(byte[], OutputStream) - Static method in class org.apache.commons.io.CopyUtils
+
+
Deprecated.
+
Copy bytes from a byte[] to an OutputStream.
+
+
copy(byte[], Writer) - Static method in class org.apache.commons.io.CopyUtils
+
+
Deprecated. + +
+
+
copy(byte[], Writer, String) - Static method in class org.apache.commons.io.CopyUtils
+
+
Deprecated.
+
Copy and convert bytes from a byte[] to chars on a + Writer, using the specified encoding.
+
+
copy(InputStream, OutputStream) - Static method in class org.apache.commons.io.CopyUtils
+
+
Deprecated.
+
Copy bytes from an InputStream to an + OutputStream.
+
+
copy(Reader, Writer) - Static method in class org.apache.commons.io.CopyUtils
+
+
Deprecated.
+
Copy chars from a Reader to a Writer.
+
+
copy(InputStream, Writer) - Static method in class org.apache.commons.io.CopyUtils
+
+
Deprecated. + +
+
+
copy(InputStream, Writer, String) - Static method in class org.apache.commons.io.CopyUtils
+
+
Deprecated.
+
Copy and convert bytes from an InputStream to chars on a + Writer, using the specified encoding.
+
+
copy(Reader, OutputStream) - Static method in class org.apache.commons.io.CopyUtils
+
+
Deprecated. + +
+
+
copy(Reader, OutputStream, String) - Static method in class org.apache.commons.io.CopyUtils
+
+
Deprecated.
+
Serialize chars from a Reader to bytes on an + OutputStream, and flush the OutputStream.
+
+
copy(String, OutputStream) - Static method in class org.apache.commons.io.CopyUtils
+
+
Deprecated. + +
+
+
copy(String, OutputStream, String) - Static method in class org.apache.commons.io.CopyUtils
+
+
Deprecated.
+
Serialize chars from a String to bytes on an + OutputStream, and + flush the OutputStream.
+
+
copy(String, Writer) - Static method in class org.apache.commons.io.CopyUtils
+
+
Deprecated.
+
Copy chars from a String to a Writer.
+
+
copy(InputStream, OutputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies bytes from an InputStream to an + OutputStream.
+
+
copy(InputStream, OutputStream, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies bytes from an InputStream to an OutputStream using an internal buffer of the + given size.
+
+
copy(InputStream, Writer) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
copy(InputStream, Writer, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies bytes from an InputStream to chars on a + Writer using the specified character encoding.
+
+
copy(InputStream, Writer, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies bytes from an InputStream to chars on a + Writer using the specified character encoding.
+
+
copy(Reader, Writer) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies chars from a Reader to a Writer.
+
+
copy(Reader, OutputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
copy(Reader, OutputStream, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies chars from a Reader to bytes on an + OutputStream using the specified character encoding, and + calling flush.
+
+
copy(Reader, OutputStream, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies chars from a Reader to bytes on an + OutputStream using the specified character encoding, and + calling flush.
+
+
copyDirectory(File, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies a whole directory to a new location preserving the file dates.
+
+
copyDirectory(File, File, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies a whole directory to a new location.
+
+
copyDirectory(File, File, FileFilter) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies a filtered directory to a new location preserving the file dates.
+
+
copyDirectory(File, File, FileFilter, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies a filtered directory to a new location.
+
+
copyDirectoryToDirectory(File, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies a directory to within another directory preserving the file dates.
+
+
copyFile(File, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies a file to a new location preserving the file date.
+
+
copyFile(File, File, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies a file to a new location.
+
+
copyFile(File, OutputStream) - Static method in class org.apache.commons.io.FileUtils
+
+
Copy bytes from a File to an OutputStream.
+
+
copyFileToDirectory(File, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies a file to a directory preserving the file date.
+
+
copyFileToDirectory(File, File, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies a file to a directory optionally preserving the file date.
+
+
copyInputStreamToFile(InputStream, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies bytes from an InputStream source to a file + destination.
+
+
copyLarge(InputStream, OutputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies bytes from a large (over 2GB) InputStream to an + OutputStream.
+
+
copyLarge(InputStream, OutputStream, byte[]) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies bytes from a large (over 2GB) InputStream to an + OutputStream.
+
+
copyLarge(InputStream, OutputStream, long, long) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies some or all bytes from a large (over 2GB) InputStream to an + OutputStream, optionally skipping input bytes.
+
+
copyLarge(InputStream, OutputStream, long, long, byte[]) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies some or all bytes from a large (over 2GB) InputStream to an + OutputStream, optionally skipping input bytes.
+
+
copyLarge(Reader, Writer) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies chars from a large (over 2GB) Reader to a Writer.
+
+
copyLarge(Reader, Writer, char[]) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies chars from a large (over 2GB) Reader to a Writer.
+
+
copyLarge(Reader, Writer, long, long) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies some or all chars from a large (over 2GB) InputStream to an + OutputStream, optionally skipping input chars.
+
+
copyLarge(Reader, Writer, long, long, char[]) - Static method in class org.apache.commons.io.IOUtils
+
+
Copies some or all chars from a large (over 2GB) InputStream to an + OutputStream, optionally skipping input chars.
+
+
copyToFile(InputStream, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies bytes from an InputStream source to a file + destination.
+
+
copyURLToFile(URL, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies bytes from the URL source to a file + destination.
+
+
copyURLToFile(URL, File, int, int) - Static method in class org.apache.commons.io.FileUtils
+
+
Copies bytes from the URL source to a file + destination.
+
+
CopyUtils - Class in org.apache.commons.io
+
+
Deprecated. +
Use IOUtils. Will be removed in 2.0. + Methods renamed to IOUtils.write() or IOUtils.copy(). + Null handling behaviour changed in IOUtils (null data does not + throw NullPointerException).
+
+
+
CopyUtils() - Constructor for class org.apache.commons.io.CopyUtils
+
+
Deprecated.
+
Instances should NOT be constructed in standard programming.
+
+
CountingInputStream - Class in org.apache.commons.io.input
+
+
A decorating input stream that counts the number of bytes that have passed + through the stream so far.
+
+
CountingInputStream(InputStream) - Constructor for class org.apache.commons.io.input.CountingInputStream
+
+
Constructs a new CountingInputStream.
+
+
CountingOutputStream - Class in org.apache.commons.io.output
+
+
A decorating output stream that counts the number of bytes that have passed + through the stream so far.
+
+
CountingOutputStream(OutputStream) - Constructor for class org.apache.commons.io.output.CountingOutputStream
+
+
Constructs a new CountingOutputStream.
+
+
create(File, TailerListener, long, boolean, int) - Static method in class org.apache.commons.io.input.Tailer
+
+
Creates and starts a Tailer for the given file.
+
+
create(File, TailerListener, long, boolean, boolean, int) - Static method in class org.apache.commons.io.input.Tailer
+
+
Creates and starts a Tailer for the given file.
+
+
create(File, Charset, TailerListener, long, boolean, boolean, int) - Static method in class org.apache.commons.io.input.Tailer
+
+
Creates and starts a Tailer for the given file.
+
+
create(File, TailerListener, long, boolean) - Static method in class org.apache.commons.io.input.Tailer
+
+
Creates and starts a Tailer for the given file with default buffer size.
+
+
create(File, TailerListener, long, boolean, boolean) - Static method in class org.apache.commons.io.input.Tailer
+
+
Creates and starts a Tailer for the given file with default buffer size.
+
+
create(File, TailerListener, long) - Static method in class org.apache.commons.io.input.Tailer
+
+
Creates and starts a Tailer for the given file, starting at the beginning of the file
+
+
create(File, TailerListener) - Static method in class org.apache.commons.io.input.Tailer
+
+
Creates and starts a Tailer for the given file, starting at the beginning of the file + with the default delay of 1.0s
+
+
+ + + +

D

+
+
DEFAULT_COMPARATOR - Static variable in class org.apache.commons.io.comparator.DefaultFileComparator
+
+
Singleton default comparator instance
+
+
DEFAULT_REVERSE - Static variable in class org.apache.commons.io.comparator.DefaultFileComparator
+
+
Singleton reverse default comparator instance
+
+
DefaultFileComparator - Class in org.apache.commons.io.comparator
+
+
Compare two files using the default File.compareTo(File) method.
+
+
DefaultFileComparator() - Constructor for class org.apache.commons.io.comparator.DefaultFileComparator
+
 
+
DeferredFileOutputStream - Class in org.apache.commons.io.output
+
+
An output stream which will retain data in memory until a specified + threshold is reached, and only then commit it to disk.
+
+
DeferredFileOutputStream(int, File) - Constructor for class org.apache.commons.io.output.DeferredFileOutputStream
+
+
Constructs an instance of this class which will trigger an event at the + specified threshold, and save data to a file beyond that point.
+
+
DeferredFileOutputStream(int, String, String, File) - Constructor for class org.apache.commons.io.output.DeferredFileOutputStream
+
+
Constructs an instance of this class which will trigger an event at the + specified threshold, and save data to a temporary file beyond that point.
+
+
DelegateFileFilter - Class in org.apache.commons.io.filefilter
+
+
This class turns a Java FileFilter or FilenameFilter into an IO FileFilter.
+
+
DelegateFileFilter(FilenameFilter) - Constructor for class org.apache.commons.io.filefilter.DelegateFileFilter
+
+
Constructs a delegate file filter around an existing FilenameFilter.
+
+
DelegateFileFilter(FileFilter) - Constructor for class org.apache.commons.io.filefilter.DelegateFileFilter
+
+
Constructs a delegate file filter around an existing FileFilter.
+
+
delete(File) - Method in class org.apache.commons.io.FileDeleteStrategy
+
+
Deletes the file object, which may be a file or a directory.
+
+
deleteDirectory(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Deletes a directory recursively.
+
+
deleteQuietly(File) - Method in class org.apache.commons.io.FileDeleteStrategy
+
+
Deletes the file object, which may be a file or a directory.
+
+
deleteQuietly(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Deletes a file, never throwing an exception.
+
+
DemuxInputStream - Class in org.apache.commons.io.input
+
+
Data written to this stream is forwarded to a stream that has been associated + with this thread.
+
+
DemuxInputStream() - Constructor for class org.apache.commons.io.input.DemuxInputStream
+
 
+
DemuxOutputStream - Class in org.apache.commons.io.output
+
+
Forwards data to a stream that has been associated with this thread.
+
+
DemuxOutputStream() - Constructor for class org.apache.commons.io.output.DemuxOutputStream
+
 
+
destroy() - Method in class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Final processing.
+
+
DIR_SEPARATOR - Static variable in class org.apache.commons.io.IOUtils
+
+
The system directory separator character.
+
+
DIR_SEPARATOR_UNIX - Static variable in class org.apache.commons.io.IOUtils
+
+
The Unix directory separator character.
+
+
DIR_SEPARATOR_WINDOWS - Static variable in class org.apache.commons.io.IOUtils
+
+
The Windows directory separator character.
+
+
DIRECTORY - Static variable in class org.apache.commons.io.filefilter.DirectoryFileFilter
+
+
Singleton instance of directory filter.
+
+
DIRECTORY_COMPARATOR - Static variable in class org.apache.commons.io.comparator.DirectoryFileComparator
+
+
Singleton default comparator instance
+
+
DIRECTORY_REVERSE - Static variable in class org.apache.commons.io.comparator.DirectoryFileComparator
+
+
Singleton reverse default comparator instance
+
+
directoryContains(String, String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Determines whether the parent directory contains the child element (a file or directory).
+
+
directoryContains(File, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Determines whether the parent directory contains the child element (a file or directory).
+
+
DirectoryFileComparator - Class in org.apache.commons.io.comparator
+
+
Compare two files using the File.isDirectory() method.
+
+
DirectoryFileComparator() - Constructor for class org.apache.commons.io.comparator.DirectoryFileComparator
+
 
+
DirectoryFileFilter - Class in org.apache.commons.io.filefilter
+
+
This filter accepts Files that are directories.
+
+
DirectoryFileFilter() - Constructor for class org.apache.commons.io.filefilter.DirectoryFileFilter
+
+
Restrictive consructor.
+
+
directoryFileFilter() - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that checks if the file is a directory.
+
+
DirectoryWalker<T> - Class in org.apache.commons.io
+
+
Abstract class that walks through a directory hierarchy and provides + subclasses with convenient hooks to add specific behaviour.
+
+
DirectoryWalker() - Constructor for class org.apache.commons.io.DirectoryWalker
+
+
Construct an instance with no filtering and unlimited depth.
+
+
DirectoryWalker(FileFilter, int) - Constructor for class org.apache.commons.io.DirectoryWalker
+
+
Construct an instance with a filter and limit the depth navigated to.
+
+
DirectoryWalker(IOFileFilter, IOFileFilter, int) - Constructor for class org.apache.commons.io.DirectoryWalker
+
+
Construct an instance with a directory and a file filter and an optional + limit on the depth navigated to.
+
+
DirectoryWalker.CancelException - Exception in org.apache.commons.io
+
+
CancelException is thrown in DirectoryWalker to cancel the current + processing.
+
+
DirectoryWalker.CancelException(File, int) - Constructor for exception org.apache.commons.io.DirectoryWalker.CancelException
+
+
Constructs a CancelException with + the file and depth when cancellation occurred.
+
+
DirectoryWalker.CancelException(String, File, int) - Constructor for exception org.apache.commons.io.DirectoryWalker.CancelException
+
+
Constructs a CancelException with + an appropriate message and the file and depth when + cancellation occurred.
+
+
doDelete(File) - Method in class org.apache.commons.io.FileDeleteStrategy
+
+
Actually deletes the file object, which may be a file or a directory.
+
+
dump(byte[], long, OutputStream, int) - Static method in class org.apache.commons.io.HexDump
+
+
Dump an array of bytes to an OutputStream.
+
+
+ + + +

E

+
+
EMPTY - Static variable in class org.apache.commons.io.filefilter.EmptyFileFilter
+
+
Singleton instance of empty filter
+
+
EMPTY_FILE_ARRAY - Static variable in class org.apache.commons.io.FileUtils
+
+
An empty array of type File.
+
+
EmptyFileFilter - Class in org.apache.commons.io.filefilter
+
+
This filter accepts files or directories that are empty.
+
+
EmptyFileFilter() - Constructor for class org.apache.commons.io.filefilter.EmptyFileFilter
+
+
Restrictive consructor.
+
+
ENCODING_PATTERN - Static variable in class org.apache.commons.io.input.XmlStreamReader
+
 
+
EndianUtils - Class in org.apache.commons.io
+
+
Utility code for dealing with different endian systems.
+
+
EndianUtils() - Constructor for class org.apache.commons.io.EndianUtils
+
+
Instances should NOT be constructed in standard programming.
+
+
endOfFileReached() - Method in class org.apache.commons.io.input.TailerListenerAdapter
+
+
Called each time the Tailer reaches the end of the file.
+
+
EOF - Static variable in class org.apache.commons.io.IOUtils
+
+
Represents the end-of-file (or stream).
+
+
EOL - Static variable in class org.apache.commons.io.HexDump
+
+
The line-separator (initializes to "line.separator" system property.
+
+
equals(Object) - Method in class org.apache.commons.io.ByteOrderMark
+
+
Indicates if this BOM's bytes equals another.
+
+
equals(String, String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Checks whether two filenames are equal exactly.
+
+
equals(String, String, boolean, IOCase) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Checks whether two filenames are equal, optionally normalizing and providing + control over the case-sensitivity.
+
+
equalsNormalized(String, String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Checks whether two filenames are equal after both have been normalized.
+
+
equalsNormalizedOnSystem(String, String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Checks whether two filenames are equal after both have been normalized + and using the case rules of the system.
+
+
equalsOnSystem(String, String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Checks whether two filenames are equal using the case rules of the system.
+
+
exitWhenFinished() - Static method in class org.apache.commons.io.FileCleaner
+
+ +
+
exitWhenFinished() - Method in class org.apache.commons.io.FileCleaningTracker
+
+
Call this method to cause the file cleaner thread to terminate when + there are no more objects being tracked for deletion.
+
+
EXTENSION_COMPARATOR - Static variable in class org.apache.commons.io.comparator.ExtensionFileComparator
+
+
Case-sensitive extension comparator instance (see IOCase.SENSITIVE)
+
+
EXTENSION_INSENSITIVE_COMPARATOR - Static variable in class org.apache.commons.io.comparator.ExtensionFileComparator
+
+
Case-insensitive extension comparator instance (see IOCase.INSENSITIVE)
+
+
EXTENSION_INSENSITIVE_REVERSE - Static variable in class org.apache.commons.io.comparator.ExtensionFileComparator
+
+
Reverse case-insensitive extension comparator instance (see IOCase.INSENSITIVE)
+
+
EXTENSION_REVERSE - Static variable in class org.apache.commons.io.comparator.ExtensionFileComparator
+
+
Reverse case-sensitive extension comparator instance (see IOCase.SENSITIVE)
+
+
EXTENSION_SEPARATOR - Static variable in class org.apache.commons.io.FilenameUtils
+
+
The extension separator character.
+
+
EXTENSION_SEPARATOR_STR - Static variable in class org.apache.commons.io.FilenameUtils
+
+
The extension separator String.
+
+
EXTENSION_SYSTEM_COMPARATOR - Static variable in class org.apache.commons.io.comparator.ExtensionFileComparator
+
+
System sensitive extension comparator instance (see IOCase.SYSTEM)
+
+
EXTENSION_SYSTEM_REVERSE - Static variable in class org.apache.commons.io.comparator.ExtensionFileComparator
+
+
Reverse system sensitive path comparator instance (see IOCase.SYSTEM)
+
+
ExtensionFileComparator - Class in org.apache.commons.io.comparator
+
+
Compare the file name extensions for order + (see FilenameUtils.getExtension(String)).
+
+
ExtensionFileComparator() - Constructor for class org.apache.commons.io.comparator.ExtensionFileComparator
+
+
Construct a case sensitive file extension comparator instance.
+
+
ExtensionFileComparator(IOCase) - Constructor for class org.apache.commons.io.comparator.ExtensionFileComparator
+
+
Construct a file extension comparator instance with the specified case-sensitivity.
+
+
+ + + +

F

+
+
FALSE - Static variable in class org.apache.commons.io.filefilter.FalseFileFilter
+
+
Singleton instance of false filter.
+
+
FalseFileFilter - Class in org.apache.commons.io.filefilter
+
+
A file filter that always returns false.
+
+
FalseFileFilter() - Constructor for class org.apache.commons.io.filefilter.FalseFileFilter
+
+
Restrictive consructor.
+
+
falseFileFilter() - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that always returns false.
+
+
FILE - Static variable in class org.apache.commons.io.filefilter.FileFileFilter
+
+
Singleton instance of file filter
+
+
FileAlterationListener - Interface in org.apache.commons.io.monitor
+
+
A listener that receives events of file system modifications.
+
+
FileAlterationListenerAdaptor - Class in org.apache.commons.io.monitor
+
+
Convenience FileAlterationListener implementation that does nothing.
+
+
FileAlterationListenerAdaptor() - Constructor for class org.apache.commons.io.monitor.FileAlterationListenerAdaptor
+
 
+
FileAlterationMonitor - Class in org.apache.commons.io.monitor
+
+
A runnable that spawns a monitoring thread triggering any + registered FileAlterationObserver at a specified interval.
+
+
FileAlterationMonitor() - Constructor for class org.apache.commons.io.monitor.FileAlterationMonitor
+
+
Construct a monitor with a default interval of 10 seconds.
+
+
FileAlterationMonitor(long) - Constructor for class org.apache.commons.io.monitor.FileAlterationMonitor
+
+
Construct a monitor with the specified interval.
+
+
FileAlterationMonitor(long, FileAlterationObserver...) - Constructor for class org.apache.commons.io.monitor.FileAlterationMonitor
+
+
Construct a monitor with the specified interval and set of observers.
+
+
FileAlterationObserver - Class in org.apache.commons.io.monitor
+
+
FileAlterationObserver represents the state of files below a root directory, + checking the filesystem and notifying listeners of create, change or + delete events.
+
+
FileAlterationObserver(String) - Constructor for class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Construct an observer for the specified directory.
+
+
FileAlterationObserver(String, FileFilter) - Constructor for class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Construct an observer for the specified directory and file filter.
+
+
FileAlterationObserver(String, FileFilter, IOCase) - Constructor for class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Construct an observer for the specified directory, file filter and + file comparator.
+
+
FileAlterationObserver(File) - Constructor for class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Construct an observer for the specified directory.
+
+
FileAlterationObserver(File, FileFilter) - Constructor for class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Construct an observer for the specified directory and file filter.
+
+
FileAlterationObserver(File, FileFilter, IOCase) - Constructor for class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Construct an observer for the specified directory, file filter and + file comparator.
+
+
FileAlterationObserver(FileEntry, FileFilter, IOCase) - Constructor for class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Construct an observer for the specified directory, file filter and + file comparator.
+
+
FileCleaner - Class in org.apache.commons.io
+
+
Deprecated. + +
+
+
FileCleaner() - Constructor for class org.apache.commons.io.FileCleaner
+
+
Deprecated.
+
FileCleaningTracker - Class in org.apache.commons.io
+
+
Keeps track of files awaiting deletion, and deletes them when an associated + marker object is reclaimed by the garbage collector.
+
+
FileCleaningTracker() - Constructor for class org.apache.commons.io.FileCleaningTracker
+
 
+
FileDeleteStrategy - Class in org.apache.commons.io
+
+
Strategy for deleting files.
+
+
FileDeleteStrategy(String) - Constructor for class org.apache.commons.io.FileDeleteStrategy
+
+
Restricted constructor.
+
+
FileEntry - Class in org.apache.commons.io.monitor
+
+
The state of a file or directory, capturing the following File attributes at a point in time.
+
+
FileEntry(File) - Constructor for class org.apache.commons.io.monitor.FileEntry
+
+
Construct a new monitor for a specified File.
+
+
FileEntry(FileEntry, File) - Constructor for class org.apache.commons.io.monitor.FileEntry
+
+
Construct a new monitor for a specified File.
+
+
FileExistsException - Exception in org.apache.commons.io
+
+
Indicates that a file already exists.
+
+
FileExistsException() - Constructor for exception org.apache.commons.io.FileExistsException
+
+
Default Constructor.
+
+
FileExistsException(String) - Constructor for exception org.apache.commons.io.FileExistsException
+
+
Construct an instance with the specified message.
+
+
FileExistsException(File) - Constructor for exception org.apache.commons.io.FileExistsException
+
+
Construct an instance with the specified file.
+
+
FileFileFilter - Class in org.apache.commons.io.filefilter
+
+
This filter accepts Files that are files (not directories).
+
+
FileFileFilter() - Constructor for class org.apache.commons.io.filefilter.FileFileFilter
+
+
Restrictive consructor.
+
+
fileFileFilter() - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that checks if the file is a file (and not a directory).
+
+
FileFilterUtils - Class in org.apache.commons.io.filefilter
+
+
Useful utilities for working with file filters.
+
+
FileFilterUtils() - Constructor for class org.apache.commons.io.filefilter.FileFilterUtils
+
+
FileFilterUtils is not normally instantiated.
+
+
FilenameUtils - Class in org.apache.commons.io
+
+
General filename and filepath manipulation utilities.
+
+
FilenameUtils() - Constructor for class org.apache.commons.io.FilenameUtils
+
+
Instances should NOT be constructed in standard programming.
+
+
fileNotFound() - Method in interface org.apache.commons.io.input.TailerListener
+
+
This method is called if the tailed file is not found.
+
+
fileNotFound() - Method in class org.apache.commons.io.input.TailerListenerAdapter
+
+
This method is called if the tailed file is not found.
+
+
fileRotated() - Method in interface org.apache.commons.io.input.TailerListener
+
+
Called if a file rotation is detected.
+
+
fileRotated() - Method in class org.apache.commons.io.input.TailerListenerAdapter
+
+
Called if a file rotation is detected.
+
+
FileSystemUtils - Class in org.apache.commons.io
+
+
General File System utilities.
+
+
FileSystemUtils() - Constructor for class org.apache.commons.io.FileSystemUtils
+
+
Instances should NOT be constructed in standard programming.
+
+
FileUtils - Class in org.apache.commons.io
+
+
General file manipulation utilities.
+
+
FileUtils() - Constructor for class org.apache.commons.io.FileUtils
+
+
Instances should NOT be constructed in standard programming.
+
+
FileWriterWithEncoding - Class in org.apache.commons.io.output
+
+
Writer of files that allows the encoding to be set.
+
+
FileWriterWithEncoding(String, String) - Constructor for class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Constructs a FileWriterWithEncoding with a file encoding.
+
+
FileWriterWithEncoding(String, String, boolean) - Constructor for class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Constructs a FileWriterWithEncoding with a file encoding.
+
+
FileWriterWithEncoding(String, Charset) - Constructor for class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Constructs a FileWriterWithEncoding with a file encoding.
+
+
FileWriterWithEncoding(String, Charset, boolean) - Constructor for class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Constructs a FileWriterWithEncoding with a file encoding.
+
+
FileWriterWithEncoding(String, CharsetEncoder) - Constructor for class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Constructs a FileWriterWithEncoding with a file encoding.
+
+
FileWriterWithEncoding(String, CharsetEncoder, boolean) - Constructor for class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Constructs a FileWriterWithEncoding with a file encoding.
+
+
FileWriterWithEncoding(File, String) - Constructor for class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Constructs a FileWriterWithEncoding with a file encoding.
+
+
FileWriterWithEncoding(File, String, boolean) - Constructor for class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Constructs a FileWriterWithEncoding with a file encoding.
+
+
FileWriterWithEncoding(File, Charset) - Constructor for class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Constructs a FileWriterWithEncoding with a file encoding.
+
+
FileWriterWithEncoding(File, Charset, boolean) - Constructor for class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Constructs a FileWriterWithEncoding with a file encoding.
+
+
FileWriterWithEncoding(File, CharsetEncoder) - Constructor for class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Constructs a FileWriterWithEncoding with a file encoding.
+
+
FileWriterWithEncoding(File, CharsetEncoder, boolean) - Constructor for class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Constructs a FileWriterWithEncoding with a file encoding.
+
+
filter(IOFileFilter, File...) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
+ Applies an IOFileFilter to the provided File + objects.
+
+
filter(IOFileFilter, Iterable<File>) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
+ Applies an IOFileFilter to the provided File + objects.
+
+
filterDirectoryContents(File, int, File[]) - Method in class org.apache.commons.io.DirectoryWalker
+
+
Overridable callback method invoked with the contents of each directory.
+
+
filterList(IOFileFilter, Iterable<File>) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
+ Applies an IOFileFilter to the provided File + objects.
+
+
filterList(IOFileFilter, File...) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
+ Applies an IOFileFilter to the provided File + objects.
+
+
filterSet(IOFileFilter, File...) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
+ Applies an IOFileFilter to the provided File + objects.
+
+
filterSet(IOFileFilter, Iterable<File>) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
+ Applies an IOFileFilter to the provided File + objects.
+
+
finalize() - Method in class org.apache.commons.io.input.AutoCloseInputStream
+
+
Ensures that the stream is closed before it gets garbage-collected.
+
+
flush() - Method in class org.apache.commons.io.output.BrokenOutputStream
+
+
Throws the configured exception.
+
+
flush() - Method in class org.apache.commons.io.output.DemuxOutputStream
+
+
Flushes stream associated with current thread.
+
+
flush() - Method in class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Flush the stream.
+
+
flush() - Method in class org.apache.commons.io.output.LockableFileWriter
+
+
Flush the stream.
+
+
flush() - Method in class org.apache.commons.io.output.NullWriter
+
 
+
flush() - Method in class org.apache.commons.io.output.ProxyOutputStream
+
+
Invokes the delegate's flush() method.
+
+
flush() - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Invokes the delegate's flush() method.
+
+
flush() - Method in class org.apache.commons.io.output.StringBuilderWriter
+
+
Flushing this writer has no effect.
+
+
flush() - Method in class org.apache.commons.io.output.TeeOutputStream
+
+
Flushes both streams.
+
+
flush() - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Flushes this output stream and forces any buffered output bytes to be + written out.
+
+
flush() - Method in class org.apache.commons.io.output.WriterOutputStream
+
+
Flush the stream.
+
+
flush() - Method in class org.apache.commons.io.output.XmlStreamWriter
+
+
Flush the underlying writer.
+
+
FORCE - Static variable in class org.apache.commons.io.FileDeleteStrategy
+
+
The singleton instance for forced file deletion, which always deletes, + even if the file represents a non-empty directory.
+
+
forceDelete(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Deletes a file.
+
+
forceDeleteOnExit(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Schedules a file to be deleted when JVM exits.
+
+
forceMkdir(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Makes a directory, including any necessary but nonexistent parent + directories.
+
+
forceMkdirParent(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Makes any necessary but nonexistent parent directories for a given File.
+
+
forName(String) - Static method in enum org.apache.commons.io.IOCase
+
+
Factory method to create an IOCase from a name.
+
+
freeSpace(String) - Static method in class org.apache.commons.io.FileSystemUtils
+
+
Deprecated. +
Use freeSpaceKb(String) + Deprecated from 1.3, may be removed in 2.0
+
+
+
freeSpaceKb(String) - Static method in class org.apache.commons.io.FileSystemUtils
+
+
Returns the free space on a drive or volume in kilobytes by invoking + the command line.
+
+
freeSpaceKb(String, long) - Static method in class org.apache.commons.io.FileSystemUtils
+
+
Returns the free space on a drive or volume in kilobytes by invoking + the command line.
+
+
freeSpaceKb() - Static method in class org.apache.commons.io.FileSystemUtils
+
+
Returns the disk size of the volume which holds the working directory.
+
+
freeSpaceKb(long) - Static method in class org.apache.commons.io.FileSystemUtils
+
+
Returns the disk size of the volume which holds the working directory.
+
+
+ + + +

G

+
+
get(int) - Method in class org.apache.commons.io.ByteOrderMark
+
+
The byte at the specified position.
+
+
getAppendable() - Method in class org.apache.commons.io.output.AppendableOutputStream
+
+
Return the target appendable.
+
+
getBaseName(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Gets the base name, minus the full path and extension, from a full filename.
+
+
getBOM() - Method in class org.apache.commons.io.input.BOMInputStream
+
+
Return the BOM (Byte Order Mark).
+
+
getBOMCharsetName() - Method in class org.apache.commons.io.input.BOMInputStream
+
+
Return the BOM charset Name - ByteOrderMark.getCharsetName().
+
+
getBomEncoding() - Method in exception org.apache.commons.io.input.XmlStreamReaderException
+
+
Returns the BOM encoding found in the InputStream.
+
+
getBuilder() - Method in class org.apache.commons.io.output.StringBuilderWriter
+
+
Returns the underlying builder.
+
+
getByteCount() - Method in class org.apache.commons.io.input.CountingInputStream
+
+
The number of bytes that have passed through this stream.
+
+
getByteCount() - Method in class org.apache.commons.io.output.CountingOutputStream
+
+
The number of bytes that have passed through this stream.
+
+
getByteCount() - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Returns the number of bytes that have been written to this output stream.
+
+
getBytes() - Method in class org.apache.commons.io.ByteOrderMark
+
+
Return a copy of the BOM's bytes.
+
+
getCause() - Method in exception org.apache.commons.io.TaggedIOException
+
+
Returns the wrapped exception.
+
+
getCharsetName() - Method in class org.apache.commons.io.ByteOrderMark
+
+
Return the name of the Charset the BOM represents.
+
+
getChildren() - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Return the directory's files.
+
+
getContentTypeEncoding() - Method in exception org.apache.commons.io.input.XmlStreamReaderException
+
+
Returns the encoding in the content-type used to attempt determining the + encoding.
+
+
getContentTypeMime() - Method in exception org.apache.commons.io.input.XmlStreamReaderException
+
+
Returns the MIME type in the content-type used to attempt determining the + encoding.
+
+
getCount() - Method in class org.apache.commons.io.input.CountingInputStream
+
+
The number of bytes that have passed through this stream.
+
+
getCount() - Method in class org.apache.commons.io.output.CountingOutputStream
+
+
The number of bytes that have passed through this stream.
+
+
getData() - Method in class org.apache.commons.io.output.DeferredFileOutputStream
+
+
Returns the data for this output stream as an array of bytes, assuming + that the data has been retained in memory.
+
+
getDefaultEncoding() - Method in class org.apache.commons.io.input.XmlStreamReader
+
+
Returns the default encoding to use if none is set in HTTP content-type, + XML prolog and the rules based on content-type are not adequate.
+
+
getDefaultEncoding() - Method in class org.apache.commons.io.output.XmlStreamWriter
+
+
Return the default encoding.
+
+
getDelay() - Method in class org.apache.commons.io.input.Tailer
+
+
Return the delay in milliseconds.
+
+
getDeleteFailures() - Method in class org.apache.commons.io.FileCleaningTracker
+
+
Return the file paths that failed to delete.
+
+
getDepth() - Method in exception org.apache.commons.io.DirectoryWalker.CancelException
+
+
Return the depth when the operation was cancelled.
+
+
getDirectory() - Method in class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Return the directory being observed.
+
+
getEncoding() - Method in class org.apache.commons.io.input.XmlStreamReader
+
+
Returns the charset encoding of the XmlStreamReader.
+
+
getEncoding() - Method in class org.apache.commons.io.output.XmlStreamWriter
+
+
Return the detected encoding.
+
+
getExtension(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Gets the extension of a filename.
+
+
getFile() - Method in exception org.apache.commons.io.DirectoryWalker.CancelException
+
+
Return the file when the operation was cancelled.
+
+
getFile(File, String...) - Static method in class org.apache.commons.io.FileUtils
+
+
Construct a file from the set of name elements.
+
+
getFile(String...) - Static method in class org.apache.commons.io.FileUtils
+
+
Construct a file from the set of name elements.
+
+
getFile() - Method in class org.apache.commons.io.input.Tailer
+
+
Return the file.
+
+
getFile() - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Return the file being monitored.
+
+
getFile() - Method in class org.apache.commons.io.output.DeferredFileOutputStream
+
+
Returns either the output file specified in the constructor or + the temporary file created or null.
+
+
getFileFilter() - Method in class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Return the fileFilter.
+
+
getFileFilters() - Method in class org.apache.commons.io.filefilter.AndFileFilter
+
+
Returns this conditional file filter's list of file filters.
+
+
getFileFilters() - Method in interface org.apache.commons.io.filefilter.ConditionalFileFilter
+
+
Returns this conditional file filter's list of file filters.
+
+
getFileFilters() - Method in class org.apache.commons.io.filefilter.OrFileFilter
+
+
Returns this conditional file filter's list of file filters.
+
+
getFullPath(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Gets the full path from a full filename, which is the prefix + path.
+
+
getFullPathNoEndSeparator(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Gets the full path from a full filename, which is the prefix + path, + and also excluding the final directory separator.
+
+
getInstance() - Static method in class org.apache.commons.io.FileCleaner
+
+
Deprecated.
+
Returns the singleton instance, which is used by the deprecated, static methods.
+
+
getInterval() - Method in class org.apache.commons.io.monitor.FileAlterationMonitor
+
+
Return the interval.
+
+
getLastModified() - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Return the last modified time from the last time it + was checked.
+
+
getLength() - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Return the length.
+
+
getLevel() - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Return the level
+
+
getListeners() - Method in class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Returns the set of registered file system listeners.
+
+
getName(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Gets the name minus the path from a full filename.
+
+
getName() - Method in enum org.apache.commons.io.IOCase
+
+
Gets the name of the constant.
+
+
getName() - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Return the file name.
+
+
getObservers() - Method in class org.apache.commons.io.monitor.FileAlterationMonitor
+
+
Returns the set of FileAlterationObserver registered with + this monitor.
+
+
getParent() - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Return the parent entry.
+
+
getPath(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Gets the path from a full filename, which excludes the prefix.
+
+
getPathNoEndSeparator(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Gets the path from a full filename, which excludes the prefix, and + also excluding the final directory separator.
+
+
getPosition() - Method in class org.apache.commons.io.input.NullInputStream
+
+
Return the current position.
+
+
getPosition() - Method in class org.apache.commons.io.input.NullReader
+
+
Return the current position.
+
+
getPrefix(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Gets the prefix from a full filename, such as C:/ + or ~/.
+
+
getPrefixLength(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Returns the length of the filename prefix, such as C:/ or ~/.
+
+
getRun() - Method in class org.apache.commons.io.input.Tailer
+
+
Gets whether to keep on running.
+
+
getSize() - Method in class org.apache.commons.io.input.NullInputStream
+
+
Return the size this InputStream emulates.
+
+
getSize() - Method in class org.apache.commons.io.input.NullReader
+
+
Return the size this Reader emulates.
+
+
getStream() - Method in class org.apache.commons.io.output.DeferredFileOutputStream
+
+
Returns the current output stream.
+
+
getStream() - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Returns the underlying output stream, to which the corresponding + OutputStream methods in this class will ultimately delegate.
+
+
getTag() - Method in exception org.apache.commons.io.TaggedIOException
+
+
Returns the serializable tag object.
+
+
getTempDirectory() - Static method in class org.apache.commons.io.FileUtils
+
+
Returns a File representing the system temporary directory.
+
+
getTempDirectoryPath() - Static method in class org.apache.commons.io.FileUtils
+
+
Returns the path to the system temporary directory.
+
+
getThreshold() - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Returns the threshold, in bytes, at which an event will be triggered.
+
+
getTrackCount() - Static method in class org.apache.commons.io.FileCleaner
+
+ +
+
getTrackCount() - Method in class org.apache.commons.io.FileCleaningTracker
+
+
Retrieve the number of files currently being tracked, and therefore + awaiting deletion.
+
+
getUserDirectory() - Static method in class org.apache.commons.io.FileUtils
+
+
Returns a File representing the user's home directory.
+
+
getUserDirectoryPath() - Static method in class org.apache.commons.io.FileUtils
+
+
Returns the path to the user's home directory.
+
+
getXmlEncoding() - Method in exception org.apache.commons.io.input.XmlStreamReaderException
+
+
Returns the encoding found in the XML prolog of the InputStream.
+
+
getXmlGuessEncoding() - Method in exception org.apache.commons.io.input.XmlStreamReaderException
+
+
Returns the encoding guess based on the first bytes of the InputStream.
+
+
+ + + +

H

+
+
handle(String) - Method in interface org.apache.commons.io.input.TailerListener
+
+
Handles a line from a Tailer.
+
+
handle(Exception) - Method in interface org.apache.commons.io.input.TailerListener
+
+
Handles an Exception .
+
+
handle(String) - Method in class org.apache.commons.io.input.TailerListenerAdapter
+
+
Handles a line from a Tailer.
+
+
handle(Exception) - Method in class org.apache.commons.io.input.TailerListenerAdapter
+
+
Handles an Exception .
+
+
handleCancelled(File, Collection<T>, DirectoryWalker.CancelException) - Method in class org.apache.commons.io.DirectoryWalker
+
+
Overridable callback method invoked when the operation is cancelled.
+
+
handleDirectory(File, int, Collection<T>) - Method in class org.apache.commons.io.DirectoryWalker
+
+
Overridable callback method invoked to determine if a directory should be processed.
+
+
handleDirectoryEnd(File, int, Collection<T>) - Method in class org.apache.commons.io.DirectoryWalker
+
+
Overridable callback method invoked at the end of processing each directory.
+
+
handleDirectoryStart(File, int, Collection<T>) - Method in class org.apache.commons.io.DirectoryWalker
+
+
Overridable callback method invoked at the start of processing each directory.
+
+
handleEnd(Collection<T>) - Method in class org.apache.commons.io.DirectoryWalker
+
+
Overridable callback method invoked at the end of processing.
+
+
handleFile(File, int, Collection<T>) - Method in class org.apache.commons.io.DirectoryWalker
+
+
Overridable callback method invoked for each (non-directory) file.
+
+
handleIOException(IOException) - Method in class org.apache.commons.io.input.ProxyInputStream
+
+
Handle any IOExceptions thrown.
+
+
handleIOException(IOException) - Method in class org.apache.commons.io.input.ProxyReader
+
+
Handle any IOExceptions thrown.
+
+
handleIOException(IOException) - Method in class org.apache.commons.io.input.TaggedInputStream
+
+
Tags any IOExceptions thrown, wrapping and re-throwing.
+
+
handleIOException(IOException) - Method in class org.apache.commons.io.output.ProxyOutputStream
+
+
Handle any IOExceptions thrown.
+
+
handleIOException(IOException) - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Handle any IOExceptions thrown.
+
+
handleIOException(IOException) - Method in class org.apache.commons.io.output.TaggedOutputStream
+
+
Tags any IOExceptions thrown, wrapping and re-throwing.
+
+
handleIsCancelled(File, int, Collection<T>) - Method in class org.apache.commons.io.DirectoryWalker
+
+
Overridable callback method invoked to determine if the entire walk + operation should be immediately cancelled.
+
+
handleRestricted(File, int, Collection<T>) - Method in class org.apache.commons.io.DirectoryWalker
+
+
Overridable callback method invoked for each restricted directory.
+
+
handleStart(File, Collection<T>) - Method in class org.apache.commons.io.DirectoryWalker
+
+
Overridable callback method invoked at the start of processing.
+
+
hasBOM() - Method in class org.apache.commons.io.input.BOMInputStream
+
+
Indicates whether the stream contains one of the specified BOMs.
+
+
hasBOM(ByteOrderMark) - Method in class org.apache.commons.io.input.BOMInputStream
+
+
Indicates whether the stream contains the specified BOM.
+
+
hashCode() - Method in class org.apache.commons.io.ByteOrderMark
+
+
Return the hashcode for this BOM.
+
+
hasNext() - Method in class org.apache.commons.io.LineIterator
+
+
Indicates whether the Reader has more lines.
+
+
HexDump - Class in org.apache.commons.io
+
+
Dumps data in hexadecimal format.
+
+
HexDump() - Constructor for class org.apache.commons.io.HexDump
+
+
Instances should NOT be constructed in standard programming.
+
+
HIDDEN - Static variable in class org.apache.commons.io.filefilter.HiddenFileFilter
+
+
Singleton instance of hidden filter
+
+
HiddenFileFilter - Class in org.apache.commons.io.filefilter
+
+
This filter accepts Files that are hidden.
+
+
HiddenFileFilter() - Constructor for class org.apache.commons.io.filefilter.HiddenFileFilter
+
+
Restrictive consructor.
+
+
+ + + +

I

+
+
indexOfExtension(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Returns the index of the last extension separator character, which is a dot.
+
+
indexOfLastSeparator(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Returns the index of the last directory separator character.
+
+
init(Tailer) - Method in interface org.apache.commons.io.input.TailerListener
+
+
The tailer will call this method during construction, + giving the listener a method of stopping the tailer.
+
+
init(Tailer) - Method in class org.apache.commons.io.input.TailerListenerAdapter
+
+
The tailer will call this method during construction, + giving the listener a method of stopping the tailer.
+
+
initialize() - Method in class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Initialize the observer.
+
+
INSTANCE - Static variable in class org.apache.commons.io.filefilter.DirectoryFileFilter
+
+
Singleton instance of directory filter.
+
+
INSTANCE - Static variable in class org.apache.commons.io.filefilter.FalseFileFilter
+
+
Singleton instance of false filter.
+
+
INSTANCE - Static variable in class org.apache.commons.io.filefilter.TrueFileFilter
+
+
Singleton instance of true filter.
+
+
invalidClassNameFound(String) - Method in class org.apache.commons.io.serialization.ValidatingObjectInputStream
+
+
Called to throw InvalidClassException if an invalid + class name is found during deserialization.
+
+
IOCase - Enum in org.apache.commons.io
+
+
Enumeration of IO case sensitivity.
+
+
IOExceptionWithCause - Exception in org.apache.commons.io
+
+
Deprecated. +
(since 2.5) use IOException instead
+
+
+
IOExceptionWithCause(String, Throwable) - Constructor for exception org.apache.commons.io.IOExceptionWithCause
+
+
Deprecated.
+
Constructs a new instance with the given message and cause.
+
+
IOExceptionWithCause(Throwable) - Constructor for exception org.apache.commons.io.IOExceptionWithCause
+
+
Deprecated.
+
Constructs a new instance with the given cause.
+
+
IOFileFilter - Interface in org.apache.commons.io.filefilter
+
+
An interface which brings the FileFilter and FilenameFilter + interfaces together.
+
+
IOUtils - Class in org.apache.commons.io
+
+
General IO stream manipulation utilities.
+
+
IOUtils() - Constructor for class org.apache.commons.io.IOUtils
+
+
Instances should NOT be constructed in standard programming.
+
+
isCaseSensitive() - Method in enum org.apache.commons.io.IOCase
+
+
Does the object represent case sensitive comparison.
+
+
isCauseOf(Throwable) - Method in class org.apache.commons.io.input.TaggedInputStream
+
+
Tests if the given exception was caused by this stream.
+
+
isCauseOf(Exception) - Method in class org.apache.commons.io.output.TaggedOutputStream
+
+
Tests if the given exception was caused by this stream.
+
+
isDirectory() - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Indicate whether the file is a directory or not.
+
+
isExists() - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Indicate whether the file existed the last time it + was checked.
+
+
isExtension(String, String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Checks whether the extension of the filename is that specified.
+
+
isExtension(String, String[]) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Checks whether the extension of the filename is one of those specified.
+
+
isExtension(String, Collection<String>) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Checks whether the extension of the filename is one of those specified.
+
+
isFileNewer(File, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Tests if the specified File is newer than the reference + File.
+
+
isFileNewer(File, Date) - Static method in class org.apache.commons.io.FileUtils
+
+
Tests if the specified File is newer than the specified + Date.
+
+
isFileNewer(File, long) - Static method in class org.apache.commons.io.FileUtils
+
+
Tests if the specified File is newer than the specified + time reference.
+
+
isFileOlder(File, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Tests if the specified File is older than the reference + File.
+
+
isFileOlder(File, Date) - Static method in class org.apache.commons.io.FileUtils
+
+
Tests if the specified File is older than the specified + Date.
+
+
isFileOlder(File, long) - Static method in class org.apache.commons.io.FileUtils
+
+
Tests if the specified File is older than the specified + time reference.
+
+
isInMemory() - Method in class org.apache.commons.io.output.DeferredFileOutputStream
+
+
Determines whether or not the data for this output stream has been + retained in memory.
+
+
ISO_8859_1 - Static variable in class org.apache.commons.io.Charsets
+
+
Deprecated. +
Use Java 7's StandardCharsets
+
+
+
isPropagateClose() - Method in class org.apache.commons.io.input.BoundedInputStream
+
+
Indicates whether the BoundedInputStream.close() method + should propagate to the underling InputStream.
+
+
isSymlink(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Determines whether the specified file is a Symbolic Link rather than an actual file.
+
+
isTaggedWith(Throwable, Object) - Static method in exception org.apache.commons.io.TaggedIOException
+
+
Checks whether the given throwable is tagged with the given tag.
+
+
isThresholdExceeded() - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Determines whether or not the configured threshold has been exceeded for + this output stream.
+
+
isValidLine(String) - Method in class org.apache.commons.io.LineIterator
+
+
Overridable method to validate each line that is returned.
+
+
iterateFiles(File, IOFileFilter, IOFileFilter) - Static method in class org.apache.commons.io.FileUtils
+
+
Allows iteration over the files in given directory (and optionally + its subdirectories).
+
+
iterateFiles(File, String[], boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Allows iteration over the files in a given directory (and optionally + its subdirectories) which match an array of extensions.
+
+
iterateFilesAndDirs(File, IOFileFilter, IOFileFilter) - Static method in class org.apache.commons.io.FileUtils
+
+
Allows iteration over the files in given directory (and optionally + its subdirectories).
+
+
+ + + +

L

+
+
LASTMODIFIED_COMPARATOR - Static variable in class org.apache.commons.io.comparator.LastModifiedFileComparator
+
+
Last modified comparator instance
+
+
LASTMODIFIED_REVERSE - Static variable in class org.apache.commons.io.comparator.LastModifiedFileComparator
+
+
Reverse last modified comparator instance
+
+
LastModifiedFileComparator - Class in org.apache.commons.io.comparator
+
+
Compare the last modified date/time of two files for order + (see File.lastModified()).
+
+
LastModifiedFileComparator() - Constructor for class org.apache.commons.io.comparator.LastModifiedFileComparator
+
 
+
length() - Method in class org.apache.commons.io.ByteOrderMark
+
+
Return the length of the BOM's bytes.
+
+
LINE_SEPARATOR - Static variable in class org.apache.commons.io.IOUtils
+
+
The system line separator string.
+
+
LINE_SEPARATOR_UNIX - Static variable in class org.apache.commons.io.IOUtils
+
+
The Unix line separator string.
+
+
LINE_SEPARATOR_WINDOWS - Static variable in class org.apache.commons.io.IOUtils
+
+
The Windows line separator string.
+
+
lineIterator(File, String) - Static method in class org.apache.commons.io.FileUtils
+
+
Returns an Iterator for the lines in a File.
+
+
lineIterator(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Returns an Iterator for the lines in a File using the default encoding for the VM.
+
+
lineIterator(Reader) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns an Iterator for the lines in a Reader.
+
+
lineIterator(InputStream, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns an Iterator for the lines in an InputStream, using + the character encoding specified (or default encoding if null).
+
+
lineIterator(InputStream, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns an Iterator for the lines in an InputStream, using + the character encoding specified (or default encoding if null).
+
+
LineIterator - Class in org.apache.commons.io
+
+
An Iterator over the lines in a Reader.
+
+
LineIterator(Reader) - Constructor for class org.apache.commons.io.LineIterator
+
+
Constructs an iterator of the lines for a Reader.
+
+
listFiles(File, IOFileFilter, IOFileFilter) - Static method in class org.apache.commons.io.FileUtils
+
+
Finds files within a given directory (and optionally its + subdirectories).
+
+
listFiles(File, String[], boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Finds files within a given directory (and optionally its subdirectories) + which match an array of extensions.
+
+
listFilesAndDirs(File, IOFileFilter, IOFileFilter) - Static method in class org.apache.commons.io.FileUtils
+
+
Finds files within a given directory (and optionally its + subdirectories).
+
+
LockableFileWriter - Class in org.apache.commons.io.output
+
+
FileWriter that will create and honor lock files to allow simple + cross thread file lock handling.
+
+
LockableFileWriter(String) - Constructor for class org.apache.commons.io.output.LockableFileWriter
+
+
Constructs a LockableFileWriter.
+
+
LockableFileWriter(String, boolean) - Constructor for class org.apache.commons.io.output.LockableFileWriter
+
+
Constructs a LockableFileWriter.
+
+
LockableFileWriter(String, boolean, String) - Constructor for class org.apache.commons.io.output.LockableFileWriter
+
+
Constructs a LockableFileWriter.
+
+
LockableFileWriter(File) - Constructor for class org.apache.commons.io.output.LockableFileWriter
+
+
Constructs a LockableFileWriter.
+
+
LockableFileWriter(File, boolean) - Constructor for class org.apache.commons.io.output.LockableFileWriter
+
+
Constructs a LockableFileWriter.
+
+
LockableFileWriter(File, boolean, String) - Constructor for class org.apache.commons.io.output.LockableFileWriter
+
+ +
+
LockableFileWriter(File, Charset) - Constructor for class org.apache.commons.io.output.LockableFileWriter
+
+
Constructs a LockableFileWriter with a file encoding.
+
+
LockableFileWriter(File, String) - Constructor for class org.apache.commons.io.output.LockableFileWriter
+
+
Constructs a LockableFileWriter with a file encoding.
+
+
LockableFileWriter(File, Charset, boolean, String) - Constructor for class org.apache.commons.io.output.LockableFileWriter
+
+
Constructs a LockableFileWriter with a file encoding.
+
+
LockableFileWriter(File, String, boolean, String) - Constructor for class org.apache.commons.io.output.LockableFileWriter
+
+
Constructs a LockableFileWriter with a file encoding.
+
+
+ + + +

M

+
+
magicNumberFileFilter(String) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that accepts files that begin with the provided magic + number.
+
+
magicNumberFileFilter(String, long) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that accepts files that contains the provided magic + number at a specified offset within the file.
+
+
magicNumberFileFilter(byte[]) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that accepts files that begin with the provided magic + number.
+
+
magicNumberFileFilter(byte[], long) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that accepts files that contains the provided magic + number at a specified offset within the file.
+
+
MagicNumberFileFilter - Class in org.apache.commons.io.filefilter
+
+
+ File filter for matching files containing a "magic number".
+
+
MagicNumberFileFilter(byte[]) - Constructor for class org.apache.commons.io.filefilter.MagicNumberFileFilter
+
+
+ Constructs a new MagicNumberFileFilter and associates it with the magic + number to test for in files.
+
+
MagicNumberFileFilter(String) - Constructor for class org.apache.commons.io.filefilter.MagicNumberFileFilter
+
+
+ Constructs a new MagicNumberFileFilter and associates it with the magic + number to test for in files.
+
+
MagicNumberFileFilter(String, long) - Constructor for class org.apache.commons.io.filefilter.MagicNumberFileFilter
+
+
+ Constructs a new MagicNumberFileFilter and associates it with the magic + number to test for in files and the byte offset location in the file to + to look for that magic number.
+
+
MagicNumberFileFilter(byte[], long) - Constructor for class org.apache.commons.io.filefilter.MagicNumberFileFilter
+
+
+ Constructs a new MagicNumberFileFilter and associates it with the magic + number to test for in files and the byte offset location in the file to + to look for that magic number.
+
+
makeCVSAware(IOFileFilter) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Decorates a filter to make it ignore CVS directories.
+
+
makeDirectoryOnly(IOFileFilter) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Decorates a filter so that it only applies to directories and not to files.
+
+
makeFileOnly(IOFileFilter) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Decorates a filter so that it only applies to files and not to directories.
+
+
makeSVNAware(IOFileFilter) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Decorates a filter to make it ignore SVN directories.
+
+
mark(int) - Method in class org.apache.commons.io.input.BOMInputStream
+
+
Invokes the delegate's mark(int) method.
+
+
mark(int) - Method in class org.apache.commons.io.input.BoundedInputStream
+
+
Invokes the delegate's mark(int) method.
+
+
mark(int) - Method in class org.apache.commons.io.input.BoundedReader
+
+
marks the target stream, @see java.io.Reader#mark(int).
+
+
mark(int) - Method in class org.apache.commons.io.input.CharSequenceInputStream
+
mark(int) - Method in class org.apache.commons.io.input.CharSequenceReader
+
+
Mark the current position.
+
+
mark(int) - Method in class org.apache.commons.io.input.NullInputStream
+
+
Mark the current position.
+
+
mark(int) - Method in class org.apache.commons.io.input.NullReader
+
+
Mark the current position.
+
+
mark(int) - Method in class org.apache.commons.io.input.ProxyInputStream
+
+
Invokes the delegate's mark(int) method.
+
+
mark(int) - Method in class org.apache.commons.io.input.ProxyReader
+
+
Invokes the delegate's mark(int) method.
+
+
mark(int) - Method in class org.apache.commons.io.input.UnixLineEndingInputStream
+
mark(int) - Method in class org.apache.commons.io.input.WindowsLineEndingInputStream
+
markSupported() - Method in class org.apache.commons.io.input.BoundedInputStream
+
+
Invokes the delegate's markSupported() method.
+
+
markSupported() - Method in class org.apache.commons.io.input.CharSequenceInputStream
+
 
+
markSupported() - Method in class org.apache.commons.io.input.CharSequenceReader
+
+
Mark is supported (returns true).
+
+
markSupported() - Method in class org.apache.commons.io.input.NullInputStream
+
+
Indicates whether mark is supported.
+
+
markSupported() - Method in class org.apache.commons.io.input.NullReader
+
+
Indicates whether mark is supported.
+
+
markSupported() - Method in class org.apache.commons.io.input.ProxyInputStream
+
+
Invokes the delegate's markSupported() method.
+
+
markSupported() - Method in class org.apache.commons.io.input.ProxyReader
+
+
Invokes the delegate's markSupported() method.
+
+
matches(String) - Method in interface org.apache.commons.io.serialization.ClassNameMatcher
+
+
Returns true if the supplied class name matches this object's condition.
+
+
moveDirectory(File, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Moves a directory.
+
+
moveDirectoryToDirectory(File, File, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Moves a directory to another directory.
+
+
moveFile(File, File) - Static method in class org.apache.commons.io.FileUtils
+
+
Moves a file.
+
+
moveFileToDirectory(File, File, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Moves a file to a directory.
+
+
moveToDirectory(File, File, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Moves a file or directory to the destination directory.
+
+
+ + + +

N

+
+
NAME_COMPARATOR - Static variable in class org.apache.commons.io.comparator.NameFileComparator
+
+
Case-sensitive name comparator instance (see IOCase.SENSITIVE)
+
+
NAME_INSENSITIVE_COMPARATOR - Static variable in class org.apache.commons.io.comparator.NameFileComparator
+
+
Case-insensitive name comparator instance (see IOCase.INSENSITIVE)
+
+
NAME_INSENSITIVE_REVERSE - Static variable in class org.apache.commons.io.comparator.NameFileComparator
+
+
Reverse case-insensitive name comparator instance (see IOCase.INSENSITIVE)
+
+
NAME_REVERSE - Static variable in class org.apache.commons.io.comparator.NameFileComparator
+
+
Reverse case-sensitive name comparator instance (see IOCase.SENSITIVE)
+
+
NAME_SYSTEM_COMPARATOR - Static variable in class org.apache.commons.io.comparator.NameFileComparator
+
+
System sensitive name comparator instance (see IOCase.SYSTEM)
+
+
NAME_SYSTEM_REVERSE - Static variable in class org.apache.commons.io.comparator.NameFileComparator
+
+
Reverse system sensitive name comparator instance (see IOCase.SYSTEM)
+
+
NameFileComparator - Class in org.apache.commons.io.comparator
+
+
Compare the names of two files for order (see File.getName()).
+
+
NameFileComparator() - Constructor for class org.apache.commons.io.comparator.NameFileComparator
+
+
Construct a case sensitive file name comparator instance.
+
+
NameFileComparator(IOCase) - Constructor for class org.apache.commons.io.comparator.NameFileComparator
+
+
Construct a file name comparator instance with the specified case-sensitivity.
+
+
nameFileFilter(String) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that returns true if the filename matches the specified text.
+
+
nameFileFilter(String, IOCase) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that returns true if the filename matches the specified text.
+
+
NameFileFilter - Class in org.apache.commons.io.filefilter
+
+
Filters filenames for a certain name.
+
+
NameFileFilter(String) - Constructor for class org.apache.commons.io.filefilter.NameFileFilter
+
+
Constructs a new case-sensitive name file filter for a single name.
+
+
NameFileFilter(String, IOCase) - Constructor for class org.apache.commons.io.filefilter.NameFileFilter
+
+
Construct a new name file filter specifying case-sensitivity.
+
+
NameFileFilter(String[]) - Constructor for class org.apache.commons.io.filefilter.NameFileFilter
+
+
Constructs a new case-sensitive name file filter for an array of names.
+
+
NameFileFilter(String[], IOCase) - Constructor for class org.apache.commons.io.filefilter.NameFileFilter
+
+
Constructs a new name file filter for an array of names specifying case-sensitivity.
+
+
NameFileFilter(List<String>) - Constructor for class org.apache.commons.io.filefilter.NameFileFilter
+
+
Constructs a new case-sensitive name file filter for a list of names.
+
+
NameFileFilter(List<String>, IOCase) - Constructor for class org.apache.commons.io.filefilter.NameFileFilter
+
+
Constructs a new name file filter for a list of names specifying case-sensitivity.
+
+
newChildInstance(File) - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Create a new child instance.
+
+
next() - Method in class org.apache.commons.io.LineIterator
+
+
Returns the next line in the wrapped Reader.
+
+
nextLine() - Method in class org.apache.commons.io.LineIterator
+
+
Returns the next line in the wrapped Reader.
+
+
NORMAL - Static variable in class org.apache.commons.io.FileDeleteStrategy
+
+
The singleton instance for normal file deletion, which does not permit + the deletion of directories that are not empty.
+
+
normalize(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Normalizes a path, removing double and single dot path steps.
+
+
normalize(String, boolean) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Normalizes a path, removing double and single dot path steps.
+
+
normalizeNoEndSeparator(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Normalizes a path, removing double and single dot path steps, + and removing any final directory separator.
+
+
normalizeNoEndSeparator(String, boolean) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Normalizes a path, removing double and single dot path steps, + and removing any final directory separator.
+
+
NOT_EMPTY - Static variable in class org.apache.commons.io.filefilter.EmptyFileFilter
+
+
Singleton instance of not-empty filter
+
+
notFileFilter(IOFileFilter) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that NOTs the specified filter.
+
+
NotFileFilter - Class in org.apache.commons.io.filefilter
+
+
This filter produces a logical NOT of the filters specified.
+
+
NotFileFilter(IOFileFilter) - Constructor for class org.apache.commons.io.filefilter.NotFileFilter
+
+
Constructs a new file filter that NOTs the result of another filter.
+
+
NULL_OUTPUT_STREAM - Static variable in class org.apache.commons.io.output.NullOutputStream
+
+
A singleton.
+
+
NULL_WRITER - Static variable in class org.apache.commons.io.output.NullWriter
+
+
A singleton.
+
+
NullInputStream - Class in org.apache.commons.io.input
+
+
A functional, light weight InputStream that emulates + a stream of a specified size.
+
+
NullInputStream(long) - Constructor for class org.apache.commons.io.input.NullInputStream
+
+
Create an InputStream that emulates a specified size + which supports marking and does not throw EOFException.
+
+
NullInputStream(long, boolean, boolean) - Constructor for class org.apache.commons.io.input.NullInputStream
+
+
Create an InputStream that emulates a specified + size with option settings.
+
+
NullOutputStream - Class in org.apache.commons.io.output
+
+
This OutputStream writes all data to the famous /dev/null.
+
+
NullOutputStream() - Constructor for class org.apache.commons.io.output.NullOutputStream
+
 
+
NullReader - Class in org.apache.commons.io.input
+
+
A functional, light weight Reader that emulates + a reader of a specified size.
+
+
NullReader(long) - Constructor for class org.apache.commons.io.input.NullReader
+
+
Create a Reader that emulates a specified size + which supports marking and does not throw EOFException.
+
+
NullReader(long, boolean, boolean) - Constructor for class org.apache.commons.io.input.NullReader
+
+
Create a Reader that emulates a specified + size with option settings.
+
+
NullWriter - Class in org.apache.commons.io.output
+
+
This Writer writes all data to the famous /dev/null.
+
+
NullWriter() - Constructor for class org.apache.commons.io.output.NullWriter
+
+
Constructs a new NullWriter.
+
+
+ + + +

O

+
+
onDirectoryChange(File) - Method in interface org.apache.commons.io.monitor.FileAlterationListener
+
+
Directory changed Event.
+
+
onDirectoryChange(File) - Method in class org.apache.commons.io.monitor.FileAlterationListenerAdaptor
+
+
Directory changed Event.
+
+
onDirectoryCreate(File) - Method in interface org.apache.commons.io.monitor.FileAlterationListener
+
+
Directory created Event.
+
+
onDirectoryCreate(File) - Method in class org.apache.commons.io.monitor.FileAlterationListenerAdaptor
+
+
Directory created Event.
+
+
onDirectoryDelete(File) - Method in interface org.apache.commons.io.monitor.FileAlterationListener
+
+
Directory deleted Event.
+
+
onDirectoryDelete(File) - Method in class org.apache.commons.io.monitor.FileAlterationListenerAdaptor
+
+
Directory deleted Event.
+
+
ONE_EB - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in an exabyte.
+
+
ONE_EB_BI - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in an exabyte.
+
+
ONE_GB - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in a gigabyte.
+
+
ONE_GB_BI - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in a gigabyte.
+
+
ONE_KB - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in a kilobyte.
+
+
ONE_KB_BI - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in a kilobyte.
+
+
ONE_MB - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in a megabyte.
+
+
ONE_MB_BI - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in a megabyte.
+
+
ONE_PB - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in a petabyte.
+
+
ONE_PB_BI - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in a petabyte.
+
+
ONE_TB - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in a terabyte.
+
+
ONE_TB_BI - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in a terabyte.
+
+
ONE_YB - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in a yottabyte.
+
+
ONE_ZB - Static variable in class org.apache.commons.io.FileUtils
+
+
The number of bytes in a zettabyte.
+
+
onFileChange(File) - Method in interface org.apache.commons.io.monitor.FileAlterationListener
+
+
File changed Event.
+
+
onFileChange(File) - Method in class org.apache.commons.io.monitor.FileAlterationListenerAdaptor
+
+
File changed Event.
+
+
onFileCreate(File) - Method in interface org.apache.commons.io.monitor.FileAlterationListener
+
+
File created Event.
+
+
onFileCreate(File) - Method in class org.apache.commons.io.monitor.FileAlterationListenerAdaptor
+
+
File created Event.
+
+
onFileDelete(File) - Method in interface org.apache.commons.io.monitor.FileAlterationListener
+
+
File deleted Event.
+
+
onFileDelete(File) - Method in class org.apache.commons.io.monitor.FileAlterationListenerAdaptor
+
+
File deleted Event.
+
+
onStart(FileAlterationObserver) - Method in interface org.apache.commons.io.monitor.FileAlterationListener
+
+
File system observer started checking event.
+
+
onStart(FileAlterationObserver) - Method in class org.apache.commons.io.monitor.FileAlterationListenerAdaptor
+
+
File system observer started checking event.
+
+
onStop(FileAlterationObserver) - Method in interface org.apache.commons.io.monitor.FileAlterationListener
+
+
File system observer finished checking event.
+
+
onStop(FileAlterationObserver) - Method in class org.apache.commons.io.monitor.FileAlterationListenerAdaptor
+
+
File system observer finished checking event.
+
+
openInputStream(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Opens a FileInputStream for the specified file, providing better + error messages than simply calling new FileInputStream(file).
+
+
openOutputStream(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Opens a FileOutputStream for the specified file, checking and + creating the parent directory if it does not exist.
+
+
openOutputStream(File, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Opens a FileOutputStream for the specified file, checking and + creating the parent directory if it does not exist.
+
+
or(IOFileFilter...) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that ORs the specified filters.
+
+
orFileFilter(IOFileFilter, IOFileFilter) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+ +
+
OrFileFilter - Class in org.apache.commons.io.filefilter
+
+
A FileFilter providing conditional OR logic across a list of + file filters.
+
+
OrFileFilter() - Constructor for class org.apache.commons.io.filefilter.OrFileFilter
+
+
Constructs a new instance of OrFileFilter.
+
+
OrFileFilter(List<IOFileFilter>) - Constructor for class org.apache.commons.io.filefilter.OrFileFilter
+
+
Constructs a new instance of OrFileFilter + with the specified filters.
+
+
OrFileFilter(IOFileFilter, IOFileFilter) - Constructor for class org.apache.commons.io.filefilter.OrFileFilter
+
+
Constructs a new file filter that ORs the result of two other filters.
+
+
org.apache.commons.io - package org.apache.commons.io
+
+
+This package defines utility classes for working with streams, readers, +writers and files.
+
+
org.apache.commons.io.comparator - package org.apache.commons.io.comparator
+
+
This package provides various Comparator implementations +for Files.
+
+
org.apache.commons.io.filefilter - package org.apache.commons.io.filefilter
+
+
This package defines an interface (IOFileFilter) that combines both +FileFilter and FilenameFilter.
+
+
org.apache.commons.io.input - package org.apache.commons.io.input
+
+
+This package provides implementations of input classes, such as +InputStream and Reader.
+
+
org.apache.commons.io.monitor - package org.apache.commons.io.monitor
+
+
+This package provides a component for monitoring file system events +(directory and file create, update and delete events).
+
+
org.apache.commons.io.output - package org.apache.commons.io.output
+
+
+This package provides implementations of output classes, such as +OutputStream and Writer.
+
+
org.apache.commons.io.serialization - package org.apache.commons.io.serialization
+
+
+This package provides a framework for controlling the deserialization of classes.
+
+
+ + + +

P

+
+
PATH_COMPARATOR - Static variable in class org.apache.commons.io.comparator.PathFileComparator
+
+
Case-sensitive path comparator instance (see IOCase.SENSITIVE)
+
+
PATH_INSENSITIVE_COMPARATOR - Static variable in class org.apache.commons.io.comparator.PathFileComparator
+
+
Case-insensitive path comparator instance (see IOCase.INSENSITIVE)
+
+
PATH_INSENSITIVE_REVERSE - Static variable in class org.apache.commons.io.comparator.PathFileComparator
+
+
Reverse case-insensitive path comparator instance (see IOCase.INSENSITIVE)
+
+
PATH_REVERSE - Static variable in class org.apache.commons.io.comparator.PathFileComparator
+
+
Reverse case-sensitive path comparator instance (see IOCase.SENSITIVE)
+
+
PATH_SYSTEM_COMPARATOR - Static variable in class org.apache.commons.io.comparator.PathFileComparator
+
+
System sensitive path comparator instance (see IOCase.SYSTEM)
+
+
PATH_SYSTEM_REVERSE - Static variable in class org.apache.commons.io.comparator.PathFileComparator
+
+
Reverse system sensitive path comparator instance (see IOCase.SYSTEM)
+
+
PathFileComparator - Class in org.apache.commons.io.comparator
+
+
Compare the path of two files for order (see File.getPath()).
+
+
PathFileComparator() - Constructor for class org.apache.commons.io.comparator.PathFileComparator
+
+
Construct a case sensitive file path comparator instance.
+
+
PathFileComparator(IOCase) - Constructor for class org.apache.commons.io.comparator.PathFileComparator
+
+
Construct a file path comparator instance with the specified case-sensitivity.
+
+
prefixFileFilter(String) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that returns true if the filename starts with the specified text.
+
+
prefixFileFilter(String, IOCase) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that returns true if the filename starts with the specified text.
+
+
PrefixFileFilter - Class in org.apache.commons.io.filefilter
+
+
Filters filenames for a certain prefix.
+
+
PrefixFileFilter(String) - Constructor for class org.apache.commons.io.filefilter.PrefixFileFilter
+
+
Constructs a new Prefix file filter for a single prefix.
+
+
PrefixFileFilter(String, IOCase) - Constructor for class org.apache.commons.io.filefilter.PrefixFileFilter
+
+
Constructs a new Prefix file filter for a single prefix + specifying case-sensitivity.
+
+
PrefixFileFilter(String[]) - Constructor for class org.apache.commons.io.filefilter.PrefixFileFilter
+
+
Constructs a new Prefix file filter for any of an array of prefixes.
+
+
PrefixFileFilter(String[], IOCase) - Constructor for class org.apache.commons.io.filefilter.PrefixFileFilter
+
+
Constructs a new Prefix file filter for any of an array of prefixes + specifying case-sensitivity.
+
+
PrefixFileFilter(List<String>) - Constructor for class org.apache.commons.io.filefilter.PrefixFileFilter
+
+
Constructs a new Prefix file filter for a list of prefixes.
+
+
PrefixFileFilter(List<String>, IOCase) - Constructor for class org.apache.commons.io.filefilter.PrefixFileFilter
+
+
Constructs a new Prefix file filter for a list of prefixes + specifying case-sensitivity.
+
+
processByte() - Method in class org.apache.commons.io.input.NullInputStream
+
+
Return a byte value for the read() method.
+
+
processBytes(byte[], int, int) - Method in class org.apache.commons.io.input.NullInputStream
+
+
Process the bytes for the read(byte[], offset, length) + method.
+
+
processChar() - Method in class org.apache.commons.io.input.NullReader
+
+
Return a character value for the read() method.
+
+
processChars(char[], int, int) - Method in class org.apache.commons.io.input.NullReader
+
+
Process the characters for the read(char[], offset, length) + method.
+
+
ProxyInputStream - Class in org.apache.commons.io.input
+
+
A Proxy stream which acts as expected, that is it passes the method + calls on to the proxied stream and doesn't change which methods are + being called.
+
+
ProxyInputStream(InputStream) - Constructor for class org.apache.commons.io.input.ProxyInputStream
+
+
Constructs a new ProxyInputStream.
+
+
ProxyOutputStream - Class in org.apache.commons.io.output
+
+
A Proxy stream which acts as expected, that is it passes the method + calls on to the proxied stream and doesn't change which methods are + being called.
+
+
ProxyOutputStream(OutputStream) - Constructor for class org.apache.commons.io.output.ProxyOutputStream
+
+
Constructs a new ProxyOutputStream.
+
+
ProxyReader - Class in org.apache.commons.io.input
+
+
A Proxy stream which acts as expected, that is it passes the method + calls on to the proxied stream and doesn't change which methods are + being called.
+
+
ProxyReader(Reader) - Constructor for class org.apache.commons.io.input.ProxyReader
+
+
Constructs a new ProxyReader.
+
+
ProxyWriter - Class in org.apache.commons.io.output
+
+
A Proxy stream which acts as expected, that is it passes the method + calls on to the proxied stream and doesn't change which methods are + being called.
+
+
ProxyWriter(Writer) - Constructor for class org.apache.commons.io.output.ProxyWriter
+
+
Constructs a new ProxyWriter.
+
+
+ + + +

R

+
+
read() - Method in class org.apache.commons.io.input.BOMInputStream
+
+
Invokes the delegate's read() method, detecting and optionally skipping BOM.
+
+
read(byte[], int, int) - Method in class org.apache.commons.io.input.BOMInputStream
+
+
Invokes the delegate's read(byte[], int, int) method, detecting and optionally skipping BOM.
+
+
read(byte[]) - Method in class org.apache.commons.io.input.BOMInputStream
+
+
Invokes the delegate's read(byte[]) method, detecting and optionally skipping BOM.
+
+
read() - Method in class org.apache.commons.io.input.BoundedInputStream
+
+
Invokes the delegate's read() method if + the current position is less than the limit.
+
+
read(byte[]) - Method in class org.apache.commons.io.input.BoundedInputStream
+
+
Invokes the delegate's read(byte[]) method.
+
+
read(byte[], int, int) - Method in class org.apache.commons.io.input.BoundedInputStream
+
+
Invokes the delegate's read(byte[], int, int) method.
+
+
read() - Method in class org.apache.commons.io.input.BoundedReader
+
+
Reads a single character, @see java.io.Reader#read()
+
+
read(char[], int, int) - Method in class org.apache.commons.io.input.BoundedReader
+
+
Reads into an array, @see java.io.Reader#read(char[], int, int)
+
+
read() - Method in class org.apache.commons.io.input.BrokenInputStream
+
+
Throws the configured exception.
+
+
read(byte[], int, int) - Method in class org.apache.commons.io.input.CharSequenceInputStream
+
 
+
read() - Method in class org.apache.commons.io.input.CharSequenceInputStream
+
 
+
read(byte[]) - Method in class org.apache.commons.io.input.CharSequenceInputStream
+
 
+
read() - Method in class org.apache.commons.io.input.CharSequenceReader
+
+
Read a single character.
+
+
read(char[], int, int) - Method in class org.apache.commons.io.input.CharSequenceReader
+
+
Read the sepcified number of characters into the array.
+
+
read() - Method in class org.apache.commons.io.input.ClosedInputStream
+
+
Returns -1 to indicate that the stream is closed.
+
+
read() - Method in class org.apache.commons.io.input.DemuxInputStream
+
+
Read byte from stream associated with current thread.
+
+
read() - Method in class org.apache.commons.io.input.NullInputStream
+
+
Read a byte.
+
+
read(byte[]) - Method in class org.apache.commons.io.input.NullInputStream
+
+
Read some bytes into the specified array.
+
+
read(byte[], int, int) - Method in class org.apache.commons.io.input.NullInputStream
+
+
Read the specified number bytes into an array.
+
+
read() - Method in class org.apache.commons.io.input.NullReader
+
+
Read a character.
+
+
read(char[]) - Method in class org.apache.commons.io.input.NullReader
+
+
Read some characters into the specified array.
+
+
read(char[], int, int) - Method in class org.apache.commons.io.input.NullReader
+
+
Read the specified number characters into an array.
+
+
read() - Method in class org.apache.commons.io.input.ProxyInputStream
+
+
Invokes the delegate's read() method.
+
+
read(byte[]) - Method in class org.apache.commons.io.input.ProxyInputStream
+
+
Invokes the delegate's read(byte[]) method.
+
+
read(byte[], int, int) - Method in class org.apache.commons.io.input.ProxyInputStream
+
+
Invokes the delegate's read(byte[], int, int) method.
+
+
read() - Method in class org.apache.commons.io.input.ProxyReader
+
+
Invokes the delegate's read() method.
+
+
read(char[]) - Method in class org.apache.commons.io.input.ProxyReader
+
+
Invokes the delegate's read(char[]) method.
+
+
read(char[], int, int) - Method in class org.apache.commons.io.input.ProxyReader
+
+
Invokes the delegate's read(char[], int, int) method.
+
+
read(CharBuffer) - Method in class org.apache.commons.io.input.ProxyReader
+
+
Invokes the delegate's read(CharBuffer) method.
+
+
read(byte[], int, int) - Method in class org.apache.commons.io.input.ReaderInputStream
+
+
Read the specified number of bytes into an array.
+
+
read(byte[]) - Method in class org.apache.commons.io.input.ReaderInputStream
+
+
Read the specified number of bytes into an array.
+
+
read() - Method in class org.apache.commons.io.input.ReaderInputStream
+
+
Read a single byte.
+
+
read() - Method in class org.apache.commons.io.input.TeeInputStream
+
+
Reads a single byte from the proxied input stream and writes it to + the associated output stream.
+
+
read(byte[], int, int) - Method in class org.apache.commons.io.input.TeeInputStream
+
+
Reads bytes from the proxied input stream and writes the read bytes + to the associated output stream.
+
+
read(byte[]) - Method in class org.apache.commons.io.input.TeeInputStream
+
+
Reads bytes from the proxied input stream and writes the read bytes + to the associated output stream.
+
+
read() - Method in class org.apache.commons.io.input.UnixLineEndingInputStream
+
read() - Method in class org.apache.commons.io.input.WindowsLineEndingInputStream
+
read(char[], int, int) - Method in class org.apache.commons.io.input.XmlStreamReader
+
+
Invokes the underlying reader's read(char[], int, int) method.
+
+
read(Reader, char[], int, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Reads characters from an input character stream.
+
+
read(Reader, char[]) - Static method in class org.apache.commons.io.IOUtils
+
+
Reads characters from an input character stream.
+
+
read(InputStream, byte[], int, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Reads bytes from an input stream.
+
+
read(InputStream, byte[]) - Static method in class org.apache.commons.io.IOUtils
+
+
Reads bytes from an input stream.
+
+
read(ReadableByteChannel, ByteBuffer) - Static method in class org.apache.commons.io.IOUtils
+
+
Reads bytes from a ReadableByteChannel.
+
+
READ_ONLY - Static variable in class org.apache.commons.io.filefilter.CanReadFileFilter
+
+
Singleton instance of read-only filter
+
+
readBoolean() - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+ +
+
readByte() - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+
Invokes the delegate's read() method.
+
+
readChar() - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+
Reads a character delegating to SwappedDataInputStream.readShort().
+
+
readDouble() - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+ +
+
ReaderInputStream - Class in org.apache.commons.io.input
+
+
InputStream implementation that reads a character stream from a Reader + and transforms it to a byte stream using a specified charset encoding.
+
+
ReaderInputStream(Reader, CharsetEncoder) - Constructor for class org.apache.commons.io.input.ReaderInputStream
+
+
Construct a new ReaderInputStream.
+
+
ReaderInputStream(Reader, CharsetEncoder, int) - Constructor for class org.apache.commons.io.input.ReaderInputStream
+
+
Construct a new ReaderInputStream.
+
+
ReaderInputStream(Reader, Charset, int) - Constructor for class org.apache.commons.io.input.ReaderInputStream
+
+
Construct a new ReaderInputStream.
+
+
ReaderInputStream(Reader, Charset) - Constructor for class org.apache.commons.io.input.ReaderInputStream
+
+
Construct a new ReaderInputStream with a default input buffer size of + 1024 characters.
+
+
ReaderInputStream(Reader, String, int) - Constructor for class org.apache.commons.io.input.ReaderInputStream
+
+
Construct a new ReaderInputStream.
+
+
ReaderInputStream(Reader, String) - Constructor for class org.apache.commons.io.input.ReaderInputStream
+
+
Construct a new ReaderInputStream with a default input buffer size of + 1024 characters.
+
+
ReaderInputStream(Reader) - Constructor for class org.apache.commons.io.input.ReaderInputStream
+
+ +
+
readFileToByteArray(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Reads the contents of a file into a byte array.
+
+
readFileToString(File, Charset) - Static method in class org.apache.commons.io.FileUtils
+
+
Reads the contents of a file into a String.
+
+
readFileToString(File, String) - Static method in class org.apache.commons.io.FileUtils
+
+
Reads the contents of a file into a String.
+
+
readFileToString(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Deprecated. + +
+
+
readFloat() - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+ +
+
readFully(byte[]) - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+
Invokes the delegate's read(byte[] data, int, int) method.
+
+
readFully(byte[], int, int) - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+
Invokes the delegate's read(byte[] data, int, int) method.
+
+
readFully(Reader, char[], int, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Reads the requested number of characters or fail if there are not enough left.
+
+
readFully(Reader, char[]) - Static method in class org.apache.commons.io.IOUtils
+
+
Reads the requested number of characters or fail if there are not enough left.
+
+
readFully(InputStream, byte[], int, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Reads the requested number of bytes or fail if there are not enough left.
+
+
readFully(InputStream, byte[]) - Static method in class org.apache.commons.io.IOUtils
+
+
Reads the requested number of bytes or fail if there are not enough left.
+
+
readFully(InputStream, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Reads the requested number of bytes or fail if there are not enough left.
+
+
readFully(ReadableByteChannel, ByteBuffer) - Static method in class org.apache.commons.io.IOUtils
+
+
Reads the requested number of bytes or fail if there are not enough left.
+
+
readInt() - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+ +
+
readLine() - Method in class org.apache.commons.io.input.ReversedLinesFileReader
+
+
Returns the lines of the file from bottom to top.
+
+
readLine() - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+
Not currently supported - throws UnsupportedOperationException.
+
+
readLines(File, Charset) - Static method in class org.apache.commons.io.FileUtils
+
+
Reads the contents of a file line by line to a List of Strings.
+
+
readLines(File, String) - Static method in class org.apache.commons.io.FileUtils
+
+
Reads the contents of a file line by line to a List of Strings.
+
+
readLines(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Deprecated. + +
+
+
readLines(InputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
readLines(InputStream, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of an InputStream as a list of Strings, + one entry per line, using the specified character encoding.
+
+
readLines(InputStream, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of an InputStream as a list of Strings, + one entry per line, using the specified character encoding.
+
+
readLines(Reader) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of a Reader as a list of Strings, + one entry per line.
+
+
readLong() - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+ +
+
readShort() - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+ +
+
readSwappedDouble(byte[], int) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads a "double" value from a byte array at a given offset.
+
+
readSwappedDouble(InputStream) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads a "double" value from an InputStream.
+
+
readSwappedFloat(byte[], int) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads a "float" value from a byte array at a given offset.
+
+
readSwappedFloat(InputStream) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads a "float" value from an InputStream.
+
+
readSwappedInteger(byte[], int) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads a "int" value from a byte array at a given offset.
+
+
readSwappedInteger(InputStream) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads a "int" value from an InputStream.
+
+
readSwappedLong(byte[], int) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads a "long" value from a byte array at a given offset.
+
+
readSwappedLong(InputStream) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads a "long" value from an InputStream.
+
+
readSwappedShort(byte[], int) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads a "short" value from a byte array at a given offset.
+
+
readSwappedShort(InputStream) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads a "short" value from an InputStream.
+
+
readSwappedUnsignedInteger(byte[], int) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads an unsigned integer (32-bit) value from a byte array at a given + offset.
+
+
readSwappedUnsignedInteger(InputStream) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads a unsigned integer (32-bit) from an InputStream.
+
+
readSwappedUnsignedShort(byte[], int) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads an unsigned short (16-bit) value from a byte array at a given + offset.
+
+
readSwappedUnsignedShort(InputStream) - Static method in class org.apache.commons.io.EndianUtils
+
+
Reads a unsigned short (16-bit) from an InputStream.
+
+
readUnsignedByte() - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+
Invokes the delegate's read() method.
+
+
readUnsignedShort() - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+ +
+
readUTF() - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+
Not currently supported - throws UnsupportedOperationException.
+
+
ready() - Method in class org.apache.commons.io.input.ProxyReader
+
+
Invokes the delegate's ready() method.
+
+
refresh(File) - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Refresh the attributes from the File, indicating + whether the file has changed.
+
+
RegexFileFilter - Class in org.apache.commons.io.filefilter
+
+
Filters files using supplied regular expression(s).
+
+
RegexFileFilter(String) - Constructor for class org.apache.commons.io.filefilter.RegexFileFilter
+
+
Construct a new regular expression filter.
+
+
RegexFileFilter(String, IOCase) - Constructor for class org.apache.commons.io.filefilter.RegexFileFilter
+
+
Construct a new regular expression filter with the specified flags case sensitivity.
+
+
RegexFileFilter(String, int) - Constructor for class org.apache.commons.io.filefilter.RegexFileFilter
+
+
Construct a new regular expression filter with the specified flags.
+
+
RegexFileFilter(Pattern) - Constructor for class org.apache.commons.io.filefilter.RegexFileFilter
+
+
Construct a new regular expression filter for a compiled regular expression
+
+
reject(Class<?>...) - Method in class org.apache.commons.io.serialization.ValidatingObjectInputStream
+
+
Reject the specified classes for deserialization, even if they + are otherwise accepted.
+
+
reject(String...) - Method in class org.apache.commons.io.serialization.ValidatingObjectInputStream
+
+
Reject the wildcard specified classes for deserialization, + even if they are otherwise accepted.
+
+
reject(Pattern) - Method in class org.apache.commons.io.serialization.ValidatingObjectInputStream
+
+
Reject class names that match the supplied pattern for + deserialization, even if they are otherwise accepted.
+
+
reject(ClassNameMatcher) - Method in class org.apache.commons.io.serialization.ValidatingObjectInputStream
+
+
Reject class names where the supplied ClassNameMatcher matches for + deserialization, even if they are otherwise accepted.
+
+
remove() - Method in class org.apache.commons.io.LineIterator
+
+
Unsupported.
+
+
removeExtension(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Removes the extension from a filename.
+
+
removeFileFilter(IOFileFilter) - Method in class org.apache.commons.io.filefilter.AndFileFilter
+
+
Removes the specified file filter.
+
+
removeFileFilter(IOFileFilter) - Method in interface org.apache.commons.io.filefilter.ConditionalFileFilter
+
+
Removes the specified file filter.
+
+
removeFileFilter(IOFileFilter) - Method in class org.apache.commons.io.filefilter.OrFileFilter
+
+
Removes the specified file filter.
+
+
removeListener(FileAlterationListener) - Method in class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Remove a file system listener.
+
+
removeObserver(FileAlterationObserver) - Method in class org.apache.commons.io.monitor.FileAlterationMonitor
+
+
Remove a file system observer from this monitor.
+
+
requiredCharsets() - Static method in class org.apache.commons.io.Charsets
+
+
Constructs a sorted map from canonical charset names to charset objects required of every implementation of the + Java platform.
+
+
reset() - Method in class org.apache.commons.io.input.BOMInputStream
+
+
Invokes the delegate's reset() method.
+
+
reset() - Method in class org.apache.commons.io.input.BoundedInputStream
+
+
Invokes the delegate's reset() method.
+
+
reset() - Method in class org.apache.commons.io.input.BoundedReader
+
+
Resets the target to the latest mark, @see java.io.Reader#reset()
+
+
reset() - Method in class org.apache.commons.io.input.BrokenInputStream
+
+
Throws the configured exception.
+
+
reset() - Method in class org.apache.commons.io.input.CharSequenceInputStream
+
 
+
reset() - Method in class org.apache.commons.io.input.CharSequenceReader
+
+
Reset the reader to the last marked position (or the beginning if + mark has not been called).
+
+
reset() - Method in class org.apache.commons.io.input.NullInputStream
+
+
Reset the stream to the point when mark was last called.
+
+
reset() - Method in class org.apache.commons.io.input.NullReader
+
+
Reset the stream to the point when mark was last called.
+
+
reset() - Method in class org.apache.commons.io.input.ProxyInputStream
+
+
Invokes the delegate's reset() method.
+
+
reset() - Method in class org.apache.commons.io.input.ProxyReader
+
+
Invokes the delegate's reset() method.
+
+
reset() - Method in class org.apache.commons.io.output.ByteArrayOutputStream
+
 
+
resetByteCount() - Method in class org.apache.commons.io.input.CountingInputStream
+
+
Set the byte count back to 0.
+
+
resetByteCount() - Method in class org.apache.commons.io.output.CountingOutputStream
+
+
Set the byte count back to 0.
+
+
resetByteCount() - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Resets the byteCount to zero.
+
+
resetCount() - Method in class org.apache.commons.io.input.CountingInputStream
+
+
Set the byte count back to 0.
+
+
resetCount() - Method in class org.apache.commons.io.output.CountingOutputStream
+
+
Set the byte count back to 0.
+
+
resolveClass(ObjectStreamClass) - Method in class org.apache.commons.io.input.ClassLoaderObjectInputStream
+
+
Resolve a class specified by the descriptor using the + specified ClassLoader or the super ClassLoader.
+
+
resolveClass(ObjectStreamClass) - Method in class org.apache.commons.io.serialization.ValidatingObjectInputStream
+
 
+
resolveProxyClass(String[]) - Method in class org.apache.commons.io.input.ClassLoaderObjectInputStream
+
+
Create a proxy class that implements the specified interfaces using + the specified ClassLoader or the super ClassLoader.
+
+
ReversedLinesFileReader - Class in org.apache.commons.io.input
+
+
Reads lines in a file reversely (similar to a BufferedReader, but starting at + the last line).
+
+
ReversedLinesFileReader(File) - Constructor for class org.apache.commons.io.input.ReversedLinesFileReader
+
+ +
+
ReversedLinesFileReader(File, Charset) - Constructor for class org.apache.commons.io.input.ReversedLinesFileReader
+
+
Creates a ReversedLinesFileReader with default block size of 4KB and the + specified encoding.
+
+
ReversedLinesFileReader(File, int, Charset) - Constructor for class org.apache.commons.io.input.ReversedLinesFileReader
+
+
Creates a ReversedLinesFileReader with the given block size and encoding.
+
+
ReversedLinesFileReader(File, int, String) - Constructor for class org.apache.commons.io.input.ReversedLinesFileReader
+
+
Creates a ReversedLinesFileReader with the given block size and encoding.
+
+
run() - Method in class org.apache.commons.io.input.Tailer
+
+
Follows changes in the file, calling the TailerListener's handle method for each new line.
+
+
run() - Method in class org.apache.commons.io.monitor.FileAlterationMonitor
+
+
Run.
+
+
+ + + +

S

+
+
separatorsToSystem(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Converts all separators to the system separator.
+
+
separatorsToUnix(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Converts all separators to the Unix separator of forward slash.
+
+
separatorsToWindows(String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Converts all separators to the Windows separator of backslash.
+
+
setByteCount(long) - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Sets the byteCount to count.
+
+
setChildren(FileEntry[]) - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Set the directory's files.
+
+
setDirectory(boolean) - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Set whether the file is a directory or not.
+
+
setExists(boolean) - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Set whether the file existed the last time it + was checked.
+
+
setFileFilters(List<IOFileFilter>) - Method in class org.apache.commons.io.filefilter.AndFileFilter
+
+
Sets the list of file filters, replacing any previously configured + file filters on this filter.
+
+
setFileFilters(List<IOFileFilter>) - Method in interface org.apache.commons.io.filefilter.ConditionalFileFilter
+
+
Sets the list of file filters, replacing any previously configured + file filters on this filter.
+
+
setFileFilters(List<IOFileFilter>) - Method in class org.apache.commons.io.filefilter.OrFileFilter
+
+
Sets the list of file filters, replacing any previously configured + file filters on this filter.
+
+
setLastModified(long) - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Return the last modified time from the last time it + was checked.
+
+
setLength(long) - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Set the length.
+
+
setName(String) - Method in class org.apache.commons.io.monitor.FileEntry
+
+
Set the file name.
+
+
setPropagateClose(boolean) - Method in class org.apache.commons.io.input.BoundedInputStream
+
+
Set whether the BoundedInputStream.close() method + should propagate to the underling InputStream.
+
+
setThreadFactory(ThreadFactory) - Method in class org.apache.commons.io.monitor.FileAlterationMonitor
+
+
Set the thread factory.
+
+
size() - Method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Return the current size of the byte array.
+
+
SIZE_COMPARATOR - Static variable in class org.apache.commons.io.comparator.SizeFileComparator
+
+
Size comparator instance - directories are treated as zero size
+
+
SIZE_REVERSE - Static variable in class org.apache.commons.io.comparator.SizeFileComparator
+
+
Reverse size comparator instance - directories are treated as zero size
+
+
SIZE_SUMDIR_COMPARATOR - Static variable in class org.apache.commons.io.comparator.SizeFileComparator
+
+
Size comparator instance which sums the size of a directory's contents + using FileUtils.sizeOfDirectory(File)
+
+
SIZE_SUMDIR_REVERSE - Static variable in class org.apache.commons.io.comparator.SizeFileComparator
+
+
Reverse size comparator instance which sums the size of a directory's contents + using FileUtils.sizeOfDirectory(File)
+
+
SizeFileComparator - Class in org.apache.commons.io.comparator
+
+
Compare the length/size of two files for order (see + File.length() and FileUtils.sizeOfDirectory(File)).
+
+
SizeFileComparator() - Constructor for class org.apache.commons.io.comparator.SizeFileComparator
+
+
Construct a file size comparator instance (directories treated as zero size).
+
+
SizeFileComparator(boolean) - Constructor for class org.apache.commons.io.comparator.SizeFileComparator
+
+
Construct a file size comparator instance specifying whether the size of + the directory contents should be aggregated.
+
+
sizeFileFilter(long) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that returns true if the file is bigger than a certain size.
+
+
sizeFileFilter(long, boolean) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that filters based on file size.
+
+
SizeFileFilter - Class in org.apache.commons.io.filefilter
+
+
Filters files based on size, can filter either smaller files or + files equal to or larger than a given threshold.
+
+
SizeFileFilter(long) - Constructor for class org.apache.commons.io.filefilter.SizeFileFilter
+
+
Constructs a new size file filter for files equal to or + larger than a certain size.
+
+
SizeFileFilter(long, boolean) - Constructor for class org.apache.commons.io.filefilter.SizeFileFilter
+
+
Constructs a new size file filter for files based on a certain size + threshold.
+
+
sizeOf(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Returns the size of the specified file or directory.
+
+
sizeOfAsBigInteger(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Returns the size of the specified file or directory.
+
+
sizeOfDirectory(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Counts the size of a directory recursively (sum of the length of all files).
+
+
sizeOfDirectoryAsBigInteger(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Counts the size of a directory recursively (sum of the length of all files).
+
+
sizeRangeFileFilter(long, long) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that accepts files whose size is >= minimum size + and <= maximum size.
+
+
skip(long) - Method in class org.apache.commons.io.input.BOMInputStream
+
+
Invokes the delegate's skip(long) method, detecting and optionallyskipping BOM.
+
+
skip(long) - Method in class org.apache.commons.io.input.BoundedInputStream
+
+
Invokes the delegate's skip(long) method.
+
+
skip(long) - Method in class org.apache.commons.io.input.BrokenInputStream
+
+
Throws the configured exception.
+
+
skip(long) - Method in class org.apache.commons.io.input.CharSequenceInputStream
+
 
+
skip(long) - Method in class org.apache.commons.io.input.CharSequenceReader
+
+
Skip the specified number of characters.
+
+
skip(long) - Method in class org.apache.commons.io.input.CountingInputStream
+
+
Skips the stream over the specified number of bytes, adding the skipped + amount to the count.
+
+
skip(long) - Method in class org.apache.commons.io.input.NullInputStream
+
+
Skip a specified number of bytes.
+
+
skip(long) - Method in class org.apache.commons.io.input.NullReader
+
+
Skip a specified number of characters.
+
+
skip(long) - Method in class org.apache.commons.io.input.ProxyInputStream
+
+
Invokes the delegate's skip(long) method.
+
+
skip(long) - Method in class org.apache.commons.io.input.ProxyReader
+
+
Invokes the delegate's skip(long) method.
+
+
skip(InputStream, long) - Static method in class org.apache.commons.io.IOUtils
+
+
Skips bytes from an input byte stream.
+
+
skip(ReadableByteChannel, long) - Static method in class org.apache.commons.io.IOUtils
+
+
Skips bytes from a ReadableByteChannel.
+
+
skip(Reader, long) - Static method in class org.apache.commons.io.IOUtils
+
+
Skips characters from an input character stream.
+
+
skipBytes(int) - Method in class org.apache.commons.io.input.SwappedDataInputStream
+
+
Invokes the delegate's skip(int) method.
+
+
skipFully(InputStream, long) - Static method in class org.apache.commons.io.IOUtils
+
+
Skips the requested number of bytes or fail if there are not enough left.
+
+
skipFully(ReadableByteChannel, long) - Static method in class org.apache.commons.io.IOUtils
+
+
Skips the requested number of bytes or fail if there are not enough left.
+
+
skipFully(Reader, long) - Static method in class org.apache.commons.io.IOUtils
+
+
Skips the requested number of characters or fail if there are not enough left.
+
+
start() - Method in class org.apache.commons.io.monitor.FileAlterationMonitor
+
+
Start monitoring.
+
+
stop() - Method in class org.apache.commons.io.input.Tailer
+
+
Allows the tailer to complete its current loop and return.
+
+
stop() - Method in class org.apache.commons.io.monitor.FileAlterationMonitor
+
+
Stop monitoring.
+
+
stop(long) - Method in class org.apache.commons.io.monitor.FileAlterationMonitor
+
+
Stop monitoring.
+
+
StringBuilderWriter - Class in org.apache.commons.io.output
+
+
Writer implementation that outputs to a StringBuilder.
+
+
StringBuilderWriter() - Constructor for class org.apache.commons.io.output.StringBuilderWriter
+
+
Constructs a new StringBuilder instance with default capacity.
+
+
StringBuilderWriter(int) - Constructor for class org.apache.commons.io.output.StringBuilderWriter
+
+
Constructs a new StringBuilder instance with the specified capacity.
+
+
StringBuilderWriter(StringBuilder) - Constructor for class org.apache.commons.io.output.StringBuilderWriter
+
+
Constructs a new instance with the specified StringBuilder.
+
+
suffixFileFilter(String) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that returns true if the filename ends with the specified text.
+
+
suffixFileFilter(String, IOCase) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that returns true if the filename ends with the specified text.
+
+
SuffixFileFilter - Class in org.apache.commons.io.filefilter
+
+
Filters files based on the suffix (what the filename ends with).
+
+
SuffixFileFilter(String) - Constructor for class org.apache.commons.io.filefilter.SuffixFileFilter
+
+
Constructs a new Suffix file filter for a single extension.
+
+
SuffixFileFilter(String, IOCase) - Constructor for class org.apache.commons.io.filefilter.SuffixFileFilter
+
+
Constructs a new Suffix file filter for a single extension + specifying case-sensitivity.
+
+
SuffixFileFilter(String[]) - Constructor for class org.apache.commons.io.filefilter.SuffixFileFilter
+
+
Constructs a new Suffix file filter for an array of suffixs.
+
+
SuffixFileFilter(String[], IOCase) - Constructor for class org.apache.commons.io.filefilter.SuffixFileFilter
+
+
Constructs a new Suffix file filter for an array of suffixs + specifying case-sensitivity.
+
+
SuffixFileFilter(List<String>) - Constructor for class org.apache.commons.io.filefilter.SuffixFileFilter
+
+
Constructs a new Suffix file filter for a list of suffixes.
+
+
SuffixFileFilter(List<String>, IOCase) - Constructor for class org.apache.commons.io.filefilter.SuffixFileFilter
+
+
Constructs a new Suffix file filter for a list of suffixes + specifying case-sensitivity.
+
+
swapDouble(double) - Static method in class org.apache.commons.io.EndianUtils
+
+
Converts a "double" value between endian systems.
+
+
swapFloat(float) - Static method in class org.apache.commons.io.EndianUtils
+
+
Converts a "float" value between endian systems.
+
+
swapInteger(int) - Static method in class org.apache.commons.io.EndianUtils
+
+
Converts a "int" value between endian systems.
+
+
swapLong(long) - Static method in class org.apache.commons.io.EndianUtils
+
+
Converts a "long" value between endian systems.
+
+
SwappedDataInputStream - Class in org.apache.commons.io.input
+
+
DataInput for systems relying on little endian data formats.
+
+
SwappedDataInputStream(InputStream) - Constructor for class org.apache.commons.io.input.SwappedDataInputStream
+
+
Constructs a SwappedDataInputStream.
+
+
swapShort(short) - Static method in class org.apache.commons.io.EndianUtils
+
+
Converts a "short" value between endian systems.
+
+
+ + + +

T

+
+
TaggedInputStream - Class in org.apache.commons.io.input
+
+
An input stream decorator that tags potential exceptions so that the + stream that caused the exception can easily be identified.
+
+
TaggedInputStream(InputStream) - Constructor for class org.apache.commons.io.input.TaggedInputStream
+
+
Creates a tagging decorator for the given input stream.
+
+
TaggedIOException - Exception in org.apache.commons.io
+
+
An IOException decorator that adds a serializable tag to the + wrapped exception.
+
+
TaggedIOException(IOException, Serializable) - Constructor for exception org.apache.commons.io.TaggedIOException
+
+
Creates a tagged wrapper for the given exception.
+
+
TaggedOutputStream - Class in org.apache.commons.io.output
+
+
An output stream decorator that tags potential exceptions so that the + stream that caused the exception can easily be identified.
+
+
TaggedOutputStream(OutputStream) - Constructor for class org.apache.commons.io.output.TaggedOutputStream
+
+
Creates a tagging decorator for the given output stream.
+
+
Tailer - Class in org.apache.commons.io.input
+
+
Simple implementation of the unix "tail -f" functionality.
+
+
Tailer(File, TailerListener) - Constructor for class org.apache.commons.io.input.Tailer
+
+
Creates a Tailer for the given file, starting from the beginning, with the default delay of 1.0s.
+
+
Tailer(File, TailerListener, long) - Constructor for class org.apache.commons.io.input.Tailer
+
+
Creates a Tailer for the given file, starting from the beginning.
+
+
Tailer(File, TailerListener, long, boolean) - Constructor for class org.apache.commons.io.input.Tailer
+
+
Creates a Tailer for the given file, with a delay other than the default 1.0s.
+
+
Tailer(File, TailerListener, long, boolean, boolean) - Constructor for class org.apache.commons.io.input.Tailer
+
+
Creates a Tailer for the given file, with a delay other than the default 1.0s.
+
+
Tailer(File, TailerListener, long, boolean, int) - Constructor for class org.apache.commons.io.input.Tailer
+
+
Creates a Tailer for the given file, with a specified buffer size.
+
+
Tailer(File, TailerListener, long, boolean, boolean, int) - Constructor for class org.apache.commons.io.input.Tailer
+
+
Creates a Tailer for the given file, with a specified buffer size.
+
+
Tailer(File, Charset, TailerListener, long, boolean, boolean, int) - Constructor for class org.apache.commons.io.input.Tailer
+
+
Creates a Tailer for the given file, with a specified buffer size.
+
+
TailerListener - Interface in org.apache.commons.io.input
+
+
Listener for events from a Tailer.
+
+
TailerListenerAdapter - Class in org.apache.commons.io.input
+
+ +
+
TailerListenerAdapter() - Constructor for class org.apache.commons.io.input.TailerListenerAdapter
+
 
+
TeeInputStream - Class in org.apache.commons.io.input
+
+
InputStream proxy that transparently writes a copy of all bytes read + from the proxied stream to a given OutputStream.
+
+
TeeInputStream(InputStream, OutputStream) - Constructor for class org.apache.commons.io.input.TeeInputStream
+
+
Creates a TeeInputStream that proxies the given InputStream + and copies all read bytes to the given OutputStream.
+
+
TeeInputStream(InputStream, OutputStream, boolean) - Constructor for class org.apache.commons.io.input.TeeInputStream
+
+
Creates a TeeInputStream that proxies the given InputStream + and copies all read bytes to the given OutputStream.
+
+
TeeOutputStream - Class in org.apache.commons.io.output
+
+
Classic splitter of OutputStream.
+
+
TeeOutputStream(OutputStream, OutputStream) - Constructor for class org.apache.commons.io.output.TeeOutputStream
+
+
Constructs a TeeOutputStream.
+
+
ThresholdingOutputStream - Class in org.apache.commons.io.output
+
+
An output stream which triggers an event when a specified number of bytes of + data have been written to it.
+
+
ThresholdingOutputStream(int) - Constructor for class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Constructs an instance of this class which will trigger an event at the + specified threshold.
+
+
thresholdReached() - Method in class org.apache.commons.io.output.DeferredFileOutputStream
+
+
Switches the underlying output stream from a memory based stream to one + that is backed by disk.
+
+
thresholdReached() - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Indicates that the configured threshold has been reached, and that a + subclass should take whatever action necessary on this event.
+
+
throwCauseIfTaggedWith(Throwable, Object) - Static method in exception org.apache.commons.io.TaggedIOException
+
+
Throws the original IOException if the given throwable is + a TaggedIOException decorator the given tag.
+
+
throwIfCauseOf(Throwable) - Method in class org.apache.commons.io.input.TaggedInputStream
+
+
Re-throws the original exception thrown by this stream.
+
+
throwIfCauseOf(Exception) - Method in class org.apache.commons.io.output.TaggedOutputStream
+
+
Re-throws the original exception thrown by this stream.
+
+
toBufferedInputStream(InputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Fetches entire contents of an InputStream and represent + same data as result InputStream.
+
+
toBufferedInputStream(InputStream, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Fetches entire contents of an InputStream and represent + same data as result InputStream.
+
+
toBufferedInputStream(InputStream) - Static method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Fetches entire contents of an InputStream and represent + same data as result InputStream.
+
+
toBufferedInputStream(InputStream, int) - Static method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Fetches entire contents of an InputStream and represent + same data as result InputStream.
+
+
toBufferedReader(Reader) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns the given reader if it is a BufferedReader, otherwise creates a BufferedReader from the given + reader.
+
+
toBufferedReader(Reader, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Returns the given reader if it is a BufferedReader, otherwise creates a BufferedReader from the given + reader.
+
+
toByteArray(InputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of an InputStream as a byte[].
+
+
toByteArray(InputStream, long) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets contents of an InputStream as a byte[].
+
+
toByteArray(InputStream, int) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of an InputStream as a byte[].
+
+
toByteArray(Reader) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
toByteArray(Reader, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of a Reader as a byte[] + using the specified character encoding.
+
+
toByteArray(Reader, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of a Reader as a byte[] + using the specified character encoding.
+
+
toByteArray(String) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. +
2.5 Use String.getBytes() instead
+
+
+
toByteArray(URI) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of a URI as a byte[].
+
+
toByteArray(URL) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of a URL as a byte[].
+
+
toByteArray(URLConnection) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of a URLConnection as a byte[].
+
+
toByteArray() - Method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Gets the curent contents of this byte stream as a byte array.
+
+
toCharArray(InputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
toCharArray(InputStream, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of an InputStream as a character array + using the specified character encoding.
+
+
toCharArray(InputStream, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of an InputStream as a character array + using the specified character encoding.
+
+
toCharArray(Reader) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of a Reader as a character array.
+
+
toCharset(Charset) - Static method in class org.apache.commons.io.Charsets
+
+
Returns the given Charset or the default Charset if the given Charset is null.
+
+
toCharset(String) - Static method in class org.apache.commons.io.Charsets
+
+
Returns a Charset for the named charset.
+
+
toFile(URL) - Static method in class org.apache.commons.io.FileUtils
+
+
Convert from a URL to a File.
+
+
toFiles(URL[]) - Static method in class org.apache.commons.io.FileUtils
+
+
Converts each of an array of URL to a File.
+
+
toInputStream(CharSequence) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
toInputStream(CharSequence, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Converts the specified CharSequence to an input stream, encoded as bytes + using the specified character encoding.
+
+
toInputStream(CharSequence, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Converts the specified CharSequence to an input stream, encoded as bytes + using the specified character encoding.
+
+
toInputStream(String) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
toInputStream(String, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Converts the specified string to an input stream, encoded as bytes + using the specified character encoding.
+
+
toInputStream(String, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Converts the specified string to an input stream, encoded as bytes + using the specified character encoding.
+
+
toInputStream() - Method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Gets the current contents of this byte stream as a Input Stream.
+
+
toList(IOFileFilter...) - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Create a List of file filters.
+
+
toString() - Method in class org.apache.commons.io.ByteOrderMark
+
+
Provide a String representation of the BOM.
+
+
toString() - Method in class org.apache.commons.io.comparator.CompositeFileComparator
+
+
String representation of this file comparator.
+
+
toString() - Method in class org.apache.commons.io.comparator.ExtensionFileComparator
+
+
String representation of this file comparator.
+
+
toString() - Method in class org.apache.commons.io.comparator.NameFileComparator
+
+
String representation of this file comparator.
+
+
toString() - Method in class org.apache.commons.io.comparator.PathFileComparator
+
+
String representation of this file comparator.
+
+
toString() - Method in class org.apache.commons.io.comparator.SizeFileComparator
+
+
String representation of this file comparator.
+
+
toString() - Method in class org.apache.commons.io.FileDeleteStrategy
+
+
Gets a string describing the delete strategy.
+
+
toString() - Method in class org.apache.commons.io.filefilter.AbstractFileFilter
+
+
Provide a String representaion of this file filter.
+
+
toString() - Method in class org.apache.commons.io.filefilter.AgeFileFilter
+
+
Provide a String representaion of this file filter.
+
+
toString() - Method in class org.apache.commons.io.filefilter.AndFileFilter
+
+
Provide a String representaion of this file filter.
+
+
toString() - Method in class org.apache.commons.io.filefilter.DelegateFileFilter
+
+
Provide a String representaion of this file filter.
+
+
toString() - Method in class org.apache.commons.io.filefilter.MagicNumberFileFilter
+
+
Returns a String representation of the file filter, which includes the + magic number bytes and byte offset.
+
+
toString() - Method in class org.apache.commons.io.filefilter.NameFileFilter
+
+
Provide a String representaion of this file filter.
+
+
toString() - Method in class org.apache.commons.io.filefilter.NotFileFilter
+
+
Provide a String representaion of this file filter.
+
+
toString() - Method in class org.apache.commons.io.filefilter.OrFileFilter
+
+
Provide a String representaion of this file filter.
+
+
toString() - Method in class org.apache.commons.io.filefilter.PrefixFileFilter
+
+
Provide a String representaion of this file filter.
+
+
toString() - Method in class org.apache.commons.io.filefilter.SizeFileFilter
+
+
Provide a String representaion of this file filter.
+
+
toString() - Method in class org.apache.commons.io.filefilter.SuffixFileFilter
+
+
Provide a String representaion of this file filter.
+
+
toString() - Method in class org.apache.commons.io.filefilter.WildcardFileFilter
+
+
Provide a String representation of this file filter.
+
+
toString() - Method in class org.apache.commons.io.input.BoundedInputStream
+
+
Invokes the delegate's toString() method.
+
+
toString() - Method in class org.apache.commons.io.input.CharSequenceReader
+
+
Return a String representation of the underlying + character sequence.
+
+
toString() - Method in enum org.apache.commons.io.IOCase
+
+
Gets a string describing the sensitivity.
+
+
toString(InputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
toString(InputStream, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of an InputStream as a String + using the specified character encoding.
+
+
toString(InputStream, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of an InputStream as a String + using the specified character encoding.
+
+
toString(Reader) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of a Reader as a String.
+
+
toString(URI) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
toString(URI, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents at the given URI.
+
+
toString(URI, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents at the given URI.
+
+
toString(URL) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
toString(URL, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents at the given URL.
+
+
toString(URL, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents at the given URL.
+
+
toString(byte[]) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. +
2.5 Use String.String(byte[]) instead
+
+
+
toString(byte[], String) - Static method in class org.apache.commons.io.IOUtils
+
+
Gets the contents of a byte[] as a String + using the specified character encoding.
+
+
toString() - Method in class org.apache.commons.io.monitor.FileAlterationObserver
+
+
Provide a String representation of this observer.
+
+
toString() - Method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Deprecated. + +
+
+
toString(String) - Method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Gets the curent contents of this byte stream as a string + using the specified encoding.
+
+
toString(Charset) - Method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Gets the curent contents of this byte stream as a string + using the specified encoding.
+
+
toString() - Method in class org.apache.commons.io.output.StringBuilderWriter
+
+ +
+
touch(File) - Static method in class org.apache.commons.io.FileUtils
+
+
Implements the same behaviour as the "touch" utility on Unix.
+
+
toURLs(File[]) - Static method in class org.apache.commons.io.FileUtils
+
+
Converts each of an array of File to a URL.
+
+
track(File, Object) - Static method in class org.apache.commons.io.FileCleaner
+
+ +
+
track(File, Object, FileDeleteStrategy) - Static method in class org.apache.commons.io.FileCleaner
+
+ +
+
track(String, Object) - Static method in class org.apache.commons.io.FileCleaner
+
+ +
+
track(String, Object, FileDeleteStrategy) - Static method in class org.apache.commons.io.FileCleaner
+
+ +
+
track(File, Object) - Method in class org.apache.commons.io.FileCleaningTracker
+
+
Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected.
+
+
track(File, Object, FileDeleteStrategy) - Method in class org.apache.commons.io.FileCleaningTracker
+
+
Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected.
+
+
track(String, Object) - Method in class org.apache.commons.io.FileCleaningTracker
+
+
Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected.
+
+
track(String, Object, FileDeleteStrategy) - Method in class org.apache.commons.io.FileCleaningTracker
+
+
Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected.
+
+
TRUE - Static variable in class org.apache.commons.io.filefilter.TrueFileFilter
+
+
Singleton instance of true filter.
+
+
trueFileFilter() - Static method in class org.apache.commons.io.filefilter.FileFilterUtils
+
+
Returns a filter that always returns true.
+
+
TrueFileFilter - Class in org.apache.commons.io.filefilter
+
+
A file filter that always returns true.
+
+
TrueFileFilter() - Constructor for class org.apache.commons.io.filefilter.TrueFileFilter
+
+
Restrictive constructor.
+
+
+ + + +

U

+
+
UnixLineEndingInputStream - Class in org.apache.commons.io.input
+
+
A filtering input stream that ensures the content will have unix-style line endings, LF.
+
+
UnixLineEndingInputStream(InputStream, boolean) - Constructor for class org.apache.commons.io.input.UnixLineEndingInputStream
+
+
Create an input stream that filters another stream
+
+
US_ASCII - Static variable in class org.apache.commons.io.Charsets
+
+
Deprecated. +
Use Java 7's StandardCharsets
+
+
+
UTF_16 - Static variable in class org.apache.commons.io.Charsets
+
+
Deprecated. +
Use Java 7's StandardCharsets
+
+
+
UTF_16BE - Static variable in class org.apache.commons.io.ByteOrderMark
+
+
UTF-16BE BOM (Big-Endian)
+
+
UTF_16BE - Static variable in class org.apache.commons.io.Charsets
+
+
Deprecated. +
Use Java 7's StandardCharsets
+
+
+
UTF_16LE - Static variable in class org.apache.commons.io.ByteOrderMark
+
+
UTF-16LE BOM (Little-Endian)
+
+
UTF_16LE - Static variable in class org.apache.commons.io.Charsets
+
+
Deprecated. +
Use Java 7's StandardCharsets
+
+
+
UTF_32BE - Static variable in class org.apache.commons.io.ByteOrderMark
+
+
UTF-32BE BOM (Big-Endian)
+
+
UTF_32LE - Static variable in class org.apache.commons.io.ByteOrderMark
+
+
UTF-32LE BOM (Little-Endian)
+
+
UTF_8 - Static variable in class org.apache.commons.io.ByteOrderMark
+
+
UTF-8 BOM
+
+
UTF_8 - Static variable in class org.apache.commons.io.Charsets
+
+
Deprecated. +
Use Java 7's StandardCharsets
+
+
+
UTF_BOM - Static variable in class org.apache.commons.io.ByteOrderMark
+
+
Unicode BOM character; external form depends on the encoding.
+
+
+ + + +

V

+
+
ValidatingObjectInputStream - Class in org.apache.commons.io.serialization
+
+
An ObjectInputStream that's restricted to deserialize + a limited set of classes.
+
+
ValidatingObjectInputStream(InputStream) - Constructor for class org.apache.commons.io.serialization.ValidatingObjectInputStream
+
+
Constructs an object to deserialize the specified input stream.
+
+
valueOf(String) - Static method in enum org.apache.commons.io.IOCase
+
+
Returns the enum constant of this type with the specified name.
+
+
values() - Static method in enum org.apache.commons.io.IOCase
+
+
Returns an array containing the constants of this enum type, in +the order they are declared.
+
+
VISIBLE - Static variable in class org.apache.commons.io.filefilter.HiddenFileFilter
+
+
Singleton instance of visible filter
+
+
+ + + +

W

+
+
waitFor(File, int) - Static method in class org.apache.commons.io.FileUtils
+
+
Waits for NFS to propagate a file creation, imposing a timeout.
+
+
walk(File, Collection<T>) - Method in class org.apache.commons.io.DirectoryWalker
+
+
Internal method that walks the directory hierarchy in a depth-first manner.
+
+
WildcardFileFilter - Class in org.apache.commons.io.filefilter
+
+
Filters files using the supplied wildcards.
+
+
WildcardFileFilter(String) - Constructor for class org.apache.commons.io.filefilter.WildcardFileFilter
+
+
Construct a new case-sensitive wildcard filter for a single wildcard.
+
+
WildcardFileFilter(String, IOCase) - Constructor for class org.apache.commons.io.filefilter.WildcardFileFilter
+
+
Construct a new wildcard filter for a single wildcard specifying case-sensitivity.
+
+
WildcardFileFilter(String[]) - Constructor for class org.apache.commons.io.filefilter.WildcardFileFilter
+
+
Construct a new case-sensitive wildcard filter for an array of wildcards.
+
+
WildcardFileFilter(String[], IOCase) - Constructor for class org.apache.commons.io.filefilter.WildcardFileFilter
+
+
Construct a new wildcard filter for an array of wildcards specifying case-sensitivity.
+
+
WildcardFileFilter(List<String>) - Constructor for class org.apache.commons.io.filefilter.WildcardFileFilter
+
+
Construct a new case-sensitive wildcard filter for a list of wildcards.
+
+
WildcardFileFilter(List<String>, IOCase) - Constructor for class org.apache.commons.io.filefilter.WildcardFileFilter
+
+
Construct a new wildcard filter for a list of wildcards specifying case-sensitivity.
+
+
WildcardFilter - Class in org.apache.commons.io.filefilter
+
+
Deprecated. +
Use WilcardFileFilter. Deprecated as this class performs directory + filtering which it shouldn't do, but that can't be removed due to compatability.
+
+
+
WildcardFilter(String) - Constructor for class org.apache.commons.io.filefilter.WildcardFilter
+
+
Deprecated.
+
Construct a new case-sensitive wildcard filter for a single wildcard.
+
+
WildcardFilter(String[]) - Constructor for class org.apache.commons.io.filefilter.WildcardFilter
+
+
Deprecated.
+
Construct a new case-sensitive wildcard filter for an array of wildcards.
+
+
WildcardFilter(List<String>) - Constructor for class org.apache.commons.io.filefilter.WildcardFilter
+
+
Deprecated.
+
Construct a new case-sensitive wildcard filter for a list of wildcards.
+
+
wildcardMatch(String, String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Checks a filename to see if it matches the specified wildcard matcher, + always testing case-sensitive.
+
+
wildcardMatch(String, String, IOCase) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Checks a filename to see if it matches the specified wildcard matcher + allowing control over case-sensitivity.
+
+
wildcardMatchOnSystem(String, String) - Static method in class org.apache.commons.io.FilenameUtils
+
+
Checks a filename to see if it matches the specified wildcard matcher + using the case rules of the system.
+
+
WindowsLineEndingInputStream - Class in org.apache.commons.io.input
+
+
A filtering input stream that ensures the content will have windows line endings, CRLF.
+
+
WindowsLineEndingInputStream(InputStream, boolean) - Constructor for class org.apache.commons.io.input.WindowsLineEndingInputStream
+
+
Create an input stream that filters another stream
+
+
write(File, CharSequence) - Static method in class org.apache.commons.io.FileUtils
+
+
Deprecated. + +
+
+
write(File, CharSequence, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+ +
+
write(File, CharSequence, Charset) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes a CharSequence to a file creating the file if it does not exist.
+
+
write(File, CharSequence, String) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes a CharSequence to a file creating the file if it does not exist.
+
+
write(File, CharSequence, Charset, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes a CharSequence to a file creating the file if it does not exist.
+
+
write(File, CharSequence, String, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes a CharSequence to a file creating the file if it does not exist.
+
+
write(byte[], OutputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes bytes from a byte[] to an OutputStream.
+
+
write(byte[], Writer) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
write(byte[], Writer, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes bytes from a byte[] to chars on a Writer + using the specified character encoding.
+
+
write(byte[], Writer, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes bytes from a byte[] to chars on a Writer + using the specified character encoding.
+
+
write(char[], Writer) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes chars from a char[] to a Writer
+
+
write(char[], OutputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
write(char[], OutputStream, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes chars from a char[] to bytes on an + OutputStream using the specified character encoding.
+
+
write(char[], OutputStream, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes chars from a char[] to bytes on an + OutputStream using the specified character encoding.
+
+
write(CharSequence, Writer) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes chars from a CharSequence to a Writer.
+
+
write(CharSequence, OutputStream) - Static method in class org.apache.commons.io.IOUtils
+
+ +
+
write(CharSequence, OutputStream, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes chars from a CharSequence to bytes on an + OutputStream using the specified character encoding.
+
+
write(CharSequence, OutputStream, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes chars from a CharSequence to bytes on an + OutputStream using the specified character encoding.
+
+
write(String, Writer) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes chars from a String to a Writer.
+
+
write(String, OutputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. + +
+
+
write(String, OutputStream, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes chars from a String to bytes on an + OutputStream using the specified character encoding.
+
+
write(String, OutputStream, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes chars from a String to bytes on an + OutputStream using the specified character encoding.
+
+
write(StringBuffer, Writer) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. +
replaced by write(CharSequence, Writer)
+
+
+
write(StringBuffer, OutputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. +
replaced by write(CharSequence, OutputStream)
+
+
+
write(StringBuffer, OutputStream, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Deprecated. +
replaced by write(CharSequence, OutputStream, String)
+
+
+
write(int) - Method in class org.apache.commons.io.output.AppendableOutputStream
+
+
Write a character to the underlying appendable.
+
+
write(int) - Method in class org.apache.commons.io.output.BrokenOutputStream
+
+
Throws the configured exception.
+
+
write(byte[], int, int) - Method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Write the bytes to byte array.
+
+
write(int) - Method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Write a byte to byte array.
+
+
write(InputStream) - Method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Writes the entire contents of the specified input stream to this + byte stream.
+
+
write(byte[], int, int) - Method in class org.apache.commons.io.output.ChunkedOutputStream
+
+
Writes the data buffer in chunks to the underlying stream
+
+
write(char[], int, int) - Method in class org.apache.commons.io.output.ChunkedWriter
+
+
writes the data buffer in chunks to the underlying writer
+
+
write(int) - Method in class org.apache.commons.io.output.ClosedOutputStream
+
+
Throws an IOException to indicate that the stream is closed.
+
+
write(int) - Method in class org.apache.commons.io.output.DemuxOutputStream
+
+
Writes byte to stream associated with current thread.
+
+
write(int) - Method in class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Write a character.
+
+
write(char[]) - Method in class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Write the characters from an array.
+
+
write(char[], int, int) - Method in class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Write the specified characters from an array.
+
+
write(String) - Method in class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Write the characters from a string.
+
+
write(String, int, int) - Method in class org.apache.commons.io.output.FileWriterWithEncoding
+
+
Write the specified characters from a string.
+
+
write(int) - Method in class org.apache.commons.io.output.LockableFileWriter
+
+
Write a character.
+
+
write(char[]) - Method in class org.apache.commons.io.output.LockableFileWriter
+
+
Write the characters from an array.
+
+
write(char[], int, int) - Method in class org.apache.commons.io.output.LockableFileWriter
+
+
Write the specified characters from an array.
+
+
write(String) - Method in class org.apache.commons.io.output.LockableFileWriter
+
+
Write the characters from a string.
+
+
write(String, int, int) - Method in class org.apache.commons.io.output.LockableFileWriter
+
+
Write the specified characters from a string.
+
+
write(byte[], int, int) - Method in class org.apache.commons.io.output.NullOutputStream
+
+
Does nothing - output to /dev/null.
+
+
write(int) - Method in class org.apache.commons.io.output.NullOutputStream
+
+
Does nothing - output to /dev/null.
+
+
write(byte[]) - Method in class org.apache.commons.io.output.NullOutputStream
+
+
Does nothing - output to /dev/null.
+
+
write(int) - Method in class org.apache.commons.io.output.NullWriter
+
+
Does nothing - output to /dev/null.
+
+
write(char[]) - Method in class org.apache.commons.io.output.NullWriter
+
+
Does nothing - output to /dev/null.
+
+
write(char[], int, int) - Method in class org.apache.commons.io.output.NullWriter
+
+
Does nothing - output to /dev/null.
+
+
write(String) - Method in class org.apache.commons.io.output.NullWriter
+
+
Does nothing - output to /dev/null.
+
+
write(String, int, int) - Method in class org.apache.commons.io.output.NullWriter
+
+
Does nothing - output to /dev/null.
+
+
write(int) - Method in class org.apache.commons.io.output.ProxyOutputStream
+
+
Invokes the delegate's write(int) method.
+
+
write(byte[]) - Method in class org.apache.commons.io.output.ProxyOutputStream
+
+
Invokes the delegate's write(byte[]) method.
+
+
write(byte[], int, int) - Method in class org.apache.commons.io.output.ProxyOutputStream
+
+
Invokes the delegate's write(byte[]) method.
+
+
write(int) - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Invokes the delegate's write(int) method.
+
+
write(char[]) - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Invokes the delegate's write(char[]) method.
+
+
write(char[], int, int) - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Invokes the delegate's write(char[], int, int) method.
+
+
write(String) - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Invokes the delegate's write(String) method.
+
+
write(String, int, int) - Method in class org.apache.commons.io.output.ProxyWriter
+
+
Invokes the delegate's write(String) method.
+
+
write(String) - Method in class org.apache.commons.io.output.StringBuilderWriter
+
+
Writes a String to the StringBuilder.
+
+
write(char[], int, int) - Method in class org.apache.commons.io.output.StringBuilderWriter
+
+
Writes a portion of a character array to the StringBuilder.
+
+
write(byte[]) - Method in class org.apache.commons.io.output.TeeOutputStream
+
+
Write the bytes to both streams.
+
+
write(byte[], int, int) - Method in class org.apache.commons.io.output.TeeOutputStream
+
+
Write the specified bytes to both streams.
+
+
write(int) - Method in class org.apache.commons.io.output.TeeOutputStream
+
+
Write a byte to both streams.
+
+
write(int) - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Writes the specified byte to this output stream.
+
+
write(byte[]) - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Writes b.length bytes from the specified byte array to this + output stream.
+
+
write(byte[], int, int) - Method in class org.apache.commons.io.output.ThresholdingOutputStream
+
+
Writes len bytes from the specified byte array starting at + offset off to this output stream.
+
+
write(byte[], int, int) - Method in class org.apache.commons.io.output.WriterOutputStream
+
+
Write bytes from the specified byte array to the stream.
+
+
write(byte[]) - Method in class org.apache.commons.io.output.WriterOutputStream
+
+
Write bytes from the specified byte array to the stream.
+
+
write(int) - Method in class org.apache.commons.io.output.WriterOutputStream
+
+
Write a single byte to the stream.
+
+
write(char[], int, int) - Method in class org.apache.commons.io.output.XmlStreamWriter
+
+
Write the characters to the underlying writer, detecing encoding.
+
+
writeByteArrayToFile(File, byte[]) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes a byte array to a file creating the file if it does not exist.
+
+
writeByteArrayToFile(File, byte[], boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes a byte array to a file creating the file if it does not exist.
+
+
writeByteArrayToFile(File, byte[], int, int) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes len bytes from the specified byte array starting + at offset off to a file, creating the file if it does + not exist.
+
+
writeByteArrayToFile(File, byte[], int, int, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes len bytes from the specified byte array starting + at offset off to a file, creating the file if it does + not exist.
+
+
writeChunked(byte[], OutputStream) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes bytes from a byte[] to an OutputStream using chunked writes.
+
+
writeChunked(char[], Writer) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes chars from a char[] to a Writer using chunked writes.
+
+
writeLines(File, String, Collection<?>) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes the toString() value of each item in a collection to + the specified File line by line.
+
+
writeLines(File, String, Collection<?>, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes the toString() value of each item in a collection to + the specified File line by line, optionally appending.
+
+
writeLines(File, Collection<?>) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes the toString() value of each item in a collection to + the specified File line by line.
+
+
writeLines(File, Collection<?>, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes the toString() value of each item in a collection to + the specified File line by line.
+
+
writeLines(File, String, Collection<?>, String) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes the toString() value of each item in a collection to + the specified File line by line.
+
+
writeLines(File, String, Collection<?>, String, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes the toString() value of each item in a collection to + the specified File line by line.
+
+
writeLines(File, Collection<?>, String) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes the toString() value of each item in a collection to + the specified File line by line.
+
+
writeLines(File, Collection<?>, String, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes the toString() value of each item in a collection to + the specified File line by line.
+
+
writeLines(Collection<?>, String, OutputStream) - Static method in class org.apache.commons.io.IOUtils
+
+ +
+
writeLines(Collection<?>, String, OutputStream, Charset) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes the toString() value of each item in a collection to + an OutputStream line by line, using the specified character + encoding and the specified line ending.
+
+
writeLines(Collection<?>, String, OutputStream, String) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes the toString() value of each item in a collection to + an OutputStream line by line, using the specified character + encoding and the specified line ending.
+
+
writeLines(Collection<?>, String, Writer) - Static method in class org.apache.commons.io.IOUtils
+
+
Writes the toString() value of each item in a collection to + a Writer line by line, using the specified line ending.
+
+
WriterOutputStream - Class in org.apache.commons.io.output
+
+
OutputStream implementation that transforms a byte stream to a + character stream using a specified charset encoding and writes the resulting + stream to a Writer.
+
+
WriterOutputStream(Writer, CharsetDecoder) - Constructor for class org.apache.commons.io.output.WriterOutputStream
+
+
Constructs a new WriterOutputStream with a default output buffer size of + 1024 characters.
+
+
WriterOutputStream(Writer, CharsetDecoder, int, boolean) - Constructor for class org.apache.commons.io.output.WriterOutputStream
+
+
Constructs a new WriterOutputStream.
+
+
WriterOutputStream(Writer, Charset, int, boolean) - Constructor for class org.apache.commons.io.output.WriterOutputStream
+
+
Constructs a new WriterOutputStream.
+
+
WriterOutputStream(Writer, Charset) - Constructor for class org.apache.commons.io.output.WriterOutputStream
+
+
Constructs a new WriterOutputStream with a default output buffer size of + 1024 characters.
+
+
WriterOutputStream(Writer, String, int, boolean) - Constructor for class org.apache.commons.io.output.WriterOutputStream
+
+
Constructs a new WriterOutputStream.
+
+
WriterOutputStream(Writer, String) - Constructor for class org.apache.commons.io.output.WriterOutputStream
+
+
Constructs a new WriterOutputStream with a default output buffer size of + 1024 characters.
+
+
WriterOutputStream(Writer) - Constructor for class org.apache.commons.io.output.WriterOutputStream
+
+ +
+
writeStringToFile(File, String, Charset) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes a String to a file creating the file if it does not exist.
+
+
writeStringToFile(File, String, String) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes a String to a file creating the file if it does not exist.
+
+
writeStringToFile(File, String, Charset, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes a String to a file creating the file if it does not exist.
+
+
writeStringToFile(File, String, String, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+
Writes a String to a file creating the file if it does not exist.
+
+
writeStringToFile(File, String) - Static method in class org.apache.commons.io.FileUtils
+
+ +
+
writeStringToFile(File, String, boolean) - Static method in class org.apache.commons.io.FileUtils
+
+ +
+
writeSwappedDouble(byte[], int, double) - Static method in class org.apache.commons.io.EndianUtils
+
+
Writes a "double" value to a byte array at a given offset.
+
+
writeSwappedDouble(OutputStream, double) - Static method in class org.apache.commons.io.EndianUtils
+
+
Writes a "double" value to an OutputStream.
+
+
writeSwappedFloat(byte[], int, float) - Static method in class org.apache.commons.io.EndianUtils
+
+
Writes a "float" value to a byte array at a given offset.
+
+
writeSwappedFloat(OutputStream, float) - Static method in class org.apache.commons.io.EndianUtils
+
+
Writes a "float" value to an OutputStream.
+
+
writeSwappedInteger(byte[], int, int) - Static method in class org.apache.commons.io.EndianUtils
+
+
Writes a "int" value to a byte array at a given offset.
+
+
writeSwappedInteger(OutputStream, int) - Static method in class org.apache.commons.io.EndianUtils
+
+
Writes a "int" value to an OutputStream.
+
+
writeSwappedLong(byte[], int, long) - Static method in class org.apache.commons.io.EndianUtils
+
+
Writes a "long" value to a byte array at a given offset.
+
+
writeSwappedLong(OutputStream, long) - Static method in class org.apache.commons.io.EndianUtils
+
+
Writes a "long" value to an OutputStream.
+
+
writeSwappedShort(byte[], int, short) - Static method in class org.apache.commons.io.EndianUtils
+
+
Writes a "short" value to a byte array at a given offset.
+
+
writeSwappedShort(OutputStream, short) - Static method in class org.apache.commons.io.EndianUtils
+
+
Writes a "short" value to an OutputStream.
+
+
writeTo(OutputStream) - Method in class org.apache.commons.io.output.ByteArrayOutputStream
+
+
Writes the entire contents of this byte stream to the + specified output stream.
+
+
writeTo(OutputStream) - Method in class org.apache.commons.io.output.DeferredFileOutputStream
+
+
Writes the data from this output stream to the specified output stream, + after it has been closed.
+
+
+ + + +

X

+
+
XmlStreamReader - Class in org.apache.commons.io.input
+
+
Character stream that handles all the necessary Voodo to figure out the + charset encoding of the XML document within the stream.
+
+
XmlStreamReader(File) - Constructor for class org.apache.commons.io.input.XmlStreamReader
+
+
Creates a Reader for a File.
+
+
XmlStreamReader(InputStream) - Constructor for class org.apache.commons.io.input.XmlStreamReader
+
+
Creates a Reader for a raw InputStream.
+
+
XmlStreamReader(InputStream, boolean) - Constructor for class org.apache.commons.io.input.XmlStreamReader
+
+
Creates a Reader for a raw InputStream.
+
+
XmlStreamReader(InputStream, boolean, String) - Constructor for class org.apache.commons.io.input.XmlStreamReader
+
+
Creates a Reader for a raw InputStream.
+
+
XmlStreamReader(URL) - Constructor for class org.apache.commons.io.input.XmlStreamReader
+
+
Creates a Reader using the InputStream of a URL.
+
+
XmlStreamReader(URLConnection, String) - Constructor for class org.apache.commons.io.input.XmlStreamReader
+
+
Creates a Reader using the InputStream of a URLConnection.
+
+
XmlStreamReader(InputStream, String) - Constructor for class org.apache.commons.io.input.XmlStreamReader
+
+
Creates a Reader using an InputStream an the associated content-type + header.
+
+
XmlStreamReader(InputStream, String, boolean, String) - Constructor for class org.apache.commons.io.input.XmlStreamReader
+
+
Creates a Reader using an InputStream an the associated content-type + header.
+
+
XmlStreamReader(InputStream, String, boolean) - Constructor for class org.apache.commons.io.input.XmlStreamReader
+
+
Creates a Reader using an InputStream an the associated content-type + header.
+
+
XmlStreamReaderException - Exception in org.apache.commons.io.input
+
+
The XmlStreamReaderException is thrown by the XmlStreamReader constructors if + the charset encoding can not be determined according to the XML 1.0 + specification and RFC 3023.
+
+
XmlStreamReaderException(String, String, String, String) - Constructor for exception org.apache.commons.io.input.XmlStreamReaderException
+
+
Creates an exception instance if the charset encoding could not be + determined.
+
+
XmlStreamReaderException(String, String, String, String, String, String) - Constructor for exception org.apache.commons.io.input.XmlStreamReaderException
+
+
Creates an exception instance if the charset encoding could not be + determined.
+
+
XmlStreamWriter - Class in org.apache.commons.io.output
+
+
Character stream that handles all the necessary Voodo to figure out the + charset encoding of the XML document written to the stream.
+
+
XmlStreamWriter(OutputStream) - Constructor for class org.apache.commons.io.output.XmlStreamWriter
+
+
Construct an new XML stream writer for the specified output stream + with a default encoding of UTF-8.
+
+
XmlStreamWriter(OutputStream, String) - Constructor for class org.apache.commons.io.output.XmlStreamWriter
+
+
Construct an new XML stream writer for the specified output stream + with the specified default encoding.
+
+
XmlStreamWriter(File) - Constructor for class org.apache.commons.io.output.XmlStreamWriter
+
+
Construct an new XML stream writer for the specified file + with a default encoding of UTF-8.
+
+
XmlStreamWriter(File, String) - Constructor for class org.apache.commons.io.output.XmlStreamWriter
+
+
Construct an new XML stream writer for the specified file + with the specified default encoding.
+
+
+A B C D E F G H I L M N O P R S T U V W X 
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/index.html b/docs/licenses/Apache Commons/docs/index.html new file mode 100644 index 0000000..5129b83 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/index.html @@ -0,0 +1,74 @@ + + + + + +Apache Commons IO 2.5 API + + + + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> + + + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/ByteOrderMark.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/ByteOrderMark.html new file mode 100644 index 0000000..3c8d61b --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/ByteOrderMark.html @@ -0,0 +1,527 @@ + + + + + +ByteOrderMark (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class ByteOrderMark

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        UTF_8

        +
        public static final ByteOrderMark UTF_8
        +
        UTF-8 BOM
        +
      • +
      + + + +
        +
      • +

        UTF_16BE

        +
        public static final ByteOrderMark UTF_16BE
        +
        UTF-16BE BOM (Big-Endian)
        +
      • +
      + + + +
        +
      • +

        UTF_16LE

        +
        public static final ByteOrderMark UTF_16LE
        +
        UTF-16LE BOM (Little-Endian)
        +
      • +
      + + + +
        +
      • +

        UTF_32BE

        +
        public static final ByteOrderMark UTF_32BE
        +
        UTF-32BE BOM (Big-Endian)
        +
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        UTF_32LE

        +
        public static final ByteOrderMark UTF_32LE
        +
        UTF-32LE BOM (Little-Endian)
        +
        Since:
        +
        2.2
        +
      • +
      + + + + +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ByteOrderMark

        +
        public ByteOrderMark(String charsetName,
        +             int... bytes)
        +
        Construct a new BOM.
        +
        Parameters:
        charsetName - The name of the charset the BOM represents
        bytes - The BOM's bytes
        +
        Throws:
        +
        IllegalArgumentException - if the charsetName is null or + zero length
        +
        IllegalArgumentException - if the bytes are null or zero + length
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getCharsetName

        +
        public String getCharsetName()
        +
        Return the name of the Charset the BOM represents.
        +
        Returns:
        the character set name
        +
      • +
      + + + +
        +
      • +

        length

        +
        public int length()
        +
        Return the length of the BOM's bytes.
        +
        Returns:
        the length of the BOM's bytes
        +
      • +
      + + + +
        +
      • +

        get

        +
        public int get(int pos)
        +
        The byte at the specified position.
        +
        Parameters:
        pos - The position
        +
        Returns:
        The specified byte
        +
      • +
      + + + +
        +
      • +

        getBytes

        +
        public byte[] getBytes()
        +
        Return a copy of the BOM's bytes.
        +
        Returns:
        a copy of the BOM's bytes
        +
      • +
      + + + +
        +
      • +

        equals

        +
        public boolean equals(Object obj)
        +
        Indicates if this BOM's bytes equals another.
        +
        +
        Overrides:
        +
        equals in class Object
        +
        Parameters:
        obj - The object to compare to
        +
        Returns:
        true if the bom's bytes are equal, otherwise + false
        +
      • +
      + + + +
        +
      • +

        hashCode

        +
        public int hashCode()
        +
        Return the hashcode for this BOM.
        +
        +
        Overrides:
        +
        hashCode in class Object
        +
        Returns:
        the hashcode for this BOM.
        See Also:
        Object.hashCode()
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Provide a String representation of the BOM.
        +
        +
        Overrides:
        +
        toString in class Object
        +
        Returns:
        the length of the BOM's bytes
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/Charsets.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/Charsets.html new file mode 100644 index 0000000..6fb92d4 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/Charsets.html @@ -0,0 +1,514 @@ + + + + + +Charsets (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class Charsets

+
+
+ +
+
    +
  • +
    +
    +
    public class Charsets
    +extends Object
    +
    Charsets required of every implementation of the Java platform. + + From the Java documentation + Standard charsets: +

    + Every implementation of the Java platform is required to support the following character encodings. Consult + the release documentation for your implementation to see if any other encodings are supported. Consult the release + documentation for your implementation to see if any other encodings are supported. +

    + +
      +
    • US-ASCII
      + Seven-bit ASCII, a.k.a. ISO646-US, a.k.a. the Basic Latin block of the Unicode character set.
    • +
    • ISO-8859-1
      + ISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1.
    • +
    • UTF-8
      + Eight-bit Unicode Transformation Format.
    • +
    • UTF-16BE
      + Sixteen-bit Unicode Transformation Format, big-endian byte order.
    • +
    • UTF-16LE
      + Sixteen-bit Unicode Transformation Format, little-endian byte order.
    • +
    • UTF-16
      + Sixteen-bit Unicode Transformation Format, byte order specified by a mandatory initial byte-order mark (either order + accepted on input, big-endian used on output.)
    • +
    +
    Since:
    +
    2.3
    +
    Version:
    +
    $Id: Charsets.java 1686747 2015-06-21 18:44:49Z krosenvold $
    +
    See Also:
    Standard charsets
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        ISO_8859_1

        +
        @Deprecated
        +public static final Charset ISO_8859_1
        +
        Deprecated. Use Java 7's StandardCharsets
        +
        CharEncodingISO Latin Alphabet No. 1, a.k.a. ISO-LATIN-1. +

        + Every implementation of the Java platform is required to support this character encoding. +

        +
        See Also:
        Standard charsets
        +
      • +
      + + + +
        +
      • +

        US_ASCII

        +
        @Deprecated
        +public static final Charset US_ASCII
        +
        Deprecated. Use Java 7's StandardCharsets
        +

        + Seven-bit ASCII, also known as ISO646-US, also known as the Basic Latin block of the Unicode character set. +

        +

        + Every implementation of the Java platform is required to support this character encoding. +

        +
        See Also:
        Standard charsets
        +
      • +
      + + + +
        +
      • +

        UTF_16

        +
        @Deprecated
        +public static final Charset UTF_16
        +
        Deprecated. Use Java 7's StandardCharsets
        +

        + Sixteen-bit Unicode Transformation Format, The byte order specified by a mandatory initial byte-order mark + (either order accepted on input, big-endian used on output) +

        +

        + Every implementation of the Java platform is required to support this character encoding. +

        +
        See Also:
        Standard charsets
        +
      • +
      + + + +
        +
      • +

        UTF_16BE

        +
        @Deprecated
        +public static final Charset UTF_16BE
        +
        Deprecated. Use Java 7's StandardCharsets
        +

        + Sixteen-bit Unicode Transformation Format, big-endian byte order. +

        +

        + Every implementation of the Java platform is required to support this character encoding. +

        +
        See Also:
        Standard charsets
        +
      • +
      + + + +
        +
      • +

        UTF_16LE

        +
        @Deprecated
        +public static final Charset UTF_16LE
        +
        Deprecated. Use Java 7's StandardCharsets
        +

        + Sixteen-bit Unicode Transformation Format, little-endian byte order. +

        +

        + Every implementation of the Java platform is required to support this character encoding. +

        +
        See Also:
        Standard charsets
        +
      • +
      + + + +
        +
      • +

        UTF_8

        +
        @Deprecated
        +public static final Charset UTF_8
        +
        Deprecated. Use Java 7's StandardCharsets
        +

        + Eight-bit Unicode Transformation Format. +

        +

        + Every implementation of the Java platform is required to support this character encoding. +

        +
        See Also:
        Standard charsets
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Charsets

        +
        public Charsets()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        requiredCharsets

        +
        public static SortedMap<String,Charset> requiredCharsets()
        +
        Constructs a sorted map from canonical charset names to charset objects required of every implementation of the + Java platform. +

        + From the Java documentation + Standard charsets: +

        +
        Returns:
        An immutable, case-insensitive map from canonical charset names to charset objects.
        Since:
        +
        2.5
        +
        See Also:
        Charset.availableCharsets()
        +
      • +
      + + + +
        +
      • +

        toCharset

        +
        public static Charset toCharset(Charset charset)
        +
        Returns the given Charset or the default Charset if the given Charset is null.
        +
        Parameters:
        charset - A charset or null.
        +
        Returns:
        the given Charset or the default Charset if the given Charset is null
        +
      • +
      + + + +
        +
      • +

        toCharset

        +
        public static Charset toCharset(String charset)
        +
        Returns a Charset for the named charset. If the name is null, return the default Charset.
        +
        Parameters:
        charset - The name of the requested charset, may be null.
        +
        Returns:
        a Charset for the named charset
        +
        Throws:
        +
        UnsupportedCharsetException - If the named charset is unavailable
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/CopyUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/CopyUtils.html new file mode 100644 index 0000000..0790a26 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/CopyUtils.html @@ -0,0 +1,668 @@ + + + + + +CopyUtils (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class CopyUtils

+
+
+ +
+
    +
  • +
    +
    Deprecated.  +
    Use IOUtils. Will be removed in 2.0. + Methods renamed to IOUtils.write() or IOUtils.copy(). + Null handling behaviour changed in IOUtils (null data does not + throw NullPointerException).
    +
    +
    +
    @Deprecated
    +public class CopyUtils
    +extends Object
    +
    This class provides static utility methods for buffered + copying between sources (InputStream, Reader, + String and byte[]) and destinations + (OutputStream, Writer, String and + byte[]). +

    + Unless otherwise noted, these copy methods do not + flush or close the streams. Often doing so would require making non-portable + assumptions about the streams' origin and further use. This means that both + streams' close() methods must be called after copying. if one + omits this step, then the stream resources (sockets, file descriptors) are + released when the associated Stream is garbage-collected. It is not a good + idea to rely on this mechanism. For a good overview of the distinction + between "memory management" and "resource management", see + this + UnixReview article. +

    + For byte-to-char methods, a copy variant allows the encoding + to be selected (otherwise the platform default is used). We would like to + encourage you to always specify the encoding because relying on the platform + default can lead to unexpected results. +

    + We don't provide special variants for the copy methods that + let you specify the buffer size because in modern VMs the impact on speed + seems to be minimal. We're using a default buffer size of 4 KB. +

    + The copy methods use an internal buffer when copying. It is + therefore advisable not to deliberately wrap the stream arguments + to the copy methods in Buffered* streams. For + example, don't do the following: +

    +  copy( new BufferedInputStream( in ), new BufferedOutputStream( out ) );
    +  
    + The rationale is as follows: +

    + Imagine that an InputStream's read() is a very expensive operation, which + would usually suggest wrapping in a BufferedInputStream. The + BufferedInputStream works by issuing infrequent + InputStream.read(byte[] b, int off, int len) requests on the + underlying InputStream, to fill an internal buffer, from which further + read requests can inexpensively get their data (until the buffer + runs out). +

    + However, the copy methods do the same thing, keeping an + internal buffer, populated by + InputStream.read(byte[] b, int off, int len) requests. Having two + buffers (or three if the destination stream is also buffered) is pointless, + and the unnecessary buffer management hurts performance slightly (about 3%, + according to some simple experiments). +

    + Behold, intrepid explorers; a map of this class: +

    +       Method      Input               Output          Dependency
    +       ------      -----               ------          -------
    + 1     copy        InputStream         OutputStream    (primitive)
    + 2     copy        Reader              Writer          (primitive)
    +
    + 3     copy        InputStream         Writer          2
    +
    + 4     copy        Reader              OutputStream    2
    +
    + 5     copy        String              OutputStream    2
    + 6     copy        String              Writer          (trivial)
    +
    + 7     copy        byte[]              Writer          3
    + 8     copy        byte[]              OutputStream    (trivial)
    + 
    +

    + Note that only the first two methods shuffle bytes; the rest use these + two, or (if possible) copy using native Java copy methods. As there are + method variants to specify the encoding, each row may + correspond to up to 2 methods. +

    + Origin of code: Excalibur.

    +
    Version:
    +
    $Id: CopyUtils.java 1680650 2015-05-20 18:36:40Z britter $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CopyUtils

        +
        public CopyUtils()
        +
        Deprecated. 
        +
        Instances should NOT be constructed in standard programming.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        copy

        +
        public static void copy(byte[] input,
        +        OutputStream output)
        +                 throws IOException
        +
        Deprecated. 
        +
        Copy bytes from a byte[] to an OutputStream.
        +
        Parameters:
        input - the byte array to read from
        output - the OutputStream to write to
        +
        Throws:
        +
        IOException - In case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        copy

        +
        @Deprecated
        +public static void copy(byte[] input,
        +                   Writer output)
        +                 throws IOException
        +
        Deprecated. 2.5 use copy(byte[], Writer, String) instead
        +
        Copy and convert bytes from a byte[] to chars on a + Writer. + The platform's default encoding is used for the byte-to-char conversion.
        +
        Parameters:
        input - the byte array to read from
        output - the Writer to write to
        +
        Throws:
        +
        IOException - In case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static void copy(byte[] input,
        +        Writer output,
        +        String encoding)
        +                 throws IOException
        +
        Deprecated. 
        +
        Copy and convert bytes from a byte[] to chars on a + Writer, using the specified encoding.
        +
        Parameters:
        input - the byte array to read from
        output - the Writer to write to
        encoding - The name of a supported character encoding. See the + IANA + Charset Registry for a list of valid encoding types.
        +
        Throws:
        +
        IOException - In case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static int copy(InputStream input,
        +       OutputStream output)
        +                throws IOException
        +
        Deprecated. 
        +
        Copy bytes from an InputStream to an + OutputStream.
        +
        Parameters:
        input - the InputStream to read from
        output - the OutputStream to write to
        +
        Returns:
        the number of bytes copied
        +
        Throws:
        +
        IOException - In case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static int copy(Reader input,
        +       Writer output)
        +                throws IOException
        +
        Deprecated. 
        +
        Copy chars from a Reader to a Writer.
        +
        Parameters:
        input - the Reader to read from
        output - the Writer to write to
        +
        Returns:
        the number of characters copied
        +
        Throws:
        +
        IOException - In case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        copy

        +
        @Deprecated
        +public static void copy(InputStream input,
        +                   Writer output)
        +                 throws IOException
        +
        Deprecated. 2.5 use copy(InputStream, Writer, String) instead
        +
        Copy and convert bytes from an InputStream to chars on a + Writer. + The platform's default encoding is used for the byte-to-char conversion.
        +
        Parameters:
        input - the InputStream to read from
        output - the Writer to write to
        +
        Throws:
        +
        IOException - In case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static void copy(InputStream input,
        +        Writer output,
        +        String encoding)
        +                 throws IOException
        +
        Deprecated. 
        +
        Copy and convert bytes from an InputStream to chars on a + Writer, using the specified encoding.
        +
        Parameters:
        input - the InputStream to read from
        output - the Writer to write to
        encoding - The name of a supported character encoding. See the + IANA + Charset Registry for a list of valid encoding types.
        +
        Throws:
        +
        IOException - In case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        copy

        +
        @Deprecated
        +public static void copy(Reader input,
        +                   OutputStream output)
        +                 throws IOException
        +
        Deprecated. 2.5 use copy(Reader, OutputStream, String) instead
        +
        Serialize chars from a Reader to bytes on an + OutputStream, and flush the OutputStream. + Uses the default platform encoding.
        +
        Parameters:
        input - the Reader to read from
        output - the OutputStream to write to
        +
        Throws:
        +
        IOException - In case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static void copy(Reader input,
        +        OutputStream output,
        +        String encoding)
        +                 throws IOException
        +
        Deprecated. 
        +
        Serialize chars from a Reader to bytes on an + OutputStream, and flush the OutputStream.
        +
        Parameters:
        input - the Reader to read from
        output - the OutputStream to write to
        encoding - The name of a supported character encoding. See the + IANA + Charset Registry for a list of valid encoding types.
        +
        Throws:
        +
        IOException - In case of an I/O problem
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        copy

        +
        @Deprecated
        +public static void copy(String input,
        +                   OutputStream output)
        +                 throws IOException
        +
        Deprecated. 2.5 use copy(String, OutputStream, String) instead
        +
        Serialize chars from a String to bytes on an + OutputStream, and + flush the OutputStream. + Uses the platform default encoding.
        +
        Parameters:
        input - the String to read from
        output - the OutputStream to write to
        +
        Throws:
        +
        IOException - In case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static void copy(String input,
        +        OutputStream output,
        +        String encoding)
        +                 throws IOException
        +
        Deprecated. 
        +
        Serialize chars from a String to bytes on an + OutputStream, and + flush the OutputStream.
        +
        Parameters:
        input - the String to read from
        output - the OutputStream to write to
        encoding - The name of a supported character encoding. See the + IANA + Charset Registry for a list of valid encoding types.
        +
        Throws:
        +
        IOException - In case of an I/O problem
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static void copy(String input,
        +        Writer output)
        +                 throws IOException
        +
        Deprecated. 
        +
        Copy chars from a String to a Writer.
        +
        Parameters:
        input - the String to read from
        output - the Writer to write to
        +
        Throws:
        +
        IOException - In case of an I/O problem
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/DirectoryWalker.CancelException.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/DirectoryWalker.CancelException.html new file mode 100644 index 0000000..65fe06a --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/DirectoryWalker.CancelException.html @@ -0,0 +1,342 @@ + + + + + +DirectoryWalker.CancelException (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class DirectoryWalker.CancelException

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable
    +
    +
    +
    Enclosing class:
    +
    DirectoryWalker<T>
    +
    +
    +
    +
    public static class DirectoryWalker.CancelException
    +extends IOException
    +
    CancelException is thrown in DirectoryWalker to cancel the current + processing.
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DirectoryWalker.CancelException

        +
        public DirectoryWalker.CancelException(File file,
        +                               int depth)
        +
        Constructs a CancelException with + the file and depth when cancellation occurred.
        +
        Parameters:
        file - the file when the operation was cancelled, may be null
        depth - the depth when the operation was cancelled, may be null
        +
      • +
      + + + +
        +
      • +

        DirectoryWalker.CancelException

        +
        public DirectoryWalker.CancelException(String message,
        +                               File file,
        +                               int depth)
        +
        Constructs a CancelException with + an appropriate message and the file and depth when + cancellation occurred.
        +
        Parameters:
        message - the detail message
        file - the file when the operation was cancelled
        depth - the depth when the operation was cancelled
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getFile

        +
        public File getFile()
        +
        Return the file when the operation was cancelled.
        +
        Returns:
        the file when the operation was cancelled
        +
      • +
      + + + +
        +
      • +

        getDepth

        +
        public int getDepth()
        +
        Return the depth when the operation was cancelled.
        +
        Returns:
        the depth when the operation was cancelled
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/DirectoryWalker.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/DirectoryWalker.html new file mode 100644 index 0000000..a288132 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/DirectoryWalker.html @@ -0,0 +1,897 @@ + + + + + +DirectoryWalker (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class DirectoryWalker<T>

+
+
+ +
+
    +
  • +
    +
    +
    public abstract class DirectoryWalker<T>
    +extends Object
    +
    Abstract class that walks through a directory hierarchy and provides + subclasses with convenient hooks to add specific behaviour. +

    + This class operates with a FileFilter and maximum depth to + limit the files and direcories visited. + Commons IO supplies many common filter implementations in the + filefilter package. +

    + The following sections describe: +

    + + +

    1. Example Implementation

    + + There are many possible extensions, for example, to delete all + files and '.svn' directories, and return a list of deleted files: +
    +  public class FileCleaner extends DirectoryWalker {
    +
    +    public FileCleaner() {
    +      super();
    +    }
    +
    +    public List clean(File startDirectory) {
    +      List results = new ArrayList();
    +      walk(startDirectory, results);
    +      return results;
    +    }
    +
    +    protected boolean handleDirectory(File directory, int depth, Collection results) {
    +      // delete svn directories and then skip
    +      if (".svn".equals(directory.getName())) {
    +        directory.delete();
    +        return false;
    +      } else {
    +        return true;
    +      }
    +
    +    }
    +
    +    protected void handleFile(File file, int depth, Collection results) {
    +      // delete file and add to list of deleted
    +      file.delete();
    +      results.add(file);
    +    }
    +  }
    + 
    + + +

    2. Filter Example

    + + Choosing which directories and files to process can be a key aspect + of using this class. This information can be setup in three ways, + via three different constructors. +

    + The first option is to visit all directories and files. + This is achieved via the no-args constructor. +

    + The second constructor option is to supply a single FileFilter + that describes the files and directories to visit. Care must be taken + with this option as the same filter is used for both directories + and files. +

    + For example, if you wanted all directories which are not hidden + and files which end in ".txt": +

    +  public class FooDirectoryWalker extends DirectoryWalker {
    +    public FooDirectoryWalker(FileFilter filter) {
    +      super(filter, -1);
    +    }
    +  }
    +
    +  // Build up the filters and create the walker
    +    // Create a filter for Non-hidden directories
    +    IOFileFilter fooDirFilter =
    +        FileFilterUtils.andFileFilter(FileFilterUtils.directoryFileFilter,
    +                                      HiddenFileFilter.VISIBLE);
    +
    +    // Create a filter for Files ending in ".txt"
    +    IOFileFilter fooFileFilter =
    +        FileFilterUtils.andFileFilter(FileFilterUtils.fileFileFilter,
    +                                      FileFilterUtils.suffixFileFilter(".txt"));
    +
    +    // Combine the directory and file filters using an OR condition
    +    java.io.FileFilter fooFilter =
    +        FileFilterUtils.orFileFilter(fooDirFilter, fooFileFilter);
    +
    +    // Use the filter to construct a DirectoryWalker implementation
    +    FooDirectoryWalker walker = new FooDirectoryWalker(fooFilter);
    + 
    +

    + The third constructor option is to specify separate filters, one for + directories and one for files. These are combined internally to form + the correct FileFilter, something which is very easy to + get wrong when attempted manually, particularly when trying to + express constructs like 'any file in directories named docs'. +

    + For example, if you wanted all directories which are not hidden + and files which end in ".txt": +

    +  public class FooDirectoryWalker extends DirectoryWalker {
    +    public FooDirectoryWalker(IOFileFilter dirFilter, IOFileFilter fileFilter) {
    +      super(dirFilter, fileFilter, -1);
    +    }
    +  }
    +
    +  // Use the filters to construct the walker
    +  FooDirectoryWalker walker = new FooDirectoryWalker(
    +    HiddenFileFilter.VISIBLE,
    +    FileFilterUtils.suffixFileFilter(".txt"),
    +  );
    + 
    + This is much simpler than the previous example, and is why it is the preferred + option for filtering. + + +

    3. Cancellation

    + + The DirectoryWalker contains some of the logic required for cancel processing. + Subclasses must complete the implementation. +

    + What DirectoryWalker does provide for cancellation is: +

    +

    + Implementations need to provide: +

      +
    • The decision logic on whether to cancel processing or not.
    • +
    • Constructing and throwing a DirectoryWalker.CancelException.
    • +
    • Custom cancel processing in the handleCancelled() method. +
    +

    + Two possible scenarios are envisaged for cancellation: +

      +
    • 3.1 External / Mult-threaded - cancellation being + decided/initiated by an external process.
    • +
    • 3.2 Internal - cancellation being decided/initiated + from within a DirectoryWalker implementation.
    • +
    +

    + The following sections provide example implementations for these two different + scenarios. + + +

    3.1 External / Multi-threaded

    + + This example provides a public cancel() method that can be + called by another thread to stop the processing. A typical example use-case + would be a cancel button on a GUI. Calling this method sets a + + volatile flag to ensure it will work properly in a multi-threaded environment. + The flag is returned by the handleIsCancelled() method, which + will cause the walk to stop immediately. The handleCancelled() + method will be the next, and last, callback method received once cancellation + has occurred. + +
    +  public class FooDirectoryWalker extends DirectoryWalker {
    +
    +    private volatile boolean cancelled = false;
    +
    +    public void cancel() {
    +        cancelled = true;
    +    }
    +
    +    protected boolean handleIsCancelled(File file, int depth, Collection results) {
    +        return cancelled;
    +    }
    +
    +    protected void handleCancelled(File startDirectory, Collection results, CancelException cancel) {
    +        // implement processing required when a cancellation occurs
    +    }
    +  }
    + 
    + + +

    3.2 Internal

    + + This shows an example of how internal cancellation processing could be implemented. + Note the decision logic and throwing a DirectoryWalker.CancelException could be implemented + in any of the lifecycle methods. + +
    +  public class BarDirectoryWalker extends DirectoryWalker {
    +
    +    protected boolean handleDirectory(File directory, int depth, Collection results) throws IOException {
    +        // cancel if hidden directory
    +        if (directory.isHidden()) {
    +            throw new CancelException(file, depth);
    +        }
    +        return true;
    +    }
    +
    +    protected void handleFile(File file, int depth, Collection results) throws IOException {
    +        // cancel if read-only file
    +        if (!file.canWrite()) {
    +            throw new CancelException(file, depth);
    +        }
    +        results.add(file);
    +    }
    +
    +    protected void handleCancelled(File startDirectory, Collection results, CancelException cancel) {
    +        // implement processing required when a cancellation occurs
    +    }
    +  }
    + 
    +
    Since:
    +
    1.3
    +
    Version:
    +
    $Id: DirectoryWalker.java 1723627 2016-01-07 21:15:47Z niallp $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DirectoryWalker

        +
        protected DirectoryWalker()
        +
        Construct an instance with no filtering and unlimited depth.
        +
      • +
      + + + +
        +
      • +

        DirectoryWalker

        +
        protected DirectoryWalker(FileFilter filter,
        +               int depthLimit)
        +
        Construct an instance with a filter and limit the depth navigated to. +

        + The filter controls which files and directories will be navigated to as + part of the walk. The FileFilterUtils class is useful for combining + various filters together. A null filter means that no + filtering should occur and all files and directories will be visited.

        +
        Parameters:
        filter - the filter to apply, null means visit all files
        depthLimit - controls how deep the hierarchy is + navigated to (less than 0 means unlimited)
        +
      • +
      + + + +
        +
      • +

        DirectoryWalker

        +
        protected DirectoryWalker(IOFileFilter directoryFilter,
        +               IOFileFilter fileFilter,
        +               int depthLimit)
        +
        Construct an instance with a directory and a file filter and an optional + limit on the depth navigated to. +

        + The filters control which files and directories will be navigated to as part + of the walk. This constructor uses FileFilterUtils.makeDirectoryOnly(IOFileFilter) + and FileFilterUtils.makeFileOnly(IOFileFilter) internally to combine the filters. + A null filter means that no filtering should occur.

        +
        Parameters:
        directoryFilter - the filter to apply to directories, null means visit all directories
        fileFilter - the filter to apply to files, null means visit all files
        depthLimit - controls how deep the hierarchy is + navigated to (less than 0 means unlimited)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        walk

        +
        protected final void walk(File startDirectory,
        +        Collection<T> results)
        +                   throws IOException
        +
        Internal method that walks the directory hierarchy in a depth-first manner. +

        + Users of this class do not need to call this method. This method will + be called automatically by another (public) method on the specific subclass. +

        + Writers of subclasses should call this method to start the directory walk. + Once called, this method will emit events as it walks the hierarchy. + The event methods have the prefix handle.

        +
        Parameters:
        startDirectory - the directory to start from, not null
        results - the collection of result objects, may be updated
        +
        Throws:
        +
        NullPointerException - if the start directory is null
        +
        IOException - if an I/O Error occurs
        +
      • +
      + + + +
        +
      • +

        checkIfCancelled

        +
        protected final void checkIfCancelled(File file,
        +                    int depth,
        +                    Collection<T> results)
        +                               throws IOException
        +
        Checks whether the walk has been cancelled by calling handleIsCancelled(java.io.File, int, java.util.Collection<T>), + throwing a CancelException if it has. +

        + Writers of subclasses should not normally call this method as it is called + automatically by the walk of the tree. However, sometimes a single method, + typically handleFile(java.io.File, int, java.util.Collection<T>), may take a long time to run. In that case, + you may wish to check for cancellation by calling this method.

        +
        Parameters:
        file - the current file being processed
        depth - the current file level (starting directory = 0)
        results - the collection of result objects, may be updated
        +
        Throws:
        +
        IOException - if an I/O Error occurs
        +
      • +
      + + + +
        +
      • +

        handleIsCancelled

        +
        protected boolean handleIsCancelled(File file,
        +                        int depth,
        +                        Collection<T> results)
        +                             throws IOException
        +
        Overridable callback method invoked to determine if the entire walk + operation should be immediately cancelled. +

        + This method should be implemented by those subclasses that want to + provide a public cancel() method available from another + thread. The design pattern for the subclass should be as follows: +

        +  public class FooDirectoryWalker extends DirectoryWalker {
        +    private volatile boolean cancelled = false;
        +
        +    public void cancel() {
        +        cancelled = true;
        +    }
        +    private void handleIsCancelled(File file, int depth, Collection results) {
        +        return cancelled;
        +    }
        +    protected void handleCancelled(File startDirectory,
        +              Collection results, CancelException cancel) {
        +        // implement processing required when a cancellation occurs
        +    }
        +  }
        + 
        +

        + If this method returns true, then the directory walk is immediately + cancelled. The next callback method will be handleCancelled(java.io.File, java.util.Collection<T>, org.apache.commons.io.DirectoryWalker.CancelException). +

        + This implementation returns false.

        +
        Parameters:
        file - the file or directory being processed
        depth - the current directory level (starting directory = 0)
        results - the collection of result objects, may be updated
        +
        Returns:
        true if the walk has been cancelled
        +
        Throws:
        +
        IOException - if an I/O Error occurs
        +
      • +
      + + + +
        +
      • +

        handleCancelled

        +
        protected void handleCancelled(File startDirectory,
        +                   Collection<T> results,
        +                   DirectoryWalker.CancelException cancel)
        +                        throws IOException
        +
        Overridable callback method invoked when the operation is cancelled. + The file being processed when the cancellation occurred can be + obtained from the exception. +

        + This implementation just re-throws the DirectoryWalker.CancelException.

        +
        Parameters:
        startDirectory - the directory that the walk started from
        results - the collection of result objects, may be updated
        cancel - the exception throw to cancel further processing + containing details at the point of cancellation.
        +
        Throws:
        +
        IOException - if an I/O Error occurs
        +
      • +
      + + + +
        +
      • +

        handleStart

        +
        protected void handleStart(File startDirectory,
        +               Collection<T> results)
        +                    throws IOException
        +
        Overridable callback method invoked at the start of processing. +

        + This implementation does nothing.

        +
        Parameters:
        startDirectory - the directory to start from
        results - the collection of result objects, may be updated
        +
        Throws:
        +
        IOException - if an I/O Error occurs
        +
      • +
      + + + +
        +
      • +

        handleDirectory

        +
        protected boolean handleDirectory(File directory,
        +                      int depth,
        +                      Collection<T> results)
        +                           throws IOException
        +
        Overridable callback method invoked to determine if a directory should be processed. +

        + This method returns a boolean to indicate if the directory should be examined or not. + If you return false, the entire directory and any subdirectories will be skipped. + Note that this functionality is in addition to the filtering by file filter. +

        + This implementation does nothing and returns true.

        +
        Parameters:
        directory - the current directory being processed
        depth - the current directory level (starting directory = 0)
        results - the collection of result objects, may be updated
        +
        Returns:
        true to process this directory, false to skip this directory
        +
        Throws:
        +
        IOException - if an I/O Error occurs
        +
      • +
      + + + +
        +
      • +

        handleDirectoryStart

        +
        protected void handleDirectoryStart(File directory,
        +                        int depth,
        +                        Collection<T> results)
        +                             throws IOException
        +
        Overridable callback method invoked at the start of processing each directory. +

        + This implementation does nothing.

        +
        Parameters:
        directory - the current directory being processed
        depth - the current directory level (starting directory = 0)
        results - the collection of result objects, may be updated
        +
        Throws:
        +
        IOException - if an I/O Error occurs
        +
      • +
      + + + +
        +
      • +

        filterDirectoryContents

        +
        protected File[] filterDirectoryContents(File directory,
        +                             int depth,
        +                             File[] files)
        +                                  throws IOException
        +
        Overridable callback method invoked with the contents of each directory. +

        + This implementation returns the files unchanged

        +
        Parameters:
        directory - the current directory being processed
        depth - the current directory level (starting directory = 0)
        files - the files (possibly filtered) in the directory, may be null
        +
        Returns:
        the filtered list of files
        +
        Throws:
        +
        IOException - if an I/O Error occurs
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        handleFile

        +
        protected void handleFile(File file,
        +              int depth,
        +              Collection<T> results)
        +                   throws IOException
        +
        Overridable callback method invoked for each (non-directory) file. +

        + This implementation does nothing.

        +
        Parameters:
        file - the current file being processed
        depth - the current directory level (starting directory = 0)
        results - the collection of result objects, may be updated
        +
        Throws:
        +
        IOException - if an I/O Error occurs
        +
      • +
      + + + +
        +
      • +

        handleRestricted

        +
        protected void handleRestricted(File directory,
        +                    int depth,
        +                    Collection<T> results)
        +                         throws IOException
        +
        Overridable callback method invoked for each restricted directory. +

        + This implementation does nothing.

        +
        Parameters:
        directory - the restricted directory
        depth - the current directory level (starting directory = 0)
        results - the collection of result objects, may be updated
        +
        Throws:
        +
        IOException - if an I/O Error occurs
        +
      • +
      + + + +
        +
      • +

        handleDirectoryEnd

        +
        protected void handleDirectoryEnd(File directory,
        +                      int depth,
        +                      Collection<T> results)
        +                           throws IOException
        +
        Overridable callback method invoked at the end of processing each directory. +

        + This implementation does nothing.

        +
        Parameters:
        directory - the directory being processed
        depth - the current directory level (starting directory = 0)
        results - the collection of result objects, may be updated
        +
        Throws:
        +
        IOException - if an I/O Error occurs
        +
      • +
      + + + +
        +
      • +

        handleEnd

        +
        protected void handleEnd(Collection<T> results)
        +                  throws IOException
        +
        Overridable callback method invoked at the end of processing. +

        + This implementation does nothing.

        +
        Parameters:
        results - the collection of result objects, may be updated
        +
        Throws:
        +
        IOException - if an I/O Error occurs
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/EndianUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/EndianUtils.html new file mode 100644 index 0000000..33dd4e5 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/EndianUtils.html @@ -0,0 +1,879 @@ + + + + + +EndianUtils (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class EndianUtils

+
+
+ +
+
    +
  • +
    +
    +
    public class EndianUtils
    +extends Object
    +
    Utility code for dealing with different endian systems. +

    + Different computer architectures adopt different conventions for + byte ordering. In so-called "Little Endian" architectures (eg Intel), + the low-order byte is stored in memory at the lowest address, and + subsequent bytes at higher addresses. For "Big Endian" architectures + (eg Motorola), the situation is reversed. + This class helps you solve this incompatibility. +

    + Origin of code: Excalibur

    +
    Version:
    +
    $Id: EndianUtils.java 1686450 2015-06-19 16:43:48Z krosenvold $
    +
    See Also:
    SwappedDataInputStream
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      EndianUtils() +
      Instances should NOT be constructed in standard programming.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static doublereadSwappedDouble(byte[] data, + int offset) +
      Reads a "double" value from a byte array at a given offset.
      +
      static doublereadSwappedDouble(InputStream input) +
      Reads a "double" value from an InputStream.
      +
      static floatreadSwappedFloat(byte[] data, + int offset) +
      Reads a "float" value from a byte array at a given offset.
      +
      static floatreadSwappedFloat(InputStream input) +
      Reads a "float" value from an InputStream.
      +
      static intreadSwappedInteger(byte[] data, + int offset) +
      Reads a "int" value from a byte array at a given offset.
      +
      static intreadSwappedInteger(InputStream input) +
      Reads a "int" value from an InputStream.
      +
      static longreadSwappedLong(byte[] data, + int offset) +
      Reads a "long" value from a byte array at a given offset.
      +
      static longreadSwappedLong(InputStream input) +
      Reads a "long" value from an InputStream.
      +
      static shortreadSwappedShort(byte[] data, + int offset) +
      Reads a "short" value from a byte array at a given offset.
      +
      static shortreadSwappedShort(InputStream input) +
      Reads a "short" value from an InputStream.
      +
      static longreadSwappedUnsignedInteger(byte[] data, + int offset) +
      Reads an unsigned integer (32-bit) value from a byte array at a given + offset.
      +
      static longreadSwappedUnsignedInteger(InputStream input) +
      Reads a unsigned integer (32-bit) from an InputStream.
      +
      static intreadSwappedUnsignedShort(byte[] data, + int offset) +
      Reads an unsigned short (16-bit) value from a byte array at a given + offset.
      +
      static intreadSwappedUnsignedShort(InputStream input) +
      Reads a unsigned short (16-bit) from an InputStream.
      +
      static doubleswapDouble(double value) +
      Converts a "double" value between endian systems.
      +
      static floatswapFloat(float value) +
      Converts a "float" value between endian systems.
      +
      static intswapInteger(int value) +
      Converts a "int" value between endian systems.
      +
      static longswapLong(long value) +
      Converts a "long" value between endian systems.
      +
      static shortswapShort(short value) +
      Converts a "short" value between endian systems.
      +
      static voidwriteSwappedDouble(byte[] data, + int offset, + double value) +
      Writes a "double" value to a byte array at a given offset.
      +
      static voidwriteSwappedDouble(OutputStream output, + double value) +
      Writes a "double" value to an OutputStream.
      +
      static voidwriteSwappedFloat(byte[] data, + int offset, + float value) +
      Writes a "float" value to a byte array at a given offset.
      +
      static voidwriteSwappedFloat(OutputStream output, + float value) +
      Writes a "float" value to an OutputStream.
      +
      static voidwriteSwappedInteger(byte[] data, + int offset, + int value) +
      Writes a "int" value to a byte array at a given offset.
      +
      static voidwriteSwappedInteger(OutputStream output, + int value) +
      Writes a "int" value to an OutputStream.
      +
      static voidwriteSwappedLong(byte[] data, + int offset, + long value) +
      Writes a "long" value to a byte array at a given offset.
      +
      static voidwriteSwappedLong(OutputStream output, + long value) +
      Writes a "long" value to an OutputStream.
      +
      static voidwriteSwappedShort(byte[] data, + int offset, + short value) +
      Writes a "short" value to a byte array at a given offset.
      +
      static voidwriteSwappedShort(OutputStream output, + short value) +
      Writes a "short" value to an OutputStream.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        EndianUtils

        +
        public EndianUtils()
        +
        Instances should NOT be constructed in standard programming.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        swapShort

        +
        public static short swapShort(short value)
        +
        Converts a "short" value between endian systems.
        +
        Parameters:
        value - value to convert
        +
        Returns:
        the converted value
        +
      • +
      + + + +
        +
      • +

        swapInteger

        +
        public static int swapInteger(int value)
        +
        Converts a "int" value between endian systems.
        +
        Parameters:
        value - value to convert
        +
        Returns:
        the converted value
        +
      • +
      + + + +
        +
      • +

        swapLong

        +
        public static long swapLong(long value)
        +
        Converts a "long" value between endian systems.
        +
        Parameters:
        value - value to convert
        +
        Returns:
        the converted value
        +
      • +
      + + + +
        +
      • +

        swapFloat

        +
        public static float swapFloat(float value)
        +
        Converts a "float" value between endian systems.
        +
        Parameters:
        value - value to convert
        +
        Returns:
        the converted value
        +
      • +
      + + + +
        +
      • +

        swapDouble

        +
        public static double swapDouble(double value)
        +
        Converts a "double" value between endian systems.
        +
        Parameters:
        value - value to convert
        +
        Returns:
        the converted value
        +
      • +
      + + + +
        +
      • +

        writeSwappedShort

        +
        public static void writeSwappedShort(byte[] data,
        +                     int offset,
        +                     short value)
        +
        Writes a "short" value to a byte array at a given offset. The value is + converted to the opposed endian system while writing.
        +
        Parameters:
        data - target byte array
        offset - starting offset in the byte array
        value - value to write
        +
      • +
      + + + +
        +
      • +

        readSwappedShort

        +
        public static short readSwappedShort(byte[] data,
        +                     int offset)
        +
        Reads a "short" value from a byte array at a given offset. The value is + converted to the opposed endian system while reading.
        +
        Parameters:
        data - source byte array
        offset - starting offset in the byte array
        +
        Returns:
        the value read
        +
      • +
      + + + +
        +
      • +

        readSwappedUnsignedShort

        +
        public static int readSwappedUnsignedShort(byte[] data,
        +                           int offset)
        +
        Reads an unsigned short (16-bit) value from a byte array at a given + offset. The value is converted to the opposed endian system while + reading.
        +
        Parameters:
        data - source byte array
        offset - starting offset in the byte array
        +
        Returns:
        the value read
        +
      • +
      + + + +
        +
      • +

        writeSwappedInteger

        +
        public static void writeSwappedInteger(byte[] data,
        +                       int offset,
        +                       int value)
        +
        Writes a "int" value to a byte array at a given offset. The value is + converted to the opposed endian system while writing.
        +
        Parameters:
        data - target byte array
        offset - starting offset in the byte array
        value - value to write
        +
      • +
      + + + +
        +
      • +

        readSwappedInteger

        +
        public static int readSwappedInteger(byte[] data,
        +                     int offset)
        +
        Reads a "int" value from a byte array at a given offset. The value is + converted to the opposed endian system while reading.
        +
        Parameters:
        data - source byte array
        offset - starting offset in the byte array
        +
        Returns:
        the value read
        +
      • +
      + + + +
        +
      • +

        readSwappedUnsignedInteger

        +
        public static long readSwappedUnsignedInteger(byte[] data,
        +                              int offset)
        +
        Reads an unsigned integer (32-bit) value from a byte array at a given + offset. The value is converted to the opposed endian system while + reading.
        +
        Parameters:
        data - source byte array
        offset - starting offset in the byte array
        +
        Returns:
        the value read
        +
      • +
      + + + +
        +
      • +

        writeSwappedLong

        +
        public static void writeSwappedLong(byte[] data,
        +                    int offset,
        +                    long value)
        +
        Writes a "long" value to a byte array at a given offset. The value is + converted to the opposed endian system while writing.
        +
        Parameters:
        data - target byte array
        offset - starting offset in the byte array
        value - value to write
        +
      • +
      + + + +
        +
      • +

        readSwappedLong

        +
        public static long readSwappedLong(byte[] data,
        +                   int offset)
        +
        Reads a "long" value from a byte array at a given offset. The value is + converted to the opposed endian system while reading.
        +
        Parameters:
        data - source byte array
        offset - starting offset in the byte array
        +
        Returns:
        the value read
        +
      • +
      + + + +
        +
      • +

        writeSwappedFloat

        +
        public static void writeSwappedFloat(byte[] data,
        +                     int offset,
        +                     float value)
        +
        Writes a "float" value to a byte array at a given offset. The value is + converted to the opposed endian system while writing.
        +
        Parameters:
        data - target byte array
        offset - starting offset in the byte array
        value - value to write
        +
      • +
      + + + +
        +
      • +

        readSwappedFloat

        +
        public static float readSwappedFloat(byte[] data,
        +                     int offset)
        +
        Reads a "float" value from a byte array at a given offset. The value is + converted to the opposed endian system while reading.
        +
        Parameters:
        data - source byte array
        offset - starting offset in the byte array
        +
        Returns:
        the value read
        +
      • +
      + + + +
        +
      • +

        writeSwappedDouble

        +
        public static void writeSwappedDouble(byte[] data,
        +                      int offset,
        +                      double value)
        +
        Writes a "double" value to a byte array at a given offset. The value is + converted to the opposed endian system while writing.
        +
        Parameters:
        data - target byte array
        offset - starting offset in the byte array
        value - value to write
        +
      • +
      + + + +
        +
      • +

        readSwappedDouble

        +
        public static double readSwappedDouble(byte[] data,
        +                       int offset)
        +
        Reads a "double" value from a byte array at a given offset. The value is + converted to the opposed endian system while reading.
        +
        Parameters:
        data - source byte array
        offset - starting offset in the byte array
        +
        Returns:
        the value read
        +
      • +
      + + + +
        +
      • +

        writeSwappedShort

        +
        public static void writeSwappedShort(OutputStream output,
        +                     short value)
        +                              throws IOException
        +
        Writes a "short" value to an OutputStream. The value is + converted to the opposed endian system while writing.
        +
        Parameters:
        output - target OutputStream
        value - value to write
        +
        Throws:
        +
        IOException - in case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        readSwappedShort

        +
        public static short readSwappedShort(InputStream input)
        +                              throws IOException
        +
        Reads a "short" value from an InputStream. The value is + converted to the opposed endian system while reading.
        +
        Parameters:
        input - source InputStream
        +
        Returns:
        the value just read
        +
        Throws:
        +
        IOException - in case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        readSwappedUnsignedShort

        +
        public static int readSwappedUnsignedShort(InputStream input)
        +                                    throws IOException
        +
        Reads a unsigned short (16-bit) from an InputStream. The value is + converted to the opposed endian system while reading.
        +
        Parameters:
        input - source InputStream
        +
        Returns:
        the value just read
        +
        Throws:
        +
        IOException - in case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        writeSwappedInteger

        +
        public static void writeSwappedInteger(OutputStream output,
        +                       int value)
        +                                throws IOException
        +
        Writes a "int" value to an OutputStream. The value is + converted to the opposed endian system while writing.
        +
        Parameters:
        output - target OutputStream
        value - value to write
        +
        Throws:
        +
        IOException - in case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        readSwappedInteger

        +
        public static int readSwappedInteger(InputStream input)
        +                              throws IOException
        +
        Reads a "int" value from an InputStream. The value is + converted to the opposed endian system while reading.
        +
        Parameters:
        input - source InputStream
        +
        Returns:
        the value just read
        +
        Throws:
        +
        IOException - in case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        readSwappedUnsignedInteger

        +
        public static long readSwappedUnsignedInteger(InputStream input)
        +                                       throws IOException
        +
        Reads a unsigned integer (32-bit) from an InputStream. The value is + converted to the opposed endian system while reading.
        +
        Parameters:
        input - source InputStream
        +
        Returns:
        the value just read
        +
        Throws:
        +
        IOException - in case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        writeSwappedLong

        +
        public static void writeSwappedLong(OutputStream output,
        +                    long value)
        +                             throws IOException
        +
        Writes a "long" value to an OutputStream. The value is + converted to the opposed endian system while writing.
        +
        Parameters:
        output - target OutputStream
        value - value to write
        +
        Throws:
        +
        IOException - in case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        readSwappedLong

        +
        public static long readSwappedLong(InputStream input)
        +                            throws IOException
        +
        Reads a "long" value from an InputStream. The value is + converted to the opposed endian system while reading.
        +
        Parameters:
        input - source InputStream
        +
        Returns:
        the value just read
        +
        Throws:
        +
        IOException - in case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        writeSwappedFloat

        +
        public static void writeSwappedFloat(OutputStream output,
        +                     float value)
        +                              throws IOException
        +
        Writes a "float" value to an OutputStream. The value is + converted to the opposed endian system while writing.
        +
        Parameters:
        output - target OutputStream
        value - value to write
        +
        Throws:
        +
        IOException - in case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        readSwappedFloat

        +
        public static float readSwappedFloat(InputStream input)
        +                              throws IOException
        +
        Reads a "float" value from an InputStream. The value is + converted to the opposed endian system while reading.
        +
        Parameters:
        input - source InputStream
        +
        Returns:
        the value just read
        +
        Throws:
        +
        IOException - in case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        writeSwappedDouble

        +
        public static void writeSwappedDouble(OutputStream output,
        +                      double value)
        +                               throws IOException
        +
        Writes a "double" value to an OutputStream. The value is + converted to the opposed endian system while writing.
        +
        Parameters:
        output - target OutputStream
        value - value to write
        +
        Throws:
        +
        IOException - in case of an I/O problem
        +
      • +
      + + + +
        +
      • +

        readSwappedDouble

        +
        public static double readSwappedDouble(InputStream input)
        +                                throws IOException
        +
        Reads a "double" value from an InputStream. The value is + converted to the opposed endian system while reading.
        +
        Parameters:
        input - source InputStream
        +
        Returns:
        the value just read
        +
        Throws:
        +
        IOException - in case of an I/O problem
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileCleaner.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileCleaner.html new file mode 100644 index 0000000..6b04435 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileCleaner.html @@ -0,0 +1,459 @@ + + + + + +FileCleaner (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class FileCleaner

+
+
+ +
+
    +
  • +
    +
    Deprecated.  + +
    +
    +
    @Deprecated
    +public class FileCleaner
    +extends Object
    +
    Keeps track of files awaiting deletion, and deletes them when an associated + marker object is reclaimed by the garbage collector. +

    + This utility creates a background thread to handle file deletion. + Each file to be deleted is registered with a handler object. + When the handler object is garbage collected, the file is deleted. +

    + In an environment with multiple class loaders (a servlet container, for + example), you should consider stopping the background thread if it is no + longer needed. This is done by invoking the method + exitWhenFinished(), typically in + javax.servlet.ServletContextListener.contextDestroyed(javax.servlet.ServletContextEvent) or similar.

    +
    Version:
    +
    $Id: FileCleaner.java 1680650 2015-05-20 18:36:40Z britter $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileCleaner

        +
        public FileCleaner()
        +
        Deprecated. 
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        track

        +
        @Deprecated
        +public static void track(File file,
        +                    Object marker)
        + +
        Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected. + The normal deletion strategy will be used.
        +
        Parameters:
        file - the file to be tracked, not null
        marker - the marker object used to track the file, not null
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
      • +
      + + + +
        +
      • +

        track

        +
        @Deprecated
        +public static void track(File file,
        +                    Object marker,
        +                    FileDeleteStrategy deleteStrategy)
        + +
        Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected. + The speified deletion strategy is used.
        +
        Parameters:
        file - the file to be tracked, not null
        marker - the marker object used to track the file, not null
        deleteStrategy - the strategy to delete the file, null means normal
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
      • +
      + + + +
        +
      • +

        track

        +
        @Deprecated
        +public static void track(String path,
        +                    Object marker)
        + +
        Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected. + The normal deletion strategy will be used.
        +
        Parameters:
        path - the full path to the file to be tracked, not null
        marker - the marker object used to track the file, not null
        +
        Throws:
        +
        NullPointerException - if the path is null
        +
      • +
      + + + +
        +
      • +

        track

        +
        @Deprecated
        +public static void track(String path,
        +                    Object marker,
        +                    FileDeleteStrategy deleteStrategy)
        + +
        Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected. + The speified deletion strategy is used.
        +
        Parameters:
        path - the full path to the file to be tracked, not null
        marker - the marker object used to track the file, not null
        deleteStrategy - the strategy to delete the file, null means normal
        +
        Throws:
        +
        NullPointerException - if the path is null
        +
      • +
      + + + +
        +
      • +

        getTrackCount

        +
        @Deprecated
        +public static int getTrackCount()
        + +
        Retrieve the number of files currently being tracked, and therefore + awaiting deletion.
        +
        Returns:
        the number of files being tracked
        +
      • +
      + + + +
        +
      • +

        exitWhenFinished

        +
        @Deprecated
        +public static void exitWhenFinished()
        + +
        Call this method to cause the file cleaner thread to terminate when + there are no more objects being tracked for deletion. +

        + In a simple environment, you don't need this method as the file cleaner + thread will simply exit when the JVM exits. In a more complex environment, + with multiple class loaders (such as an application server), you should be + aware that the file cleaner thread will continue running even if the class + loader it was started from terminates. This can consitute a memory leak. +

        + For example, suppose that you have developed a web application, which + contains the commons-io jar file in your WEB-INF/lib directory. In other + words, the FileCleaner class is loaded through the class loader of your + web application. If the web application is terminated, but the servlet + container is still running, then the file cleaner thread will still exist, + posing a memory leak. +

        + This method allows the thread to be terminated. Simply call this method + in the resource cleanup code, such as + javax.servlet.ServletContextListener.contextDestroyed(javax.servlet.ServletContextEvent). + One called, no new objects can be tracked by the file cleaner.

        +
      • +
      + + + +
        +
      • +

        getInstance

        +
        public static FileCleaningTracker getInstance()
        +
        Deprecated. 
        +
        Returns the singleton instance, which is used by the deprecated, static methods. + This is mainly useful for code, which wants to support the new + FileCleaningTracker class while maintain compatibility with the + deprecated FileCleaner.
        +
        Returns:
        the singleton instance
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileCleaningTracker.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileCleaningTracker.html new file mode 100644 index 0000000..d7b5d7e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileCleaningTracker.html @@ -0,0 +1,430 @@ + + + + + +FileCleaningTracker (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class FileCleaningTracker

+
+
+ +
+
    +
  • +
    +
    +
    public class FileCleaningTracker
    +extends Object
    +
    Keeps track of files awaiting deletion, and deletes them when an associated + marker object is reclaimed by the garbage collector. +

    + This utility creates a background thread to handle file deletion. + Each file to be deleted is registered with a handler object. + When the handler object is garbage collected, the file is deleted. +

    + In an environment with multiple class loaders (a servlet container, for + example), you should consider stopping the background thread if it is no + longer needed. This is done by invoking the method + exitWhenFinished, typically in + javax.servlet.ServletContextListener.contextDestroyed(javax.servlet.ServletContextEvent) or similar.

    +
    Version:
    +
    $Id: FileCleaningTracker.java 1686747 2015-06-21 18:44:49Z krosenvold $
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidexitWhenFinished() +
      Call this method to cause the file cleaner thread to terminate when + there are no more objects being tracked for deletion.
      +
      List<String>getDeleteFailures() +
      Return the file paths that failed to delete.
      +
      intgetTrackCount() +
      Retrieve the number of files currently being tracked, and therefore + awaiting deletion.
      +
      voidtrack(File file, + Object marker) +
      Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected.
      +
      voidtrack(File file, + Object marker, + FileDeleteStrategy deleteStrategy) +
      Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected.
      +
      voidtrack(String path, + Object marker) +
      Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected.
      +
      voidtrack(String path, + Object marker, + FileDeleteStrategy deleteStrategy) +
      Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileCleaningTracker

        +
        public FileCleaningTracker()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        track

        +
        public void track(File file,
        +         Object marker)
        +
        Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected. + The normal deletion strategy will be used.
        +
        Parameters:
        file - the file to be tracked, not null
        marker - the marker object used to track the file, not null
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
      • +
      + + + +
        +
      • +

        track

        +
        public void track(File file,
        +         Object marker,
        +         FileDeleteStrategy deleteStrategy)
        +
        Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected. + The speified deletion strategy is used.
        +
        Parameters:
        file - the file to be tracked, not null
        marker - the marker object used to track the file, not null
        deleteStrategy - the strategy to delete the file, null means normal
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
      • +
      + + + +
        +
      • +

        track

        +
        public void track(String path,
        +         Object marker)
        +
        Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected. + The normal deletion strategy will be used.
        +
        Parameters:
        path - the full path to the file to be tracked, not null
        marker - the marker object used to track the file, not null
        +
        Throws:
        +
        NullPointerException - if the path is null
        +
      • +
      + + + +
        +
      • +

        track

        +
        public void track(String path,
        +         Object marker,
        +         FileDeleteStrategy deleteStrategy)
        +
        Track the specified file, using the provided marker, deleting the file + when the marker instance is garbage collected. + The speified deletion strategy is used.
        +
        Parameters:
        path - the full path to the file to be tracked, not null
        marker - the marker object used to track the file, not null
        deleteStrategy - the strategy to delete the file, null means normal
        +
        Throws:
        +
        NullPointerException - if the path is null
        +
      • +
      + + + +
        +
      • +

        getTrackCount

        +
        public int getTrackCount()
        +
        Retrieve the number of files currently being tracked, and therefore + awaiting deletion.
        +
        Returns:
        the number of files being tracked
        +
      • +
      + + + +
        +
      • +

        getDeleteFailures

        +
        public List<String> getDeleteFailures()
        +
        Return the file paths that failed to delete.
        +
        Returns:
        the file paths that failed to delete
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        exitWhenFinished

        +
        public void exitWhenFinished()
        +
        Call this method to cause the file cleaner thread to terminate when + there are no more objects being tracked for deletion. +

        + In a simple environment, you don't need this method as the file cleaner + thread will simply exit when the JVM exits. In a more complex environment, + with multiple class loaders (such as an application server), you should be + aware that the file cleaner thread will continue running even if the class + loader it was started from terminates. This can consitute a memory leak. +

        + For example, suppose that you have developed a web application, which + contains the commons-io jar file in your WEB-INF/lib directory. In other + words, the FileCleaner class is loaded through the class loader of your + web application. If the web application is terminated, but the servlet + container is still running, then the file cleaner thread will still exist, + posing a memory leak. +

        + This method allows the thread to be terminated. Simply call this method + in the resource cleanup code, such as + javax.servlet.ServletContextListener.contextDestroyed(javax.servlet.ServletContextEvent). + Once called, no new objects can be tracked by the file cleaner.

        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileDeleteStrategy.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileDeleteStrategy.html new file mode 100644 index 0000000..9018c4d --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileDeleteStrategy.html @@ -0,0 +1,415 @@ + + + + + +FileDeleteStrategy (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class FileDeleteStrategy

+
+
+ +
+
    +
  • +
    +
    +
    public class FileDeleteStrategy
    +extends Object
    +
    Strategy for deleting files. +

    + There is more than one way to delete a file. + You may want to limit access to certain directories, to only delete + directories if they are empty, or maybe to force deletion. +

    + This class captures the strategy to use and is designed for user subclassing.

    +
    Since:
    +
    1.3
    +
    Version:
    +
    $Id: FileDeleteStrategy.java 1563227 2014-01-31 19:45:30Z ggregory $
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static FileDeleteStrategyFORCE +
      The singleton instance for forced file deletion, which always deletes, + even if the file represents a non-empty directory.
      +
      static FileDeleteStrategyNORMAL +
      The singleton instance for normal file deletion, which does not permit + the deletion of directories that are not empty.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + +
      Constructors 
      ModifierConstructor and Description
      protected FileDeleteStrategy(String name) +
      Restricted constructor.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        NORMAL

        +
        public static final FileDeleteStrategy NORMAL
        +
        The singleton instance for normal file deletion, which does not permit + the deletion of directories that are not empty.
        +
      • +
      + + + +
        +
      • +

        FORCE

        +
        public static final FileDeleteStrategy FORCE
        +
        The singleton instance for forced file deletion, which always deletes, + even if the file represents a non-empty directory.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileDeleteStrategy

        +
        protected FileDeleteStrategy(String name)
        +
        Restricted constructor.
        +
        Parameters:
        name - the name by which the strategy is known
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        deleteQuietly

        +
        public boolean deleteQuietly(File fileToDelete)
        +
        Deletes the file object, which may be a file or a directory. + All IOExceptions are caught and false returned instead. + If the file does not exist or is null, true is returned. +

        + Subclass writers should override doDelete(File), not this method.

        +
        Parameters:
        fileToDelete - the file to delete, null returns true
        +
        Returns:
        true if the file was deleted, or there was no such file
        +
      • +
      + + + +
        +
      • +

        delete

        +
        public void delete(File fileToDelete)
        +            throws IOException
        +
        Deletes the file object, which may be a file or a directory. + If the file does not exist, the method just returns. +

        + Subclass writers should override doDelete(File), not this method.

        +
        Parameters:
        fileToDelete - the file to delete, not null
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IOException - if an error occurs during file deletion
        +
      • +
      + + + +
        +
      • +

        doDelete

        +
        protected boolean doDelete(File fileToDelete)
        +                    throws IOException
        +
        Actually deletes the file object, which may be a file or a directory. +

        + This method is designed for subclasses to override. + The implementation may return either false or an IOException + when deletion fails. The delete(File) and deleteQuietly(File) + methods will handle either response appropriately. + A check has been made to ensure that the file will exist. +

        + This implementation uses File.delete().

        +
        Parameters:
        fileToDelete - the file to delete, exists, not null
        +
        Returns:
        true if the file was deleteds
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IOException - if an error occurs during file deletion
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Gets a string describing the delete strategy.
        +
        +
        Overrides:
        +
        toString in class Object
        +
        Returns:
        a string describing the delete strategy
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileExistsException.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileExistsException.html new file mode 100644 index 0000000..7a562c9 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileExistsException.html @@ -0,0 +1,295 @@ + + + + + +FileExistsException (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class FileExistsException

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable
    +
    +
    +
    +
    public class FileExistsException
    +extends IOException
    +
    Indicates that a file already exists.
    +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: FileExistsException.java 1415850 2012-11-30 20:51:39Z ggregory $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileExistsException

        +
        public FileExistsException()
        +
        Default Constructor.
        +
      • +
      + + + +
        +
      • +

        FileExistsException

        +
        public FileExistsException(String message)
        +
        Construct an instance with the specified message.
        +
        Parameters:
        message - The error message
        +
      • +
      + + + +
        +
      • +

        FileExistsException

        +
        public FileExistsException(File file)
        +
        Construct an instance with the specified file.
        +
        Parameters:
        file - The file that exists
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileSystemUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileSystemUtils.html new file mode 100644 index 0000000..251dea4 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileSystemUtils.html @@ -0,0 +1,440 @@ + + + + + +FileSystemUtils (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class FileSystemUtils

+
+
+ +
+
    +
  • +
    +
    +
    public class FileSystemUtils
    +extends Object
    +
    General File System utilities. +

    + This class provides static utility methods for general file system + functions not provided via the JDK File class. +

    + The current functions provided are: +

      +
    • Get the free space on a drive +
    +
    Since:
    +
    1.1
    +
    Version:
    +
    $Id: FileSystemUtils.java 1686747 2015-06-21 18:44:49Z krosenvold $
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      FileSystemUtils() +
      Instances should NOT be constructed in standard programming.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static longfreeSpace(String path) +
      Deprecated.  +
      Use freeSpaceKb(String) + Deprecated from 1.3, may be removed in 2.0
      +
      +
      static longfreeSpaceKb() +
      Returns the disk size of the volume which holds the working directory.
      +
      static longfreeSpaceKb(long timeout) +
      Returns the disk size of the volume which holds the working directory.
      +
      static longfreeSpaceKb(String path) +
      Returns the free space on a drive or volume in kilobytes by invoking + the command line.
      +
      static longfreeSpaceKb(String path, + long timeout) +
      Returns the free space on a drive or volume in kilobytes by invoking + the command line.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileSystemUtils

        +
        public FileSystemUtils()
        +
        Instances should NOT be constructed in standard programming.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        freeSpace

        +
        @Deprecated
        +public static long freeSpace(String path)
        +                      throws IOException
        +
        Deprecated. Use freeSpaceKb(String) + Deprecated from 1.3, may be removed in 2.0
        +
        Returns the free space on a drive or volume by invoking + the command line. + This method does not normalize the result, and typically returns + bytes on Windows, 512 byte units on OS X and kilobytes on Unix. + As this is not very useful, this method is deprecated in favour + of freeSpaceKb(String) which returns a result in kilobytes. +

        + Note that some OS's are NOT currently supported, including OS/390, + OpenVMS. +

        + FileSystemUtils.freeSpace("C:");       // Windows
        + FileSystemUtils.freeSpace("/volume");  // *nix
        + 
        + The free space is calculated via the command line. + It uses 'dir /-c' on Windows and 'df' on *nix.
        +
        Parameters:
        path - the path to get free space for, not null, not empty on Unix
        +
        Returns:
        the amount of free drive space on the drive or volume
        +
        Throws:
        +
        IllegalArgumentException - if the path is invalid
        +
        IllegalStateException - if an error occurred in initialisation
        +
        IOException - if an error occurs when finding the free space
        Since:
        +
        1.1, enhanced OS support in 1.2 and 1.3
        +
      • +
      + + + +
        +
      • +

        freeSpaceKb

        +
        public static long freeSpaceKb(String path)
        +                        throws IOException
        +
        Returns the free space on a drive or volume in kilobytes by invoking + the command line. +
        + FileSystemUtils.freeSpaceKb("C:");       // Windows
        + FileSystemUtils.freeSpaceKb("/volume");  // *nix
        + 
        + The free space is calculated via the command line. + It uses 'dir /-c' on Windows, 'df -kP' on AIX/HP-UX and 'df -k' on other Unix. +

        + In order to work, you must be running Windows, or have a implementation of + Unix df that supports GNU format when passed -k (or -kP). If you are going + to rely on this code, please check that it works on your OS by running + some simple tests to compare the command line with the output from this class. + If your operating system isn't supported, please raise a JIRA call detailing + the exact result from df -k and as much other detail as possible, thanks.

        +
        Parameters:
        path - the path to get free space for, not null, not empty on Unix
        +
        Returns:
        the amount of free drive space on the drive or volume in kilobytes
        +
        Throws:
        +
        IllegalArgumentException - if the path is invalid
        +
        IllegalStateException - if an error occurred in initialisation
        +
        IOException - if an error occurs when finding the free space
        Since:
        +
        1.2, enhanced OS support in 1.3
        +
      • +
      + + + +
        +
      • +

        freeSpaceKb

        +
        public static long freeSpaceKb(String path,
        +               long timeout)
        +                        throws IOException
        +
        Returns the free space on a drive or volume in kilobytes by invoking + the command line. +
        + FileSystemUtils.freeSpaceKb("C:");       // Windows
        + FileSystemUtils.freeSpaceKb("/volume");  // *nix
        + 
        + The free space is calculated via the command line. + It uses 'dir /-c' on Windows, 'df -kP' on AIX/HP-UX and 'df -k' on other Unix. +

        + In order to work, you must be running Windows, or have a implementation of + Unix df that supports GNU format when passed -k (or -kP). If you are going + to rely on this code, please check that it works on your OS by running + some simple tests to compare the command line with the output from this class. + If your operating system isn't supported, please raise a JIRA call detailing + the exact result from df -k and as much other detail as possible, thanks.

        +
        Parameters:
        path - the path to get free space for, not null, not empty on Unix
        timeout - The timeout amount in milliseconds or no timeout if the value + is zero or less
        +
        Returns:
        the amount of free drive space on the drive or volume in kilobytes
        +
        Throws:
        +
        IllegalArgumentException - if the path is invalid
        +
        IllegalStateException - if an error occurred in initialisation
        +
        IOException - if an error occurs when finding the free space
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        freeSpaceKb

        +
        public static long freeSpaceKb()
        +                        throws IOException
        +
        Returns the disk size of the volume which holds the working directory. +

        + Identical to: +

        + freeSpaceKb(new File(".").getAbsolutePath())
        + 
        +
        Returns:
        the amount of free drive space on the drive or volume in kilobytes
        +
        Throws:
        +
        IllegalStateException - if an error occurred in initialisation
        +
        IOException - if an error occurs when finding the free space
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        freeSpaceKb

        +
        public static long freeSpaceKb(long timeout)
        +                        throws IOException
        +
        Returns the disk size of the volume which holds the working directory. +

        + Identical to: +

        + freeSpaceKb(new File(".").getAbsolutePath())
        + 
        +
        Parameters:
        timeout - The timeout amount in milliseconds or no timeout if the value + is zero or less
        +
        Returns:
        the amount of free drive space on the drive or volume in kilobytes
        +
        Throws:
        +
        IllegalStateException - if an error occurred in initialisation
        +
        IOException - if an error occurs when finding the free space
        Since:
        +
        2.0
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileUtils.html new file mode 100644 index 0000000..f10c4d8 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FileUtils.html @@ -0,0 +1,3441 @@ + + + + + +FileUtils (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class FileUtils

+
+
+ +
+
    +
  • +
    +
    +
    public class FileUtils
    +extends Object
    +
    General file manipulation utilities. +

    + Facilities are provided in the following areas: +

      +
    • writing to a file +
    • reading from a file +
    • make a directory including parent directories +
    • copying files and directories +
    • deleting files and directories +
    • converting to and from a URL +
    • listing files and directories by filter and extension +
    • comparing file content +
    • file last changed date +
    • calculating a checksum +
    +

    + Origin of code: Excalibur, Alexandria, Commons-Utils

    +
    Version:
    +
    $Id: FileUtils.java 1722481 2016-01-01 01:42:04Z dbrosius $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        ONE_KB

        +
        public static final long ONE_KB
        +
        The number of bytes in a kilobyte.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        ONE_KB_BI

        +
        public static final BigInteger ONE_KB_BI
        +
        The number of bytes in a kilobyte.
        +
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        ONE_MB

        +
        public static final long ONE_MB
        +
        The number of bytes in a megabyte.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        ONE_MB_BI

        +
        public static final BigInteger ONE_MB_BI
        +
        The number of bytes in a megabyte.
        +
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        ONE_GB

        +
        public static final long ONE_GB
        +
        The number of bytes in a gigabyte.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        ONE_GB_BI

        +
        public static final BigInteger ONE_GB_BI
        +
        The number of bytes in a gigabyte.
        +
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        ONE_TB

        +
        public static final long ONE_TB
        +
        The number of bytes in a terabyte.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        ONE_TB_BI

        +
        public static final BigInteger ONE_TB_BI
        +
        The number of bytes in a terabyte.
        +
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        ONE_PB

        +
        public static final long ONE_PB
        +
        The number of bytes in a petabyte.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        ONE_PB_BI

        +
        public static final BigInteger ONE_PB_BI
        +
        The number of bytes in a petabyte.
        +
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        ONE_EB

        +
        public static final long ONE_EB
        +
        The number of bytes in an exabyte.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        ONE_EB_BI

        +
        public static final BigInteger ONE_EB_BI
        +
        The number of bytes in an exabyte.
        +
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        ONE_ZB

        +
        public static final BigInteger ONE_ZB
        +
        The number of bytes in a zettabyte.
        +
      • +
      + + + +
        +
      • +

        ONE_YB

        +
        public static final BigInteger ONE_YB
        +
        The number of bytes in a yottabyte.
        +
      • +
      + + + +
        +
      • +

        EMPTY_FILE_ARRAY

        +
        public static final File[] EMPTY_FILE_ARRAY
        +
        An empty array of type File.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileUtils

        +
        public FileUtils()
        +
        Instances should NOT be constructed in standard programming.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getFile

        +
        public static File getFile(File directory,
        +           String... names)
        +
        Construct a file from the set of name elements.
        +
        Parameters:
        directory - the parent directory
        names - the name elements
        +
        Returns:
        the file
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        getFile

        +
        public static File getFile(String... names)
        +
        Construct a file from the set of name elements.
        +
        Parameters:
        names - the name elements
        +
        Returns:
        the file
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        getTempDirectoryPath

        +
        public static String getTempDirectoryPath()
        +
        Returns the path to the system temporary directory.
        +
        Returns:
        the path to the system temporary directory.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        getTempDirectory

        +
        public static File getTempDirectory()
        +
        Returns a File representing the system temporary directory.
        +
        Returns:
        the system temporary directory.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        getUserDirectoryPath

        +
        public static String getUserDirectoryPath()
        +
        Returns the path to the user's home directory.
        +
        Returns:
        the path to the user's home directory.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        getUserDirectory

        +
        public static File getUserDirectory()
        +
        Returns a File representing the user's home directory.
        +
        Returns:
        the user's home directory.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        openInputStream

        +
        public static FileInputStream openInputStream(File file)
        +                                       throws IOException
        +
        Opens a FileInputStream for the specified file, providing better + error messages than simply calling new FileInputStream(file). +

        + At the end of the method either the stream will be successfully opened, + or an exception will have been thrown. +

        + An exception is thrown if the file does not exist. + An exception is thrown if the file object exists but is a directory. + An exception is thrown if the file exists but cannot be read.

        +
        Parameters:
        file - the file to open for input, must not be null
        +
        Returns:
        a new FileInputStream for the specified file
        +
        Throws:
        +
        FileNotFoundException - if the file does not exist
        +
        IOException - if the file object is a directory
        +
        IOException - if the file cannot be read
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        openOutputStream

        +
        public static FileOutputStream openOutputStream(File file)
        +                                         throws IOException
        +
        Opens a FileOutputStream for the specified file, checking and + creating the parent directory if it does not exist. +

        + At the end of the method either the stream will be successfully opened, + or an exception will have been thrown. +

        + The parent directory will be created if it does not exist. + The file will be created if it does not exist. + An exception is thrown if the file object exists but is a directory. + An exception is thrown if the file exists but cannot be written to. + An exception is thrown if the parent directory cannot be created.

        +
        Parameters:
        file - the file to open for output, must not be null
        +
        Returns:
        a new FileOutputStream for the specified file
        +
        Throws:
        +
        IOException - if the file object is a directory
        +
        IOException - if the file cannot be written to
        +
        IOException - if a parent directory needs creating but that fails
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        openOutputStream

        +
        public static FileOutputStream openOutputStream(File file,
        +                                boolean append)
        +                                         throws IOException
        +
        Opens a FileOutputStream for the specified file, checking and + creating the parent directory if it does not exist. +

        + At the end of the method either the stream will be successfully opened, + or an exception will have been thrown. +

        + The parent directory will be created if it does not exist. + The file will be created if it does not exist. + An exception is thrown if the file object exists but is a directory. + An exception is thrown if the file exists but cannot be written to. + An exception is thrown if the parent directory cannot be created.

        +
        Parameters:
        file - the file to open for output, must not be null
        append - if true, then bytes will be added to the + end of the file rather than overwriting
        +
        Returns:
        a new FileOutputStream for the specified file
        +
        Throws:
        +
        IOException - if the file object is a directory
        +
        IOException - if the file cannot be written to
        +
        IOException - if a parent directory needs creating but that fails
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        byteCountToDisplaySize

        +
        public static String byteCountToDisplaySize(BigInteger size)
        +
        Returns a human-readable version of the file size, where the input represents a specific number of bytes. +

        + If the size is over 1GB, the size is returned as the number of whole GB, i.e. the size is rounded down to the + nearest GB boundary. +

        +

        + Similarly for the 1MB and 1KB boundaries. +

        +
        Parameters:
        size - the number of bytes
        +
        Returns:
        a human-readable display value (includes units - EB, PB, TB, GB, MB, KB or bytes)
        Since:
        +
        2.4
        +
        See Also:
        IO-226 - should the rounding be changed?
        +
      • +
      + + + +
        +
      • +

        byteCountToDisplaySize

        +
        public static String byteCountToDisplaySize(long size)
        +
        Returns a human-readable version of the file size, where the input represents a specific number of bytes. +

        + If the size is over 1GB, the size is returned as the number of whole GB, i.e. the size is rounded down to the + nearest GB boundary. +

        +

        + Similarly for the 1MB and 1KB boundaries. +

        +
        Parameters:
        size - the number of bytes
        +
        Returns:
        a human-readable display value (includes units - EB, PB, TB, GB, MB, KB or bytes)
        See Also:
        IO-226 - should the rounding be changed?
        +
      • +
      + + + +
        +
      • +

        touch

        +
        public static void touch(File file)
        +                  throws IOException
        +
        Implements the same behaviour as the "touch" utility on Unix. It creates + a new file with size 0 or, if the file exists already, it is opened and + closed without modifying it, but updating the file date and time. +

        + NOTE: As from v1.3, this method throws an IOException if the last + modified date of the file cannot be set. Also, as from v1.3 this method + creates parent directories if they do not exist.

        +
        Parameters:
        file - the File to touch
        +
        Throws:
        +
        IOException - If an I/O problem occurs
        +
      • +
      + + + +
        +
      • +

        convertFileCollectionToFileArray

        +
        public static File[] convertFileCollectionToFileArray(Collection<File> files)
        +
        Converts a Collection containing java.io.File instanced into array + representation. This is to account for the difference between + File.listFiles() and FileUtils.listFiles().
        +
        Parameters:
        files - a Collection containing java.io.File instances
        +
        Returns:
        an array of java.io.File
        +
      • +
      + + + +
        +
      • +

        listFiles

        +
        public static Collection<File> listFiles(File directory,
        +                         IOFileFilter fileFilter,
        +                         IOFileFilter dirFilter)
        +
        Finds files within a given directory (and optionally its + subdirectories). All files found are filtered by an IOFileFilter. +

        + If your search should recurse into subdirectories you can pass in + an IOFileFilter for directories. You don't need to bind a + DirectoryFileFilter (via logical AND) to this filter. This method does + that for you. +

        + An example: If you want to search through all directories called + "temp" you pass in FileFilterUtils.NameFileFilter("temp") +

        + Another common usage of this method is find files in a directory + tree but ignoring the directories generated CVS. You can simply pass + in FileFilterUtils.makeCVSAware(null).

        +
        Parameters:
        directory - the directory to search in
        fileFilter - filter to apply when finding files.
        dirFilter - optional filter to apply when finding subdirectories. + If this parameter is null, subdirectories will not be included in the + search. Use TrueFileFilter.INSTANCE to match all directories.
        +
        Returns:
        an collection of java.io.File with the matching files
        See Also:
        FileFilterUtils, +NameFileFilter
        +
      • +
      + + + + + + + +
        +
      • +

        iterateFiles

        +
        public static Iterator<File> iterateFiles(File directory,
        +                          IOFileFilter fileFilter,
        +                          IOFileFilter dirFilter)
        +
        Allows iteration over the files in given directory (and optionally + its subdirectories). +

        + All files found are filtered by an IOFileFilter. This method is + based on listFiles(File, IOFileFilter, IOFileFilter), + which supports Iterable ('foreach' loop). +

        +
        Parameters:
        directory - the directory to search in
        fileFilter - filter to apply when finding files.
        dirFilter - optional filter to apply when finding subdirectories. + If this parameter is null, subdirectories will not be included in the + search. Use TrueFileFilter.INSTANCE to match all directories.
        +
        Returns:
        an iterator of java.io.File for the matching files
        Since:
        +
        1.2
        +
        See Also:
        FileFilterUtils, +NameFileFilter
        +
      • +
      + + + +
        +
      • +

        iterateFilesAndDirs

        +
        public static Iterator<File> iterateFilesAndDirs(File directory,
        +                                 IOFileFilter fileFilter,
        +                                 IOFileFilter dirFilter)
        +
        Allows iteration over the files in given directory (and optionally + its subdirectories). +

        + All files found are filtered by an IOFileFilter. This method is + based on listFilesAndDirs(File, IOFileFilter, IOFileFilter), + which supports Iterable ('foreach' loop). +

        + The resulting iterator includes the subdirectories themselves.

        +
        Parameters:
        directory - the directory to search in
        fileFilter - filter to apply when finding files.
        dirFilter - optional filter to apply when finding subdirectories. + If this parameter is null, subdirectories will not be included in the + search. Use TrueFileFilter.INSTANCE to match all directories.
        +
        Returns:
        an iterator of java.io.File for the matching files
        Since:
        +
        2.2
        +
        See Also:
        FileFilterUtils, +NameFileFilter
        +
      • +
      + + + +
        +
      • +

        listFiles

        +
        public static Collection<File> listFiles(File directory,
        +                         String[] extensions,
        +                         boolean recursive)
        +
        Finds files within a given directory (and optionally its subdirectories) + which match an array of extensions.
        +
        Parameters:
        directory - the directory to search in
        extensions - an array of extensions, ex. {"java","xml"}. If this + parameter is null, all files are returned.
        recursive - if true all subdirectories are searched as well
        +
        Returns:
        an collection of java.io.File with the matching files
        +
      • +
      + + + +
        +
      • +

        iterateFiles

        +
        public static Iterator<File> iterateFiles(File directory,
        +                          String[] extensions,
        +                          boolean recursive)
        +
        Allows iteration over the files in a given directory (and optionally + its subdirectories) which match an array of extensions. This method + is based on listFiles(File, String[], boolean), + which supports Iterable ('foreach' loop).
        +
        Parameters:
        directory - the directory to search in
        extensions - an array of extensions, ex. {"java","xml"}. If this + parameter is null, all files are returned.
        recursive - if true all subdirectories are searched as well
        +
        Returns:
        an iterator of java.io.File with the matching files
        Since:
        +
        1.2
        +
      • +
      + + + +
        +
      • +

        contentEquals

        +
        public static boolean contentEquals(File file1,
        +                    File file2)
        +                             throws IOException
        +
        Compares the contents of two files to determine if they are equal or not. +

        + This method checks to see if the two files are different lengths + or if they point to the same file, before resorting to byte-by-byte + comparison of the contents. +

        + Code origin: Avalon

        +
        Parameters:
        file1 - the first file
        file2 - the second file
        +
        Returns:
        true if the content of the files are equal or they both don't + exist, false otherwise
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        contentEqualsIgnoreEOL

        +
        public static boolean contentEqualsIgnoreEOL(File file1,
        +                             File file2,
        +                             String charsetName)
        +                                      throws IOException
        +
        Compares the contents of two files to determine if they are equal or not. +

        + This method checks to see if the two files point to the same file, + before resorting to line-by-line comparison of the contents. +

        +
        Parameters:
        file1 - the first file
        file2 - the second file
        charsetName - the character encoding to be used. + May be null, in which case the platform default is used
        +
        Returns:
        true if the content of the files are equal or neither exists, + false otherwise
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.2
        +
        See Also:
        IOUtils.contentEqualsIgnoreEOL(Reader, Reader)
        +
      • +
      + + + +
        +
      • +

        toFile

        +
        public static File toFile(URL url)
        +
        Convert from a URL to a File. +

        + From version 1.1 this method will decode the URL. + Syntax such as file:///my%20docs/file.txt will be + correctly decoded to /my docs/file.txt. Starting with version + 1.5, this method uses UTF-8 to decode percent-encoded octets to characters. + Additionally, malformed percent-encoded octets are handled leniently by + passing them through literally.

        +
        Parameters:
        url - the file URL to convert, null returns null
        +
        Returns:
        the equivalent File object, or null + if the URL's protocol is not file
        +
      • +
      + + + +
        +
      • +

        toFiles

        +
        public static File[] toFiles(URL[] urls)
        +
        Converts each of an array of URL to a File. +

        + Returns an array of the same size as the input. + If the input is null, an empty array is returned. + If the input contains null, the output array contains null at the same + index. +

        + This method will decode the URL. + Syntax such as file:///my%20docs/file.txt will be + correctly decoded to /my docs/file.txt.

        +
        Parameters:
        urls - the file URLs to convert, null returns empty array
        +
        Returns:
        a non-null array of Files matching the input, with a null item + if there was a null at that index in the input array
        +
        Throws:
        +
        IllegalArgumentException - if any file is not a URL file
        +
        IllegalArgumentException - if any file is incorrectly encoded
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        toURLs

        +
        public static URL[] toURLs(File[] files)
        +                    throws IOException
        +
        Converts each of an array of File to a URL. +

        + Returns an array of the same size as the input.

        +
        Parameters:
        files - the files to convert, must not be null
        +
        Returns:
        an array of URLs matching the input
        +
        Throws:
        +
        IOException - if a file cannot be converted
        +
        NullPointerException - if the parameter is null
        +
      • +
      + + + +
        +
      • +

        copyFileToDirectory

        +
        public static void copyFileToDirectory(File srcFile,
        +                       File destDir)
        +                                throws IOException
        +
        Copies a file to a directory preserving the file date. +

        + This method copies the contents of the specified source file + to a file of the same name in the specified destination directory. + The destination directory is created if it does not exist. + If the destination file exists, then this method will overwrite it. +

        + Note: This method tries to preserve the file's last + modified date/times using File.setLastModified(long), however + it is not guaranteed that the operation will succeed. + If the modification operation fails, no indication is provided.

        +
        Parameters:
        srcFile - an existing file to copy, must not be null
        destDir - the directory to place the copy in, must not be null
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs during copying
        See Also:
        copyFile(File, File, boolean)
        +
      • +
      + + + +
        +
      • +

        copyFileToDirectory

        +
        public static void copyFileToDirectory(File srcFile,
        +                       File destDir,
        +                       boolean preserveFileDate)
        +                                throws IOException
        +
        Copies a file to a directory optionally preserving the file date. +

        + This method copies the contents of the specified source file + to a file of the same name in the specified destination directory. + The destination directory is created if it does not exist. + If the destination file exists, then this method will overwrite it. +

        + Note: Setting preserveFileDate to + true tries to preserve the file's last modified + date/times using File.setLastModified(long), however it is + not guaranteed that the operation will succeed. + If the modification operation fails, no indication is provided.

        +
        Parameters:
        srcFile - an existing file to copy, must not be null
        destDir - the directory to place the copy in, must not be null
        preserveFileDate - true if the file date of the copy + should be the same as the original
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs during copying
        +
        IOException - if the output file length is not the same as the input file length after the copy + completes
        Since:
        +
        1.3
        +
        See Also:
        copyFile(File, File, boolean)
        +
      • +
      + + + +
        +
      • +

        copyFile

        +
        public static void copyFile(File srcFile,
        +            File destFile)
        +                     throws IOException
        +
        Copies a file to a new location preserving the file date. +

        + This method copies the contents of the specified source file to the + specified destination file. The directory holding the destination file is + created if it does not exist. If the destination file exists, then this + method will overwrite it. +

        + Note: This method tries to preserve the file's last + modified date/times using File.setLastModified(long), however + it is not guaranteed that the operation will succeed. + If the modification operation fails, no indication is provided.

        +
        Parameters:
        srcFile - an existing file to copy, must not be null
        destFile - the new file, must not be null
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs during copying
        +
        IOException - if the output file length is not the same as the input file length after the copy + completes
        See Also:
        copyFileToDirectory(File, File), +copyFile(File, File, boolean)
        +
      • +
      + + + +
        +
      • +

        copyFile

        +
        public static void copyFile(File srcFile,
        +            File destFile,
        +            boolean preserveFileDate)
        +                     throws IOException
        +
        Copies a file to a new location. +

        + This method copies the contents of the specified source file + to the specified destination file. + The directory holding the destination file is created if it does not exist. + If the destination file exists, then this method will overwrite it. +

        + Note: Setting preserveFileDate to + true tries to preserve the file's last modified + date/times using File.setLastModified(long), however it is + not guaranteed that the operation will succeed. + If the modification operation fails, no indication is provided.

        +
        Parameters:
        srcFile - an existing file to copy, must not be null
        destFile - the new file, must not be null
        preserveFileDate - true if the file date of the copy + should be the same as the original
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs during copying
        +
        IOException - if the output file length is not the same as the input file length after the copy + completes
        See Also:
        copyFileToDirectory(File, File, boolean), +doCopyFile(File, File, boolean)
        +
      • +
      + + + +
        +
      • +

        copyFile

        +
        public static long copyFile(File input,
        +            OutputStream output)
        +                     throws IOException
        +
        Copy bytes from a File to an OutputStream. +

        + This method buffers the input internally, so there is no need to use a BufferedInputStream. +

        +
        Parameters:
        input - the File to read from
        output - the OutputStream to write to
        +
        Returns:
        the number of bytes copied
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        copyDirectoryToDirectory

        +
        public static void copyDirectoryToDirectory(File srcDir,
        +                            File destDir)
        +                                     throws IOException
        +
        Copies a directory to within another directory preserving the file dates. +

        + This method copies the source directory and all its contents to a + directory of the same name in the specified destination directory. +

        + The destination directory is created if it does not exist. + If the destination directory did exist, then this method merges + the source with the destination, with the source taking precedence. +

        + Note: This method tries to preserve the files' last + modified date/times using File.setLastModified(long), however + it is not guaranteed that those operations will succeed. + If the modification operation fails, no indication is provided.

        +
        Parameters:
        srcDir - an existing directory to copy, must not be null
        destDir - the directory to place the copy in, must not be null
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs during copying
        Since:
        +
        1.2
        +
      • +
      + + + +
        +
      • +

        copyDirectory

        +
        public static void copyDirectory(File srcDir,
        +                 File destDir)
        +                          throws IOException
        +
        Copies a whole directory to a new location preserving the file dates. +

        + This method copies the specified directory and all its child + directories and files to the specified destination. + The destination is the new location and name of the directory. +

        + The destination directory is created if it does not exist. + If the destination directory did exist, then this method merges + the source with the destination, with the source taking precedence. +

        + Note: This method tries to preserve the files' last + modified date/times using File.setLastModified(long), however + it is not guaranteed that those operations will succeed. + If the modification operation fails, no indication is provided.

        +
        Parameters:
        srcDir - an existing directory to copy, must not be null
        destDir - the new directory, must not be null
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs during copying
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        copyDirectory

        +
        public static void copyDirectory(File srcDir,
        +                 File destDir,
        +                 boolean preserveFileDate)
        +                          throws IOException
        +
        Copies a whole directory to a new location. +

        + This method copies the contents of the specified source directory + to within the specified destination directory. +

        + The destination directory is created if it does not exist. + If the destination directory did exist, then this method merges + the source with the destination, with the source taking precedence. +

        + Note: Setting preserveFileDate to + true tries to preserve the files' last modified + date/times using File.setLastModified(long), however it is + not guaranteed that those operations will succeed. + If the modification operation fails, no indication is provided.

        +
        Parameters:
        srcDir - an existing directory to copy, must not be null
        destDir - the new directory, must not be null
        preserveFileDate - true if the file date of the copy + should be the same as the original
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs during copying
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        copyDirectory

        +
        public static void copyDirectory(File srcDir,
        +                 File destDir,
        +                 FileFilter filter)
        +                          throws IOException
        +
        Copies a filtered directory to a new location preserving the file dates. +

        + This method copies the contents of the specified source directory + to within the specified destination directory. +

        + The destination directory is created if it does not exist. + If the destination directory did exist, then this method merges + the source with the destination, with the source taking precedence. +

        + Note: This method tries to preserve the files' last + modified date/times using File.setLastModified(long), however + it is not guaranteed that those operations will succeed. + If the modification operation fails, no indication is provided. +

        +

        Example: Copy directories only

        +
        +  // only copy the directory structure
        +  FileUtils.copyDirectory(srcDir, destDir, DirectoryFileFilter.DIRECTORY);
        +  
        + +

        Example: Copy directories and txt files

        +
        +  // Create a filter for ".txt" files
        +  IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt");
        +  IOFileFilter txtFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, txtSuffixFilter);
        +
        +  // Create a filter for either directories or ".txt" files
        +  FileFilter filter = FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, txtFiles);
        +
        +  // Copy using the filter
        +  FileUtils.copyDirectory(srcDir, destDir, filter);
        +  
        +
        Parameters:
        srcDir - an existing directory to copy, must not be null
        destDir - the new directory, must not be null
        filter - the filter to apply, null means copy all directories and files + should be the same as the original
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs during copying
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        copyDirectory

        +
        public static void copyDirectory(File srcDir,
        +                 File destDir,
        +                 FileFilter filter,
        +                 boolean preserveFileDate)
        +                          throws IOException
        +
        Copies a filtered directory to a new location. +

        + This method copies the contents of the specified source directory + to within the specified destination directory. +

        + The destination directory is created if it does not exist. + If the destination directory did exist, then this method merges + the source with the destination, with the source taking precedence. +

        + Note: Setting preserveFileDate to + true tries to preserve the files' last modified + date/times using File.setLastModified(long), however it is + not guaranteed that those operations will succeed. + If the modification operation fails, no indication is provided. +

        +

        Example: Copy directories only

        +
        +  // only copy the directory structure
        +  FileUtils.copyDirectory(srcDir, destDir, DirectoryFileFilter.DIRECTORY, false);
        +  
        + +

        Example: Copy directories and txt files

        +
        +  // Create a filter for ".txt" files
        +  IOFileFilter txtSuffixFilter = FileFilterUtils.suffixFileFilter(".txt");
        +  IOFileFilter txtFiles = FileFilterUtils.andFileFilter(FileFileFilter.FILE, txtSuffixFilter);
        +
        +  // Create a filter for either directories or ".txt" files
        +  FileFilter filter = FileFilterUtils.orFileFilter(DirectoryFileFilter.DIRECTORY, txtFiles);
        +
        +  // Copy using the filter
        +  FileUtils.copyDirectory(srcDir, destDir, filter, false);
        +  
        +
        Parameters:
        srcDir - an existing directory to copy, must not be null
        destDir - the new directory, must not be null
        filter - the filter to apply, null means copy all directories and files
        preserveFileDate - true if the file date of the copy + should be the same as the original
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs during copying
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        copyURLToFile

        +
        public static void copyURLToFile(URL source,
        +                 File destination)
        +                          throws IOException
        +
        Copies bytes from the URL source to a file + destination. The directories up to destination + will be created if they don't already exist. destination + will be overwritten if it already exists. +

        + Warning: this method does not set a connection or read timeout and thus + might block forever. Use copyURLToFile(URL, File, int, int) + with reasonable timeouts to prevent this.

        +
        Parameters:
        source - the URL to copy bytes from, must not be null
        destination - the non-directory File to write bytes to + (possibly overwriting), must not be null
        +
        Throws:
        +
        IOException - if source URL cannot be opened
        +
        IOException - if destination is a directory
        +
        IOException - if destination cannot be written
        +
        IOException - if destination needs creating but can't be
        +
        IOException - if an IO error occurs during copying
        +
      • +
      + + + +
        +
      • +

        copyURLToFile

        +
        public static void copyURLToFile(URL source,
        +                 File destination,
        +                 int connectionTimeout,
        +                 int readTimeout)
        +                          throws IOException
        +
        Copies bytes from the URL source to a file + destination. The directories up to destination + will be created if they don't already exist. destination + will be overwritten if it already exists.
        +
        Parameters:
        source - the URL to copy bytes from, must not be null
        destination - the non-directory File to write bytes to + (possibly overwriting), must not be null
        connectionTimeout - the number of milliseconds until this method + will timeout if no connection could be established to the source
        readTimeout - the number of milliseconds until this method will + timeout if no data could be read from the source
        +
        Throws:
        +
        IOException - if source URL cannot be opened
        +
        IOException - if destination is a directory
        +
        IOException - if destination cannot be written
        +
        IOException - if destination needs creating but can't be
        +
        IOException - if an IO error occurs during copying
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        copyInputStreamToFile

        +
        public static void copyInputStreamToFile(InputStream source,
        +                         File destination)
        +                                  throws IOException
        +
        Copies bytes from an InputStream source to a file + destination. The directories up to destination + will be created if they don't already exist. destination + will be overwritten if it already exists. + The source stream is closed. + See copyToFile(InputStream, File) for a method that does not close the input stream.
        +
        Parameters:
        source - the InputStream to copy bytes from, must not be null, will be closed
        destination - the non-directory File to write bytes to + (possibly overwriting), must not be null
        +
        Throws:
        +
        IOException - if destination is a directory
        +
        IOException - if destination cannot be written
        +
        IOException - if destination needs creating but can't be
        +
        IOException - if an IO error occurs during copying
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        copyToFile

        +
        public static void copyToFile(InputStream source,
        +              File destination)
        +                       throws IOException
        +
        Copies bytes from an InputStream source to a file + destination. The directories up to destination + will be created if they don't already exist. destination + will be overwritten if it already exists. + The source stream is left open, e.g. for use with ZipInputStream. + See copyInputStreamToFile(InputStream, File) for a method that closes the input stream.
        +
        Parameters:
        source - the InputStream to copy bytes from, must not be null
        destination - the non-directory File to write bytes to + (possibly overwriting), must not be null
        +
        Throws:
        +
        IOException - if destination is a directory
        +
        IOException - if destination cannot be written
        +
        IOException - if destination needs creating but can't be
        +
        IOException - if an IO error occurs during copying
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        deleteDirectory

        +
        public static void deleteDirectory(File directory)
        +                            throws IOException
        +
        Deletes a directory recursively.
        +
        Parameters:
        directory - directory to delete
        +
        Throws:
        +
        IOException - in case deletion is unsuccessful
        +
        IllegalArgumentException - if directory does not exist or is not a directory
        +
      • +
      + + + +
        +
      • +

        deleteQuietly

        +
        public static boolean deleteQuietly(File file)
        +
        Deletes a file, never throwing an exception. If file is a directory, delete it and all sub-directories. +

        + The difference between File.delete() and this method are: +

          +
        • A directory to be deleted does not have to be empty.
        • +
        • No exceptions are thrown when a file or directory cannot be deleted.
        • +
        +
        Parameters:
        file - file or directory to delete, can be null
        +
        Returns:
        true if the file or directory was deleted, otherwise + false
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        directoryContains

        +
        public static boolean directoryContains(File directory,
        +                        File child)
        +                                 throws IOException
        +
        Determines whether the parent directory contains the child element (a file or directory). +

        + Files are normalized before comparison. +

        + + Edge cases: +
          +
        • A directory must not be null: if null, throw IllegalArgumentException
        • +
        • A directory must be a directory: if not a directory, throw IllegalArgumentException
        • +
        • A directory does not contain itself: return false
        • +
        • A null child file is not contained in any parent: return false
        • +
        +
        Parameters:
        directory - the file to consider as the parent.
        child - the file to consider as the child.
        +
        Returns:
        true is the candidate leaf is under by the specified composite. False otherwise.
        +
        Throws:
        +
        IOException - if an IO error occurs while checking the files.
        +
        IllegalArgumentException - if directory is null or not a directory.
        Since:
        +
        2.2
        +
        See Also:
        FilenameUtils.directoryContains(String, String)
        +
      • +
      + + + +
        +
      • +

        cleanDirectory

        +
        public static void cleanDirectory(File directory)
        +                           throws IOException
        +
        Cleans a directory without deleting it.
        +
        Parameters:
        directory - directory to clean
        +
        Throws:
        +
        IOException - in case cleaning is unsuccessful
        +
        IllegalArgumentException - if directory does not exist or is not a directory
        +
      • +
      + + + +
        +
      • +

        waitFor

        +
        public static boolean waitFor(File file,
        +              int seconds)
        +
        Waits for NFS to propagate a file creation, imposing a timeout. +

        + This method repeatedly tests File.exists() until it returns + true up to the maximum time specified in seconds.

        +
        Parameters:
        file - the file to check, must not be null
        seconds - the maximum time in seconds to wait
        +
        Returns:
        true if file exists
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
      • +
      + + + +
        +
      • +

        readFileToString

        +
        public static String readFileToString(File file,
        +                      Charset encoding)
        +                               throws IOException
        +
        Reads the contents of a file into a String. + The file is always closed.
        +
        Parameters:
        file - the file to read, must not be null
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the file contents, never null
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        readFileToString

        +
        public static String readFileToString(File file,
        +                      String encoding)
        +                               throws IOException
        +
        Reads the contents of a file into a String. The file is always closed.
        +
        Parameters:
        file - the file to read, must not be null
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the file contents, never null
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the encoding is not supported.
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        readFileToString

        +
        @Deprecated
        +public static String readFileToString(File file)
        +                               throws IOException
        +
        Deprecated. 2.5 use readFileToString(File, Charset) instead
        +
        Reads the contents of a file into a String using the default encoding for the VM. + The file is always closed.
        +
        Parameters:
        file - the file to read, must not be null
        +
        Returns:
        the file contents, never null
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        1.3.1
        +
      • +
      + + + +
        +
      • +

        readFileToByteArray

        +
        public static byte[] readFileToByteArray(File file)
        +                                  throws IOException
        +
        Reads the contents of a file into a byte array. + The file is always closed.
        +
        Parameters:
        file - the file to read, must not be null
        +
        Returns:
        the file contents, never null
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        readLines

        +
        public static List<String> readLines(File file,
        +                     Charset encoding)
        +                              throws IOException
        +
        Reads the contents of a file line by line to a List of Strings. + The file is always closed.
        +
        Parameters:
        file - the file to read, must not be null
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the list of Strings representing each line in the file, never null
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        readLines

        +
        public static List<String> readLines(File file,
        +                     String encoding)
        +                              throws IOException
        +
        Reads the contents of a file line by line to a List of Strings. The file is always closed.
        +
        Parameters:
        file - the file to read, must not be null
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the list of Strings representing each line in the file, never null
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the encoding is not supported.
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        readLines

        +
        @Deprecated
        +public static List<String> readLines(File file)
        +                              throws IOException
        +
        Deprecated. 2.5 use readLines(File, Charset) instead
        +
        Reads the contents of a file line by line to a List of Strings using the default encoding for the VM. + The file is always closed.
        +
        Parameters:
        file - the file to read, must not be null
        +
        Returns:
        the list of Strings representing each line in the file, never null
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        lineIterator

        +
        public static LineIterator lineIterator(File file,
        +                        String encoding)
        +                                 throws IOException
        +
        Returns an Iterator for the lines in a File. +

        + This method opens an InputStream for the file. + When you have finished with the iterator you should close the stream + to free internal resources. This can be done by calling the + LineIterator.close() or + LineIterator.closeQuietly(LineIterator) method. +

        + The recommended usage pattern is: +

        + LineIterator it = FileUtils.lineIterator(file, "UTF-8");
        + try {
        +   while (it.hasNext()) {
        +     String line = it.nextLine();
        +     /// do something with line
        +   }
        + } finally {
        +   LineIterator.closeQuietly(iterator);
        + }
        + 
        +

        + If an exception occurs during the creation of the iterator, the + underlying stream is closed.

        +
        Parameters:
        file - the file to open for input, must not be null
        encoding - the encoding to use, null means platform default
        +
        Returns:
        an Iterator of the lines in the file, never null
        +
        Throws:
        +
        IOException - in case of an I/O error (file closed)
        Since:
        +
        1.2
        +
      • +
      + + + +
        +
      • +

        lineIterator

        +
        public static LineIterator lineIterator(File file)
        +                                 throws IOException
        +
        Returns an Iterator for the lines in a File using the default encoding for the VM.
        +
        Parameters:
        file - the file to open for input, must not be null
        +
        Returns:
        an Iterator of the lines in the file, never null
        +
        Throws:
        +
        IOException - in case of an I/O error (file closed)
        Since:
        +
        1.3
        +
        See Also:
        lineIterator(File, String)
        +
      • +
      + + + +
        +
      • +

        writeStringToFile

        +
        public static void writeStringToFile(File file,
        +                     String data,
        +                     Charset encoding)
        +                              throws IOException
        +
        Writes a String to a file creating the file if it does not exist. +

        + NOTE: As from v1.3, the parent directories of the file will be created + if they do not exist.

        +
        Parameters:
        file - the file to write
        data - the content to write to the file
        encoding - the encoding to use, null means platform default
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
        UnsupportedEncodingException - if the encoding is not supported by the VM
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        writeStringToFile

        +
        public static void writeStringToFile(File file,
        +                     String data,
        +                     String encoding)
        +                              throws IOException
        +
        Writes a String to a file creating the file if it does not exist. +

        + NOTE: As from v1.3, the parent directories of the file will be created + if they do not exist.

        +
        Parameters:
        file - the file to write
        data - the content to write to the file
        encoding - the encoding to use, null means platform default
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
        UnsupportedEncodingException - if the encoding is not supported by the VM
        +
      • +
      + + + +
        +
      • +

        writeStringToFile

        +
        public static void writeStringToFile(File file,
        +                     String data,
        +                     Charset encoding,
        +                     boolean append)
        +                              throws IOException
        +
        Writes a String to a file creating the file if it does not exist.
        +
        Parameters:
        file - the file to write
        data - the content to write to the file
        encoding - the encoding to use, null means platform default
        append - if true, then the String will be added to the + end of the file rather than overwriting
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        writeStringToFile

        +
        public static void writeStringToFile(File file,
        +                     String data,
        +                     String encoding,
        +                     boolean append)
        +                              throws IOException
        +
        Writes a String to a file creating the file if it does not exist.
        +
        Parameters:
        file - the file to write
        data - the content to write to the file
        encoding - the encoding to use, null means platform default
        append - if true, then the String will be added to the + end of the file rather than overwriting
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the encoding is not supported by the VM
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        writeStringToFile

        +
        @Deprecated
        +public static void writeStringToFile(File file,
        +                                String data)
        +                              throws IOException
        +
        Deprecated. 2.5 use writeStringToFile(File, String, Charset) instead
        +
        Writes a String to a file creating the file if it does not exist using the default encoding for the VM.
        +
        Parameters:
        file - the file to write
        data - the content to write to the file
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        writeStringToFile

        +
        @Deprecated
        +public static void writeStringToFile(File file,
        +                                String data,
        +                                boolean append)
        +                              throws IOException
        + +
        Writes a String to a file creating the file if it does not exist using the default encoding for the VM.
        +
        Parameters:
        file - the file to write
        data - the content to write to the file
        append - if true, then the String will be added to the + end of the file rather than overwriting
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        write

        +
        @Deprecated
        +public static void write(File file,
        +                    CharSequence data)
        +                  throws IOException
        +
        Deprecated. 2.5 use write(File, CharSequence, Charset) instead
        +
        Writes a CharSequence to a file creating the file if it does not exist using the default encoding for the VM.
        +
        Parameters:
        file - the file to write
        data - the content to write to the file
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        write

        +
        @Deprecated
        +public static void write(File file,
        +                    CharSequence data,
        +                    boolean append)
        +                  throws IOException
        +
        Deprecated. 2.5 use write(File, CharSequence, Charset, boolean) instead
        +
        Writes a CharSequence to a file creating the file if it does not exist using the default encoding for the VM.
        +
        Parameters:
        file - the file to write
        data - the content to write to the file
        append - if true, then the data will be added to the + end of the file rather than overwriting
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        write

        +
        public static void write(File file,
        +         CharSequence data,
        +         Charset encoding)
        +                  throws IOException
        +
        Writes a CharSequence to a file creating the file if it does not exist.
        +
        Parameters:
        file - the file to write
        data - the content to write to the file
        encoding - the encoding to use, null means platform default
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        write

        +
        public static void write(File file,
        +         CharSequence data,
        +         String encoding)
        +                  throws IOException
        +
        Writes a CharSequence to a file creating the file if it does not exist.
        +
        Parameters:
        file - the file to write
        data - the content to write to the file
        encoding - the encoding to use, null means platform default
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
        UnsupportedEncodingException - if the encoding is not supported by the VM
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        write

        +
        public static void write(File file,
        +         CharSequence data,
        +         Charset encoding,
        +         boolean append)
        +                  throws IOException
        +
        Writes a CharSequence to a file creating the file if it does not exist.
        +
        Parameters:
        file - the file to write
        data - the content to write to the file
        encoding - the encoding to use, null means platform default
        append - if true, then the data will be added to the + end of the file rather than overwriting
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        write

        +
        public static void write(File file,
        +         CharSequence data,
        +         String encoding,
        +         boolean append)
        +                  throws IOException
        +
        Writes a CharSequence to a file creating the file if it does not exist.
        +
        Parameters:
        file - the file to write
        data - the content to write to the file
        encoding - the encoding to use, null means platform default
        append - if true, then the data will be added to the + end of the file rather than overwriting
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the encoding is not supported by the VM
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        writeByteArrayToFile

        +
        public static void writeByteArrayToFile(File file,
        +                        byte[] data)
        +                                 throws IOException
        +
        Writes a byte array to a file creating the file if it does not exist. +

        + NOTE: As from v1.3, the parent directories of the file will be created + if they do not exist.

        +
        Parameters:
        file - the file to write to
        data - the content to write to the file
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        writeByteArrayToFile

        +
        public static void writeByteArrayToFile(File file,
        +                        byte[] data,
        +                        boolean append)
        +                                 throws IOException
        +
        Writes a byte array to a file creating the file if it does not exist.
        +
        Parameters:
        file - the file to write to
        data - the content to write to the file
        append - if true, then bytes will be added to the + end of the file rather than overwriting
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        writeByteArrayToFile

        +
        public static void writeByteArrayToFile(File file,
        +                        byte[] data,
        +                        int off,
        +                        int len)
        +                                 throws IOException
        +
        Writes len bytes from the specified byte array starting + at offset off to a file, creating the file if it does + not exist.
        +
        Parameters:
        file - the file to write to
        data - the content to write to the file
        off - the start offset in the data
        len - the number of bytes to write
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        writeByteArrayToFile

        +
        public static void writeByteArrayToFile(File file,
        +                        byte[] data,
        +                        int off,
        +                        int len,
        +                        boolean append)
        +                                 throws IOException
        +
        Writes len bytes from the specified byte array starting + at offset off to a file, creating the file if it does + not exist.
        +
        Parameters:
        file - the file to write to
        data - the content to write to the file
        off - the start offset in the data
        len - the number of bytes to write
        append - if true, then bytes will be added to the + end of the file rather than overwriting
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        writeLines

        +
        public static void writeLines(File file,
        +              String encoding,
        +              Collection<?> lines)
        +                       throws IOException
        +
        Writes the toString() value of each item in a collection to + the specified File line by line. + The specified character encoding and the default line ending will be used. +

        + NOTE: As from v1.3, the parent directories of the file will be created + if they do not exist.

        +
        Parameters:
        file - the file to write to
        encoding - the encoding to use, null means platform default
        lines - the lines to write, null entries produce blank lines
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
        UnsupportedEncodingException - if the encoding is not supported by the VM
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        writeLines

        +
        public static void writeLines(File file,
        +              String encoding,
        +              Collection<?> lines,
        +              boolean append)
        +                       throws IOException
        +
        Writes the toString() value of each item in a collection to + the specified File line by line, optionally appending. + The specified character encoding and the default line ending will be used.
        +
        Parameters:
        file - the file to write to
        encoding - the encoding to use, null means platform default
        lines - the lines to write, null entries produce blank lines
        append - if true, then the lines will be added to the + end of the file rather than overwriting
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
        UnsupportedEncodingException - if the encoding is not supported by the VM
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        writeLines

        +
        public static void writeLines(File file,
        +              Collection<?> lines)
        +                       throws IOException
        +
        Writes the toString() value of each item in a collection to + the specified File line by line. + The default VM encoding and the default line ending will be used.
        +
        Parameters:
        file - the file to write to
        lines - the lines to write, null entries produce blank lines
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        writeLines

        +
        public static void writeLines(File file,
        +              Collection<?> lines,
        +              boolean append)
        +                       throws IOException
        +
        Writes the toString() value of each item in a collection to + the specified File line by line. + The default VM encoding and the default line ending will be used.
        +
        Parameters:
        file - the file to write to
        lines - the lines to write, null entries produce blank lines
        append - if true, then the lines will be added to the + end of the file rather than overwriting
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        writeLines

        +
        public static void writeLines(File file,
        +              String encoding,
        +              Collection<?> lines,
        +              String lineEnding)
        +                       throws IOException
        +
        Writes the toString() value of each item in a collection to + the specified File line by line. + The specified character encoding and the line ending will be used. +

        + NOTE: As from v1.3, the parent directories of the file will be created + if they do not exist.

        +
        Parameters:
        file - the file to write to
        encoding - the encoding to use, null means platform default
        lines - the lines to write, null entries produce blank lines
        lineEnding - the line separator to use, null is system default
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
        UnsupportedEncodingException - if the encoding is not supported by the VM
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        writeLines

        +
        public static void writeLines(File file,
        +              String encoding,
        +              Collection<?> lines,
        +              String lineEnding,
        +              boolean append)
        +                       throws IOException
        +
        Writes the toString() value of each item in a collection to + the specified File line by line. + The specified character encoding and the line ending will be used.
        +
        Parameters:
        file - the file to write to
        encoding - the encoding to use, null means platform default
        lines - the lines to write, null entries produce blank lines
        lineEnding - the line separator to use, null is system default
        append - if true, then the lines will be added to the + end of the file rather than overwriting
        +
        Throws:
        +
        IOException - in case of an I/O error
        +
        UnsupportedEncodingException - if the encoding is not supported by the VM
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        writeLines

        +
        public static void writeLines(File file,
        +              Collection<?> lines,
        +              String lineEnding)
        +                       throws IOException
        +
        Writes the toString() value of each item in a collection to + the specified File line by line. + The default VM encoding and the specified line ending will be used.
        +
        Parameters:
        file - the file to write to
        lines - the lines to write, null entries produce blank lines
        lineEnding - the line separator to use, null is system default
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        writeLines

        +
        public static void writeLines(File file,
        +              Collection<?> lines,
        +              String lineEnding,
        +              boolean append)
        +                       throws IOException
        +
        Writes the toString() value of each item in a collection to + the specified File line by line. + The default VM encoding and the specified line ending will be used.
        +
        Parameters:
        file - the file to write to
        lines - the lines to write, null entries produce blank lines
        lineEnding - the line separator to use, null is system default
        append - if true, then the lines will be added to the + end of the file rather than overwriting
        +
        Throws:
        +
        IOException - in case of an I/O error
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        forceDelete

        +
        public static void forceDelete(File file)
        +                        throws IOException
        +
        Deletes a file. If file is a directory, delete it and all sub-directories. +

        + The difference between File.delete() and this method are: +

          +
        • A directory to be deleted does not have to be empty.
        • +
        • You get exceptions when a file or directory cannot be deleted. + (java.io.File methods returns a boolean)
        • +
        +
        Parameters:
        file - file or directory to delete, must not be null
        +
        Throws:
        +
        NullPointerException - if the directory is null
        +
        FileNotFoundException - if the file was not found
        +
        IOException - in case deletion is unsuccessful
        +
      • +
      + + + +
        +
      • +

        forceDeleteOnExit

        +
        public static void forceDeleteOnExit(File file)
        +                              throws IOException
        +
        Schedules a file to be deleted when JVM exits. + If file is directory delete it and all sub-directories.
        +
        Parameters:
        file - file or directory to delete, must not be null
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IOException - in case deletion is unsuccessful
        +
      • +
      + + + +
        +
      • +

        forceMkdir

        +
        public static void forceMkdir(File directory)
        +                       throws IOException
        +
        Makes a directory, including any necessary but nonexistent parent + directories. If a file already exists with specified name but it is + not a directory then an IOException is thrown. + If the directory cannot be created (or does not already exist) + then an IOException is thrown.
        +
        Parameters:
        directory - directory to create, must not be null
        +
        Throws:
        +
        NullPointerException - if the directory is null
        +
        IOException - if the directory cannot be created or the file already exists but is not a directory
        +
      • +
      + + + +
        +
      • +

        forceMkdirParent

        +
        public static void forceMkdirParent(File file)
        +                             throws IOException
        +
        Makes any necessary but nonexistent parent directories for a given File. If the parent directory cannot be + created then an IOException is thrown.
        +
        Parameters:
        file - file with parent to create, must not be null
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IOException - if the parent directory cannot be created
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        sizeOf

        +
        public static long sizeOf(File file)
        +
        Returns the size of the specified file or directory. If the provided + File is a regular file, then the file's length is returned. + If the argument is a directory, then the size of the directory is + calculated recursively. If a directory or subdirectory is security + restricted, its size will not be included. +

        + Note that overflow is not detected, and the return value may be negative if + overflow occurs. See sizeOfAsBigInteger(File) for an alternative + method that does not overflow.

        +
        Parameters:
        file - the regular file or directory to return the size + of (must not be null).
        +
        Returns:
        the length of the file, or recursive size of the directory, + provided (in bytes).
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IllegalArgumentException - if the file does not exist.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        sizeOfAsBigInteger

        +
        public static BigInteger sizeOfAsBigInteger(File file)
        +
        Returns the size of the specified file or directory. If the provided + File is a regular file, then the file's length is returned. + If the argument is a directory, then the size of the directory is + calculated recursively. If a directory or subdirectory is security + restricted, its size will not be included.
        +
        Parameters:
        file - the regular file or directory to return the size + of (must not be null).
        +
        Returns:
        the length of the file, or recursive size of the directory, + provided (in bytes).
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IllegalArgumentException - if the file does not exist.
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        sizeOfDirectory

        +
        public static long sizeOfDirectory(File directory)
        +
        Counts the size of a directory recursively (sum of the length of all files). +

        + Note that overflow is not detected, and the return value may be negative if + overflow occurs. See sizeOfDirectoryAsBigInteger(File) for an alternative + method that does not overflow.

        +
        Parameters:
        directory - directory to inspect, must not be null
        +
        Returns:
        size of directory in bytes, 0 if directory is security restricted, a negative number when the real total + is greater than Long.MAX_VALUE.
        +
        Throws:
        +
        NullPointerException - if the directory is null
        +
      • +
      + + + +
        +
      • +

        sizeOfDirectoryAsBigInteger

        +
        public static BigInteger sizeOfDirectoryAsBigInteger(File directory)
        +
        Counts the size of a directory recursively (sum of the length of all files).
        +
        Parameters:
        directory - directory to inspect, must not be null
        +
        Returns:
        size of directory in bytes, 0 if directory is security restricted.
        +
        Throws:
        +
        NullPointerException - if the directory is null
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        isFileNewer

        +
        public static boolean isFileNewer(File file,
        +                  File reference)
        +
        Tests if the specified File is newer than the reference + File.
        +
        Parameters:
        file - the File of which the modification date must + be compared, must not be null
        reference - the File of which the modification date + is used, must not be null
        +
        Returns:
        true if the File exists and has been modified more + recently than the reference File
        +
        Throws:
        +
        IllegalArgumentException - if the file is null
        +
        IllegalArgumentException - if the reference file is null or doesn't exist
        +
      • +
      + + + +
        +
      • +

        isFileNewer

        +
        public static boolean isFileNewer(File file,
        +                  Date date)
        +
        Tests if the specified File is newer than the specified + Date.
        +
        Parameters:
        file - the File of which the modification date + must be compared, must not be null
        date - the date reference, must not be null
        +
        Returns:
        true if the File exists and has been modified + after the given Date.
        +
        Throws:
        +
        IllegalArgumentException - if the file is null
        +
        IllegalArgumentException - if the date is null
        +
      • +
      + + + +
        +
      • +

        isFileNewer

        +
        public static boolean isFileNewer(File file,
        +                  long timeMillis)
        +
        Tests if the specified File is newer than the specified + time reference.
        +
        Parameters:
        file - the File of which the modification date must + be compared, must not be null
        timeMillis - the time reference measured in milliseconds since the + epoch (00:00:00 GMT, January 1, 1970)
        +
        Returns:
        true if the File exists and has been modified after + the given time reference.
        +
        Throws:
        +
        IllegalArgumentException - if the file is null
        +
      • +
      + + + +
        +
      • +

        isFileOlder

        +
        public static boolean isFileOlder(File file,
        +                  File reference)
        +
        Tests if the specified File is older than the reference + File.
        +
        Parameters:
        file - the File of which the modification date must + be compared, must not be null
        reference - the File of which the modification date + is used, must not be null
        +
        Returns:
        true if the File exists and has been modified before + the reference File
        +
        Throws:
        +
        IllegalArgumentException - if the file is null
        +
        IllegalArgumentException - if the reference file is null or doesn't exist
        +
      • +
      + + + +
        +
      • +

        isFileOlder

        +
        public static boolean isFileOlder(File file,
        +                  Date date)
        +
        Tests if the specified File is older than the specified + Date.
        +
        Parameters:
        file - the File of which the modification date + must be compared, must not be null
        date - the date reference, must not be null
        +
        Returns:
        true if the File exists and has been modified + before the given Date.
        +
        Throws:
        +
        IllegalArgumentException - if the file is null
        +
        IllegalArgumentException - if the date is null
        +
      • +
      + + + +
        +
      • +

        isFileOlder

        +
        public static boolean isFileOlder(File file,
        +                  long timeMillis)
        +
        Tests if the specified File is older than the specified + time reference.
        +
        Parameters:
        file - the File of which the modification date must + be compared, must not be null
        timeMillis - the time reference measured in milliseconds since the + epoch (00:00:00 GMT, January 1, 1970)
        +
        Returns:
        true if the File exists and has been modified before + the given time reference.
        +
        Throws:
        +
        IllegalArgumentException - if the file is null
        +
      • +
      + + + +
        +
      • +

        checksumCRC32

        +
        public static long checksumCRC32(File file)
        +                          throws IOException
        +
        Computes the checksum of a file using the CRC32 checksum routine. + The value of the checksum is returned.
        +
        Parameters:
        file - the file to checksum, must not be null
        +
        Returns:
        the checksum value
        +
        Throws:
        +
        NullPointerException - if the file or checksum is null
        +
        IllegalArgumentException - if the file is a directory
        +
        IOException - if an IO error occurs reading the file
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        checksum

        +
        public static Checksum checksum(File file,
        +                Checksum checksum)
        +                         throws IOException
        +
        Computes the checksum of a file using the specified checksum object. + Multiple files may be checked using one Checksum instance + if desired simply by reusing the same checksum object. + For example: +
        +   long csum = FileUtils.checksum(file, new CRC32()).getValue();
        + 
        +
        Parameters:
        file - the file to checksum, must not be null
        checksum - the checksum object to be used, must not be null
        +
        Returns:
        the checksum specified, updated with the content of the file
        +
        Throws:
        +
        NullPointerException - if the file or checksum is null
        +
        IllegalArgumentException - if the file is a directory
        +
        IOException - if an IO error occurs reading the file
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        moveDirectory

        +
        public static void moveDirectory(File srcDir,
        +                 File destDir)
        +                          throws IOException
        +
        Moves a directory. +

        + When the destination directory is on another file system, do a "copy and delete".

        +
        Parameters:
        srcDir - the directory to be moved
        destDir - the destination directory
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        FileExistsException - if the destination directory exists
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs moving the file
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        moveDirectoryToDirectory

        +
        public static void moveDirectoryToDirectory(File src,
        +                            File destDir,
        +                            boolean createDestDir)
        +                                     throws IOException
        +
        Moves a directory to another directory.
        +
        Parameters:
        src - the file to be moved
        destDir - the destination file
        createDestDir - If true create the destination directory, + otherwise if false throw an IOException
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        FileExistsException - if the directory exists in the destination directory
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs moving the file
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        moveFile

        +
        public static void moveFile(File srcFile,
        +            File destFile)
        +                     throws IOException
        +
        Moves a file. +

        + When the destination file is on another file system, do a "copy and delete".

        +
        Parameters:
        srcFile - the file to be moved
        destFile - the destination file
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        FileExistsException - if the destination file exists
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs moving the file
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        moveFileToDirectory

        +
        public static void moveFileToDirectory(File srcFile,
        +                       File destDir,
        +                       boolean createDestDir)
        +                                throws IOException
        +
        Moves a file to a directory.
        +
        Parameters:
        srcFile - the file to be moved
        destDir - the destination file
        createDestDir - If true create the destination directory, + otherwise if false throw an IOException
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        FileExistsException - if the destination file exists
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs moving the file
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        moveToDirectory

        +
        public static void moveToDirectory(File src,
        +                   File destDir,
        +                   boolean createDestDir)
        +                            throws IOException
        +
        Moves a file or directory to the destination directory. +

        + When the destination is on another file system, do a "copy and delete".

        +
        Parameters:
        src - the file or directory to be moved
        destDir - the destination directory
        createDestDir - If true create the destination directory, + otherwise if false throw an IOException
        +
        Throws:
        +
        NullPointerException - if source or destination is null
        +
        FileExistsException - if the directory or file exists in the destination directory
        +
        IOException - if source or destination is invalid
        +
        IOException - if an IO error occurs moving the file
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        isSymlink

        +
        public static boolean isSymlink(File file)
        +                         throws IOException
        +
        Determines whether the specified file is a Symbolic Link rather than an actual file. +

        + Will not return true if there is a Symbolic Link anywhere in the path, + only if the specific file is. +

        + When using jdk1.7, this method delegates to boolean java.nio.file.Files.isSymbolicLink(Path path) + + Note: the current implementation always returns false if running on + jkd1.6 and the system is detected as Windows using FilenameUtils.isSystemWindows() +

        + For code that runs on Java 1.7 or later, use the following method instead: +
        + boolean java.nio.file.Files.isSymbolicLink(Path path)

        +
        Parameters:
        file - the file to check
        +
        Returns:
        true if the file is a Symbolic Link
        +
        Throws:
        +
        IOException - if an IO error occurs while checking the file
        Since:
        +
        2.0
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/FilenameUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FilenameUtils.html new file mode 100644 index 0000000..fec6b6e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/FilenameUtils.html @@ -0,0 +1,1432 @@ + + + + + +FilenameUtils (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class FilenameUtils

+
+
+ +
+
    +
  • +
    +
    +
    public class FilenameUtils
    +extends Object
    +
    General filename and filepath manipulation utilities. +

    + When dealing with filenames you can hit problems when moving from a Windows + based development machine to a Unix based production machine. + This class aims to help avoid those problems. +

    + NOTE: You may be able to avoid using this class entirely simply by + using JDK File objects and the two argument constructor + File(File,String). +

    + Most methods on this class are designed to work the same on both Unix and Windows. + Those that don't include 'System', 'Unix' or 'Windows' in their name. +

    + Most methods recognise both separators (forward and back), and both + sets of prefixes. See the javadoc of each method for details. +

    + This class defines six components within a filename + (example C:\dev\project\file.txt): +

      +
    • the prefix - C:\
    • +
    • the path - dev\project\
    • +
    • the full path - C:\dev\project\
    • +
    • the name - file.txt
    • +
    • the base name - file
    • +
    • the extension - txt
    • +
    + Note that this class works best if directory filenames end with a separator. + If you omit the last separator, it is impossible to determine if the filename + corresponds to a file or a directory. As a result, we have chosen to say + it corresponds to a file. +

    + This class only supports Unix and Windows style names. + Prefixes are matched as follows: +

    + Windows:
    + a\b\c.txt           --> ""          --> relative
    + \a\b\c.txt          --> "\"         --> current drive absolute
    + C:a\b\c.txt         --> "C:"        --> drive relative
    + C:\a\b\c.txt        --> "C:\"       --> absolute
    + \\server\a\b\c.txt  --> "\\server\" --> UNC
    +
    + Unix:
    + a/b/c.txt           --> ""          --> relative
    + /a/b/c.txt          --> "/"         --> absolute
    + ~/a/b/c.txt         --> "~/"        --> current user
    + ~                   --> "~/"        --> current user (slash added)
    + ~user/a/b/c.txt     --> "~user/"    --> named user
    + ~user               --> "~user/"    --> named user (slash added)
    + 
    + Both prefix styles are matched always, irrespective of the machine that you are + currently running on. +

    + Origin of code: Excalibur, Alexandria, Tomcat, Commons-Utils.

    +
    Since:
    +
    1.1
    +
    Version:
    +
    $Id: FilenameUtils.java 1702170 2015-09-10 06:35:02Z krosenvold $
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      FilenameUtils() +
      Instances should NOT be constructed in standard programming.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static Stringconcat(String basePath, + String fullFilenameToAdd) +
      Concatenates a filename to a base path using normal command line style rules.
      +
      static booleandirectoryContains(String canonicalParent, + String canonicalChild) +
      Determines whether the parent directory contains the child element (a file or directory).
      +
      static booleanequals(String filename1, + String filename2) +
      Checks whether two filenames are equal exactly.
      +
      static booleanequals(String filename1, + String filename2, + boolean normalized, + IOCase caseSensitivity) +
      Checks whether two filenames are equal, optionally normalizing and providing + control over the case-sensitivity.
      +
      static booleanequalsNormalized(String filename1, + String filename2) +
      Checks whether two filenames are equal after both have been normalized.
      +
      static booleanequalsNormalizedOnSystem(String filename1, + String filename2) +
      Checks whether two filenames are equal after both have been normalized + and using the case rules of the system.
      +
      static booleanequalsOnSystem(String filename1, + String filename2) +
      Checks whether two filenames are equal using the case rules of the system.
      +
      static StringgetBaseName(String filename) +
      Gets the base name, minus the full path and extension, from a full filename.
      +
      static StringgetExtension(String filename) +
      Gets the extension of a filename.
      +
      static StringgetFullPath(String filename) +
      Gets the full path from a full filename, which is the prefix + path.
      +
      static StringgetFullPathNoEndSeparator(String filename) +
      Gets the full path from a full filename, which is the prefix + path, + and also excluding the final directory separator.
      +
      static StringgetName(String filename) +
      Gets the name minus the path from a full filename.
      +
      static StringgetPath(String filename) +
      Gets the path from a full filename, which excludes the prefix.
      +
      static StringgetPathNoEndSeparator(String filename) +
      Gets the path from a full filename, which excludes the prefix, and + also excluding the final directory separator.
      +
      static StringgetPrefix(String filename) +
      Gets the prefix from a full filename, such as C:/ + or ~/.
      +
      static intgetPrefixLength(String filename) +
      Returns the length of the filename prefix, such as C:/ or ~/.
      +
      static intindexOfExtension(String filename) +
      Returns the index of the last extension separator character, which is a dot.
      +
      static intindexOfLastSeparator(String filename) +
      Returns the index of the last directory separator character.
      +
      static booleanisExtension(String filename, + Collection<String> extensions) +
      Checks whether the extension of the filename is one of those specified.
      +
      static booleanisExtension(String filename, + String extension) +
      Checks whether the extension of the filename is that specified.
      +
      static booleanisExtension(String filename, + String[] extensions) +
      Checks whether the extension of the filename is one of those specified.
      +
      static Stringnormalize(String filename) +
      Normalizes a path, removing double and single dot path steps.
      +
      static Stringnormalize(String filename, + boolean unixSeparator) +
      Normalizes a path, removing double and single dot path steps.
      +
      static StringnormalizeNoEndSeparator(String filename) +
      Normalizes a path, removing double and single dot path steps, + and removing any final directory separator.
      +
      static StringnormalizeNoEndSeparator(String filename, + boolean unixSeparator) +
      Normalizes a path, removing double and single dot path steps, + and removing any final directory separator.
      +
      static StringremoveExtension(String filename) +
      Removes the extension from a filename.
      +
      static StringseparatorsToSystem(String path) +
      Converts all separators to the system separator.
      +
      static StringseparatorsToUnix(String path) +
      Converts all separators to the Unix separator of forward slash.
      +
      static StringseparatorsToWindows(String path) +
      Converts all separators to the Windows separator of backslash.
      +
      static booleanwildcardMatch(String filename, + String wildcardMatcher) +
      Checks a filename to see if it matches the specified wildcard matcher, + always testing case-sensitive.
      +
      static booleanwildcardMatch(String filename, + String wildcardMatcher, + IOCase caseSensitivity) +
      Checks a filename to see if it matches the specified wildcard matcher + allowing control over case-sensitivity.
      +
      static booleanwildcardMatchOnSystem(String filename, + String wildcardMatcher) +
      Checks a filename to see if it matches the specified wildcard matcher + using the case rules of the system.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        EXTENSION_SEPARATOR

        +
        public static final char EXTENSION_SEPARATOR
        +
        The extension separator character.
        +
        Since:
        +
        1.4
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        EXTENSION_SEPARATOR_STR

        +
        public static final String EXTENSION_SEPARATOR_STR
        +
        The extension separator String.
        +
        Since:
        +
        1.4
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FilenameUtils

        +
        public FilenameUtils()
        +
        Instances should NOT be constructed in standard programming.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        normalize

        +
        public static String normalize(String filename)
        +
        Normalizes a path, removing double and single dot path steps. +

        + This method normalizes a path to a standard format. + The input may contain separators in either Unix or Windows format. + The output will contain separators in the format of the system. +

        + A trailing slash will be retained. + A double slash will be merged to a single slash (but UNC names are handled). + A single dot path segment will be removed. + A double dot will cause that path segment and the one before to be removed. + If the double dot has no parent path segment to work with, null + is returned. +

        + The output will be the same on both Unix and Windows except + for the separator character. +

        + /foo//               -->   /foo/
        + /foo/./              -->   /foo/
        + /foo/../bar          -->   /bar
        + /foo/../bar/         -->   /bar/
        + /foo/../bar/../baz   -->   /baz
        + //foo//./bar         -->   /foo/bar
        + /../                 -->   null
        + ../foo               -->   null
        + foo/bar/..           -->   foo/
        + foo/../../bar        -->   null
        + foo/../bar           -->   bar
        + //server/foo/../bar  -->   //server/bar
        + //server/../bar      -->   null
        + C:\foo\..\bar        -->   C:\bar
        + C:\..\bar            -->   null
        + ~/foo/../bar/        -->   ~/bar/
        + ~/../bar             -->   null
        + 
        + (Note the file separator returned will be correct for Windows/Unix)
        +
        Parameters:
        filename - the filename to normalize, null returns null
        +
        Returns:
        the normalized filename, or null if invalid. Null bytes inside string will be removed
        +
      • +
      + + + +
        +
      • +

        normalize

        +
        public static String normalize(String filename,
        +               boolean unixSeparator)
        +
        Normalizes a path, removing double and single dot path steps. +

        + This method normalizes a path to a standard format. + The input may contain separators in either Unix or Windows format. + The output will contain separators in the format specified. +

        + A trailing slash will be retained. + A double slash will be merged to a single slash (but UNC names are handled). + A single dot path segment will be removed. + A double dot will cause that path segment and the one before to be removed. + If the double dot has no parent path segment to work with, null + is returned. +

        + The output will be the same on both Unix and Windows except + for the separator character. +

        + /foo//               -->   /foo/
        + /foo/./              -->   /foo/
        + /foo/../bar          -->   /bar
        + /foo/../bar/         -->   /bar/
        + /foo/../bar/../baz   -->   /baz
        + //foo//./bar         -->   /foo/bar
        + /../                 -->   null
        + ../foo               -->   null
        + foo/bar/..           -->   foo/
        + foo/../../bar        -->   null
        + foo/../bar           -->   bar
        + //server/foo/../bar  -->   //server/bar
        + //server/../bar      -->   null
        + C:\foo\..\bar        -->   C:\bar
        + C:\..\bar            -->   null
        + ~/foo/../bar/        -->   ~/bar/
        + ~/../bar             -->   null
        + 
        + The output will be the same on both Unix and Windows including + the separator character.
        +
        Parameters:
        filename - the filename to normalize, null returns null
        unixSeparator - true if a unix separator should + be used or false if a windows separator should be used.
        +
        Returns:
        the normalized filename, or null if invalid. Null bytes inside string will be removed
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        normalizeNoEndSeparator

        +
        public static String normalizeNoEndSeparator(String filename)
        +
        Normalizes a path, removing double and single dot path steps, + and removing any final directory separator. +

        + This method normalizes a path to a standard format. + The input may contain separators in either Unix or Windows format. + The output will contain separators in the format of the system. +

        + A trailing slash will be removed. + A double slash will be merged to a single slash (but UNC names are handled). + A single dot path segment will be removed. + A double dot will cause that path segment and the one before to be removed. + If the double dot has no parent path segment to work with, null + is returned. +

        + The output will be the same on both Unix and Windows except + for the separator character. +

        + /foo//               -->   /foo
        + /foo/./              -->   /foo
        + /foo/../bar          -->   /bar
        + /foo/../bar/         -->   /bar
        + /foo/../bar/../baz   -->   /baz
        + //foo//./bar         -->   /foo/bar
        + /../                 -->   null
        + ../foo               -->   null
        + foo/bar/..           -->   foo
        + foo/../../bar        -->   null
        + foo/../bar           -->   bar
        + //server/foo/../bar  -->   //server/bar
        + //server/../bar      -->   null
        + C:\foo\..\bar        -->   C:\bar
        + C:\..\bar            -->   null
        + ~/foo/../bar/        -->   ~/bar
        + ~/../bar             -->   null
        + 
        + (Note the file separator returned will be correct for Windows/Unix)
        +
        Parameters:
        filename - the filename to normalize, null returns null
        +
        Returns:
        the normalized filename, or null if invalid. Null bytes inside string will be removed
        +
      • +
      + + + +
        +
      • +

        normalizeNoEndSeparator

        +
        public static String normalizeNoEndSeparator(String filename,
        +                             boolean unixSeparator)
        +
        Normalizes a path, removing double and single dot path steps, + and removing any final directory separator. +

        + This method normalizes a path to a standard format. + The input may contain separators in either Unix or Windows format. + The output will contain separators in the format specified. +

        + A trailing slash will be removed. + A double slash will be merged to a single slash (but UNC names are handled). + A single dot path segment will be removed. + A double dot will cause that path segment and the one before to be removed. + If the double dot has no parent path segment to work with, null + is returned. +

        + The output will be the same on both Unix and Windows including + the separator character. +

        + /foo//               -->   /foo
        + /foo/./              -->   /foo
        + /foo/../bar          -->   /bar
        + /foo/../bar/         -->   /bar
        + /foo/../bar/../baz   -->   /baz
        + //foo//./bar         -->   /foo/bar
        + /../                 -->   null
        + ../foo               -->   null
        + foo/bar/..           -->   foo
        + foo/../../bar        -->   null
        + foo/../bar           -->   bar
        + //server/foo/../bar  -->   //server/bar
        + //server/../bar      -->   null
        + C:\foo\..\bar        -->   C:\bar
        + C:\..\bar            -->   null
        + ~/foo/../bar/        -->   ~/bar
        + ~/../bar             -->   null
        + 
        +
        Parameters:
        filename - the filename to normalize, null returns null
        unixSeparator - true if a unix separator should + be used or false if a windows separtor should be used.
        +
        Returns:
        the normalized filename, or null if invalid. Null bytes inside string will be removed
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        concat

        +
        public static String concat(String basePath,
        +            String fullFilenameToAdd)
        +
        Concatenates a filename to a base path using normal command line style rules. +

        + The effect is equivalent to resultant directory after changing + directory to the first argument, followed by changing directory to + the second argument. +

        + The first argument is the base path, the second is the path to concatenate. + The returned path is always normalized via normalize(String), + thus .. is handled. +

        + If pathToAdd is absolute (has an absolute prefix), then + it will be normalized and returned. + Otherwise, the paths will be joined, normalized and returned. +

        + The output will be the same on both Unix and Windows except + for the separator character. +

        + /foo/ + bar          -->   /foo/bar
        + /foo + bar           -->   /foo/bar
        + /foo + /bar          -->   /bar
        + /foo + C:/bar        -->   C:/bar
        + /foo + C:bar         -->   C:bar (*)
        + /foo/a/ + ../bar     -->   foo/bar
        + /foo/ + ../../bar    -->   null
        + /foo/ + /bar         -->   /bar
        + /foo/.. + /bar       -->   /bar
        + /foo + bar/c.txt     -->   /foo/bar/c.txt
        + /foo/c.txt + bar     -->   /foo/c.txt/bar (!)
        + 
        + (*) Note that the Windows relative drive prefix is unreliable when + used with this method. + (!) Note that the first parameter must be a path. If it ends with a name, then + the name will be built into the concatenated path. If this might be a problem, + use getFullPath(String) on the base path argument.
        +
        Parameters:
        basePath - the base path to attach to, always treated as a path
        fullFilenameToAdd - the filename (or path) to attach to the base
        +
        Returns:
        the concatenated path, or null if invalid. Null bytes inside string will be removed
        +
      • +
      + + + +
        +
      • +

        directoryContains

        +
        public static boolean directoryContains(String canonicalParent,
        +                        String canonicalChild)
        +                                 throws IOException
        +
        Determines whether the parent directory contains the child element (a file or directory). +

        + The files names are expected to be normalized. +

        + + Edge cases: +
          +
        • A directory must not be null: if null, throw IllegalArgumentException
        • +
        • A directory does not contain itself: return false
        • +
        • A null child file is not contained in any parent: return false
        • +
        +
        Parameters:
        canonicalParent - the file to consider as the parent.
        canonicalChild - the file to consider as the child.
        +
        Returns:
        true is the candidate leaf is under by the specified composite. False otherwise.
        +
        Throws:
        +
        IOException - if an IO error occurs while checking the files.
        Since:
        +
        2.2
        +
        See Also:
        FileUtils.directoryContains(File, File)
        +
      • +
      + + + +
        +
      • +

        separatorsToUnix

        +
        public static String separatorsToUnix(String path)
        +
        Converts all separators to the Unix separator of forward slash.
        +
        Parameters:
        path - the path to be changed, null ignored
        +
        Returns:
        the updated path
        +
      • +
      + + + +
        +
      • +

        separatorsToWindows

        +
        public static String separatorsToWindows(String path)
        +
        Converts all separators to the Windows separator of backslash.
        +
        Parameters:
        path - the path to be changed, null ignored
        +
        Returns:
        the updated path
        +
      • +
      + + + +
        +
      • +

        separatorsToSystem

        +
        public static String separatorsToSystem(String path)
        +
        Converts all separators to the system separator.
        +
        Parameters:
        path - the path to be changed, null ignored
        +
        Returns:
        the updated path
        +
      • +
      + + + +
        +
      • +

        getPrefixLength

        +
        public static int getPrefixLength(String filename)
        +
        Returns the length of the filename prefix, such as C:/ or ~/. +

        + This method will handle a file in either Unix or Windows format. +

        + The prefix length includes the first slash in the full filename + if applicable. Thus, it is possible that the length returned is greater + than the length of the input string. +

        + Windows:
        + a\b\c.txt           --> ""          --> relative
        + \a\b\c.txt          --> "\"         --> current drive absolute
        + C:a\b\c.txt         --> "C:"        --> drive relative
        + C:\a\b\c.txt        --> "C:\"       --> absolute
        + \\server\a\b\c.txt  --> "\\server\" --> UNC
        + \\\a\b\c.txt        -->  error, length = -1
        +
        + Unix:
        + a/b/c.txt           --> ""          --> relative
        + /a/b/c.txt          --> "/"         --> absolute
        + ~/a/b/c.txt         --> "~/"        --> current user
        + ~                   --> "~/"        --> current user (slash added)
        + ~user/a/b/c.txt     --> "~user/"    --> named user
        + ~user               --> "~user/"    --> named user (slash added)
        + //server/a/b/c.txt  --> "//server/"
        + ///a/b/c.txt        --> error, length = -1
        + 
        +

        + The output will be the same irrespective of the machine that the code is running on. + ie. both Unix and Windows prefixes are matched regardless. + + Note that a leading // (or \\) is used to indicate a UNC name on Windows. + These must be followed by a server name, so double-slashes are not collapsed + to a single slash at the start of the filename.

        +
        Parameters:
        filename - the filename to find the prefix in, null returns -1
        +
        Returns:
        the length of the prefix, -1 if invalid or null
        +
      • +
      + + + +
        +
      • +

        indexOfLastSeparator

        +
        public static int indexOfLastSeparator(String filename)
        +
        Returns the index of the last directory separator character. +

        + This method will handle a file in either Unix or Windows format. + The position of the last forward or backslash is returned. +

        + The output will be the same irrespective of the machine that the code is running on.

        +
        Parameters:
        filename - the filename to find the last path separator in, null returns -1
        +
        Returns:
        the index of the last separator character, or -1 if there + is no such character
        +
      • +
      + + + +
        +
      • +

        indexOfExtension

        +
        public static int indexOfExtension(String filename)
        +
        Returns the index of the last extension separator character, which is a dot. +

        + This method also checks that there is no directory separator after the last dot. To do this it uses + indexOfLastSeparator(String) which will handle a file in either Unix or Windows format. +

        +

        + The output will be the same irrespective of the machine that the code is running on. +

        +
        Parameters:
        filename - the filename to find the last extension separator in, null returns -1
        +
        Returns:
        the index of the last extension separator character, or -1 if there is no such character
        +
      • +
      + + + +
        +
      • +

        getPrefix

        +
        public static String getPrefix(String filename)
        +
        Gets the prefix from a full filename, such as C:/ + or ~/. +

        + This method will handle a file in either Unix or Windows format. + The prefix includes the first slash in the full filename where applicable. +

        + Windows:
        + a\b\c.txt           --> ""          --> relative
        + \a\b\c.txt          --> "\"         --> current drive absolute
        + C:a\b\c.txt         --> "C:"        --> drive relative
        + C:\a\b\c.txt        --> "C:\"       --> absolute
        + \\server\a\b\c.txt  --> "\\server\" --> UNC
        +
        + Unix:
        + a/b/c.txt           --> ""          --> relative
        + /a/b/c.txt          --> "/"         --> absolute
        + ~/a/b/c.txt         --> "~/"        --> current user
        + ~                   --> "~/"        --> current user (slash added)
        + ~user/a/b/c.txt     --> "~user/"    --> named user
        + ~user               --> "~user/"    --> named user (slash added)
        + 
        +

        + The output will be the same irrespective of the machine that the code is running on. + ie. both Unix and Windows prefixes are matched regardless.

        +
        Parameters:
        filename - the filename to query, null returns null
        +
        Returns:
        the prefix of the file, null if invalid. Null bytes inside string will be removed
        +
      • +
      + + + +
        +
      • +

        getPath

        +
        public static String getPath(String filename)
        +
        Gets the path from a full filename, which excludes the prefix. +

        + This method will handle a file in either Unix or Windows format. + The method is entirely text based, and returns the text before and + including the last forward or backslash. +

        + C:\a\b\c.txt --> a\b\
        + ~/a/b/c.txt  --> a/b/
        + a.txt        --> ""
        + a/b/c        --> a/b/
        + a/b/c/       --> a/b/c/
        + 
        +

        + The output will be the same irrespective of the machine that the code is running on. +

        + This method drops the prefix from the result. + See getFullPath(String) for the method that retains the prefix.

        +
        Parameters:
        filename - the filename to query, null returns null
        +
        Returns:
        the path of the file, an empty string if none exists, null if invalid. + Null bytes inside string will be removed
        +
      • +
      + + + +
        +
      • +

        getPathNoEndSeparator

        +
        public static String getPathNoEndSeparator(String filename)
        +
        Gets the path from a full filename, which excludes the prefix, and + also excluding the final directory separator. +

        + This method will handle a file in either Unix or Windows format. + The method is entirely text based, and returns the text before the + last forward or backslash. +

        + C:\a\b\c.txt --> a\b
        + ~/a/b/c.txt  --> a/b
        + a.txt        --> ""
        + a/b/c        --> a/b
        + a/b/c/       --> a/b/c
        + 
        +

        + The output will be the same irrespective of the machine that the code is running on. +

        + This method drops the prefix from the result. + See getFullPathNoEndSeparator(String) for the method that retains the prefix.

        +
        Parameters:
        filename - the filename to query, null returns null
        +
        Returns:
        the path of the file, an empty string if none exists, null if invalid. + Null bytes inside string will be removed
        +
      • +
      + + + +
        +
      • +

        getFullPath

        +
        public static String getFullPath(String filename)
        +
        Gets the full path from a full filename, which is the prefix + path. +

        + This method will handle a file in either Unix or Windows format. + The method is entirely text based, and returns the text before and + including the last forward or backslash. +

        + C:\a\b\c.txt --> C:\a\b\
        + ~/a/b/c.txt  --> ~/a/b/
        + a.txt        --> ""
        + a/b/c        --> a/b/
        + a/b/c/       --> a/b/c/
        + C:           --> C:
        + C:\          --> C:\
        + ~            --> ~/
        + ~/           --> ~/
        + ~user        --> ~user/
        + ~user/       --> ~user/
        + 
        +

        + The output will be the same irrespective of the machine that the code is running on.

        +
        Parameters:
        filename - the filename to query, null returns null
        +
        Returns:
        the path of the file, an empty string if none exists, null if invalid
        +
      • +
      + + + +
        +
      • +

        getFullPathNoEndSeparator

        +
        public static String getFullPathNoEndSeparator(String filename)
        +
        Gets the full path from a full filename, which is the prefix + path, + and also excluding the final directory separator. +

        + This method will handle a file in either Unix or Windows format. + The method is entirely text based, and returns the text before the + last forward or backslash. +

        + C:\a\b\c.txt --> C:\a\b
        + ~/a/b/c.txt  --> ~/a/b
        + a.txt        --> ""
        + a/b/c        --> a/b
        + a/b/c/       --> a/b/c
        + C:           --> C:
        + C:\          --> C:\
        + ~            --> ~
        + ~/           --> ~
        + ~user        --> ~user
        + ~user/       --> ~user
        + 
        +

        + The output will be the same irrespective of the machine that the code is running on.

        +
        Parameters:
        filename - the filename to query, null returns null
        +
        Returns:
        the path of the file, an empty string if none exists, null if invalid
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public static String getName(String filename)
        +
        Gets the name minus the path from a full filename. +

        + This method will handle a file in either Unix or Windows format. + The text after the last forward or backslash is returned. +

        + a/b/c.txt --> c.txt
        + a.txt     --> a.txt
        + a/b/c     --> c
        + a/b/c/    --> ""
        + 
        +

        + The output will be the same irrespective of the machine that the code is running on.

        +
        Parameters:
        filename - the filename to query, null returns null
        +
        Returns:
        the name of the file without the path, or an empty string if none exists. + Null bytes inside string will be removed
        +
      • +
      + + + +
        +
      • +

        getBaseName

        +
        public static String getBaseName(String filename)
        +
        Gets the base name, minus the full path and extension, from a full filename. +

        + This method will handle a file in either Unix or Windows format. + The text after the last forward or backslash and before the last dot is returned. +

        + a/b/c.txt --> c
        + a.txt     --> a
        + a/b/c     --> c
        + a/b/c/    --> ""
        + 
        +

        + The output will be the same irrespective of the machine that the code is running on.

        +
        Parameters:
        filename - the filename to query, null returns null
        +
        Returns:
        the name of the file without the path, or an empty string if none exists. Null bytes inside string + will be removed
        +
      • +
      + + + +
        +
      • +

        getExtension

        +
        public static String getExtension(String filename)
        +
        Gets the extension of a filename. +

        + This method returns the textual part of the filename after the last dot. + There must be no directory separator after the dot. +

        + foo.txt      --> "txt"
        + a/b/c.jpg    --> "jpg"
        + a/b.txt/c    --> ""
        + a/b/c        --> ""
        + 
        +

        + The output will be the same irrespective of the machine that the code is running on.

        +
        Parameters:
        filename - the filename to retrieve the extension of.
        +
        Returns:
        the extension of the file or an empty string if none exists or null + if the filename is null.
        +
      • +
      + + + +
        +
      • +

        removeExtension

        +
        public static String removeExtension(String filename)
        +
        Removes the extension from a filename. +

        + This method returns the textual part of the filename before the last dot. + There must be no directory separator after the dot. +

        + foo.txt    --> foo
        + a\b\c.jpg  --> a\b\c
        + a\b\c      --> a\b\c
        + a.b\c      --> a.b\c
        + 
        +

        + The output will be the same irrespective of the machine that the code is running on.

        +
        Parameters:
        filename - the filename to query, null returns null
        +
        Returns:
        the filename minus the extension
        +
      • +
      + + + +
        +
      • +

        equals

        +
        public static boolean equals(String filename1,
        +             String filename2)
        +
        Checks whether two filenames are equal exactly. +

        + No processing is performed on the filenames other than comparison, + thus this is merely a null-safe case-sensitive equals.

        +
        Parameters:
        filename1 - the first filename to query, may be null
        filename2 - the second filename to query, may be null
        +
        Returns:
        true if the filenames are equal, null equals null
        See Also:
        IOCase.SENSITIVE
        +
      • +
      + + + +
        +
      • +

        equalsOnSystem

        +
        public static boolean equalsOnSystem(String filename1,
        +                     String filename2)
        +
        Checks whether two filenames are equal using the case rules of the system. +

        + No processing is performed on the filenames other than comparison. + The check is case-sensitive on Unix and case-insensitive on Windows.

        +
        Parameters:
        filename1 - the first filename to query, may be null
        filename2 - the second filename to query, may be null
        +
        Returns:
        true if the filenames are equal, null equals null
        See Also:
        IOCase.SYSTEM
        +
      • +
      + + + +
        +
      • +

        equalsNormalized

        +
        public static boolean equalsNormalized(String filename1,
        +                       String filename2)
        +
        Checks whether two filenames are equal after both have been normalized. +

        + Both filenames are first passed to normalize(String). + The check is then performed in a case-sensitive manner.

        +
        Parameters:
        filename1 - the first filename to query, may be null
        filename2 - the second filename to query, may be null
        +
        Returns:
        true if the filenames are equal, null equals null
        See Also:
        IOCase.SENSITIVE
        +
      • +
      + + + +
        +
      • +

        equalsNormalizedOnSystem

        +
        public static boolean equalsNormalizedOnSystem(String filename1,
        +                               String filename2)
        +
        Checks whether two filenames are equal after both have been normalized + and using the case rules of the system. +

        + Both filenames are first passed to normalize(String). + The check is then performed case-sensitive on Unix and + case-insensitive on Windows.

        +
        Parameters:
        filename1 - the first filename to query, may be null
        filename2 - the second filename to query, may be null
        +
        Returns:
        true if the filenames are equal, null equals null
        See Also:
        IOCase.SYSTEM
        +
      • +
      + + + +
        +
      • +

        equals

        +
        public static boolean equals(String filename1,
        +             String filename2,
        +             boolean normalized,
        +             IOCase caseSensitivity)
        +
        Checks whether two filenames are equal, optionally normalizing and providing + control over the case-sensitivity.
        +
        Parameters:
        filename1 - the first filename to query, may be null
        filename2 - the second filename to query, may be null
        normalized - whether to normalize the filenames
        caseSensitivity - what case sensitivity rule to use, null means case-sensitive
        +
        Returns:
        true if the filenames are equal, null equals null
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        isExtension

        +
        public static boolean isExtension(String filename,
        +                  String extension)
        +
        Checks whether the extension of the filename is that specified. +

        + This method obtains the extension as the textual part of the filename + after the last dot. There must be no directory separator after the dot. + The extension check is case-sensitive on all platforms.

        +
        Parameters:
        filename - the filename to query, null returns false
        extension - the extension to check for, null or empty checks for no extension
        +
        Returns:
        true if the filename has the specified extension
        +
        Throws:
        +
        IllegalArgumentException - if the supplied filename contains null bytes
        +
      • +
      + + + +
        +
      • +

        isExtension

        +
        public static boolean isExtension(String filename,
        +                  String[] extensions)
        +
        Checks whether the extension of the filename is one of those specified. +

        + This method obtains the extension as the textual part of the filename + after the last dot. There must be no directory separator after the dot. + The extension check is case-sensitive on all platforms.

        +
        Parameters:
        filename - the filename to query, null returns false
        extensions - the extensions to check for, null checks for no extension
        +
        Returns:
        true if the filename is one of the extensions
        +
        Throws:
        +
        IllegalArgumentException - if the supplied filename contains null bytes
        +
      • +
      + + + +
        +
      • +

        isExtension

        +
        public static boolean isExtension(String filename,
        +                  Collection<String> extensions)
        +
        Checks whether the extension of the filename is one of those specified. +

        + This method obtains the extension as the textual part of the filename + after the last dot. There must be no directory separator after the dot. + The extension check is case-sensitive on all platforms.

        +
        Parameters:
        filename - the filename to query, null returns false
        extensions - the extensions to check for, null checks for no extension
        +
        Returns:
        true if the filename is one of the extensions
        +
        Throws:
        +
        IllegalArgumentException - if the supplied filename contains null bytes
        +
      • +
      + + + +
        +
      • +

        wildcardMatch

        +
        public static boolean wildcardMatch(String filename,
        +                    String wildcardMatcher)
        +
        Checks a filename to see if it matches the specified wildcard matcher, + always testing case-sensitive. +

        + The wildcard matcher uses the characters '?' and '*' to represent a + single or multiple (zero or more) wildcard characters. + This is the same as often found on Dos/Unix command lines. + The check is case-sensitive always. +

        + wildcardMatch("c.txt", "*.txt")      --> true
        + wildcardMatch("c.txt", "*.jpg")      --> false
        + wildcardMatch("a/b/c.txt", "a/b/*")  --> true
        + wildcardMatch("c.txt", "*.???")      --> true
        + wildcardMatch("c.txt", "*.????")     --> false
        + 
        + N.B. the sequence "*?" does not work properly at present in match strings.
        +
        Parameters:
        filename - the filename to match on
        wildcardMatcher - the wildcard string to match against
        +
        Returns:
        true if the filename matches the wilcard string
        See Also:
        IOCase.SENSITIVE
        +
      • +
      + + + +
        +
      • +

        wildcardMatchOnSystem

        +
        public static boolean wildcardMatchOnSystem(String filename,
        +                            String wildcardMatcher)
        +
        Checks a filename to see if it matches the specified wildcard matcher + using the case rules of the system. +

        + The wildcard matcher uses the characters '?' and '*' to represent a + single or multiple (zero or more) wildcard characters. + This is the same as often found on Dos/Unix command lines. + The check is case-sensitive on Unix and case-insensitive on Windows. +

        + wildcardMatch("c.txt", "*.txt")      --> true
        + wildcardMatch("c.txt", "*.jpg")      --> false
        + wildcardMatch("a/b/c.txt", "a/b/*")  --> true
        + wildcardMatch("c.txt", "*.???")      --> true
        + wildcardMatch("c.txt", "*.????")     --> false
        + 
        + N.B. the sequence "*?" does not work properly at present in match strings.
        +
        Parameters:
        filename - the filename to match on
        wildcardMatcher - the wildcard string to match against
        +
        Returns:
        true if the filename matches the wilcard string
        See Also:
        IOCase.SYSTEM
        +
      • +
      + + + +
        +
      • +

        wildcardMatch

        +
        public static boolean wildcardMatch(String filename,
        +                    String wildcardMatcher,
        +                    IOCase caseSensitivity)
        +
        Checks a filename to see if it matches the specified wildcard matcher + allowing control over case-sensitivity. +

        + The wildcard matcher uses the characters '?' and '*' to represent a + single or multiple (zero or more) wildcard characters. + N.B. the sequence "*?" does not work properly at present in match strings.

        +
        Parameters:
        filename - the filename to match on
        wildcardMatcher - the wildcard string to match against
        caseSensitivity - what case sensitivity rule to use, null means case-sensitive
        +
        Returns:
        true if the filename matches the wilcard string
        Since:
        +
        1.3
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/HexDump.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/HexDump.html new file mode 100644 index 0000000..4a7f244 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/HexDump.html @@ -0,0 +1,340 @@ + + + + + +HexDump (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class HexDump

+
+
+ +
+
    +
  • +
    +
    +
    public class HexDump
    +extends Object
    +
    Dumps data in hexadecimal format. +

    + Provides a single function to take an array of bytes and display it + in hexadecimal form. +

    + Origin of code: POI.

    +
    Version:
    +
    $Id: HexDump.java 1471767 2013-04-24 23:24:19Z sebb $
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static StringEOL +
      The line-separator (initializes to "line.separator" system property.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      HexDump() +
      Instances should NOT be constructed in standard programming.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        EOL

        +
        public static final String EOL
        +
        The line-separator (initializes to "line.separator" system property.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        HexDump

        +
        public HexDump()
        +
        Instances should NOT be constructed in standard programming.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        dump

        +
        public static void dump(byte[] data,
        +        long offset,
        +        OutputStream stream,
        +        int index)
        +                 throws IOException,
        +                        ArrayIndexOutOfBoundsException,
        +                        IllegalArgumentException
        +
        Dump an array of bytes to an OutputStream. The output is formatted + for human inspection, with a hexadecimal offset followed by the + hexadecimal values of the next 16 bytes of data and the printable ASCII + characters (if any) that those bytes represent printed per each line + of output. +

        + The offset argument specifies the start offset of the data array + within a larger entity like a file or an incoming stream. For example, + if the data array contains the third kibibyte of a file, then the + offset argument should be set to 2048. The offset value printed + at the beginning of each line indicates where in that larger entity + the first byte on that line is located. +

        + All bytes between the given index (inclusive) and the end of the + data array are dumped.

        +
        Parameters:
        data - the byte array to be dumped
        offset - offset of the byte array within a larger entity
        stream - the OutputStream to which the data is to be + written
        index - initial index into the byte array
        +
        Throws:
        +
        IOException - is thrown if anything goes wrong writing + the data to stream
        +
        ArrayIndexOutOfBoundsException - if the index is + outside the data array's bounds
        +
        IllegalArgumentException - if the output stream is null
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/IOCase.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/IOCase.html new file mode 100644 index 0000000..8652709 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/IOCase.html @@ -0,0 +1,597 @@ + + + + + +IOCase (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Enum IOCase

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparable<IOCase>
    +
    +
    +
    +
    public enum IOCase
    +extends Enum<IOCase>
    +implements Serializable
    +
    Enumeration of IO case sensitivity. +

    + Different filing systems have different rules for case-sensitivity. + Windows is case-insensitive, Unix is case-sensitive. +

    + This class captures that difference, providing an enumeration to + control how filename comparisons should be performed. It also provides + methods that use the enumeration to perform comparisons. +

    + Wherever possible, you should use the check methods in this + class to compare filenames.

    +
    Since:
    +
    1.3
    +
    Version:
    +
    $Id: IOCase.java 1483915 2013-05-17 17:02:35Z sebb $
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Summary

      + + + + + + + + + + + + + + +
      Enum Constants 
      Enum Constant and Description
      INSENSITIVE +
      The constant for case insensitive regardless of operating system.
      +
      SENSITIVE +
      The constant for case sensitive regardless of operating system.
      +
      SYSTEM +
      The constant for case sensitivity determined by the current operating system.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Enum Constant Detail

      + + + +
        +
      • +

        SENSITIVE

        +
        public static final IOCase SENSITIVE
        +
        The constant for case sensitive regardless of operating system.
        +
      • +
      + + + +
        +
      • +

        INSENSITIVE

        +
        public static final IOCase INSENSITIVE
        +
        The constant for case insensitive regardless of operating system.
        +
      • +
      + + + +
        +
      • +

        SYSTEM

        +
        public static final IOCase SYSTEM
        +
        The constant for case sensitivity determined by the current operating system. + Windows is case-insensitive when comparing filenames, Unix is case-sensitive. +

        + Note: This only caters for Windows and Unix. Other operating + systems (e.g. OSX and OpenVMS) are treated as case sensitive if they use the + Unix file separator and case-insensitive if they use the Windows file separator + (see File.separatorChar). +

        + If you derialize this constant of Windows, and deserialize on Unix, or vice + versa, then the value of the case-sensitivity flag will change.

        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        values

        +
        public static IOCase[] values()
        +
        Returns an array containing the constants of this enum type, in +the order they are declared. This method may be used to iterate +over the constants as follows: +
        +for (IOCase c : IOCase.values())
        +    System.out.println(c);
        +
        +
        Returns:
        an array containing the constants of this enum type, in the order they are declared
        +
      • +
      + + + +
        +
      • +

        valueOf

        +
        public static IOCase valueOf(String name)
        +
        Returns the enum constant of this type with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this type. (Extraneous whitespace characters are +not permitted.)
        +
        Parameters:
        name - the name of the enum constant to be returned.
        +
        Returns:
        the enum constant with the specified name
        +
        Throws:
        +
        IllegalArgumentException - if this enum type has no constant with the specified name
        +
        NullPointerException - if the argument is null
        +
      • +
      + + + +
        +
      • +

        forName

        +
        public static IOCase forName(String name)
        +
        Factory method to create an IOCase from a name.
        +
        Parameters:
        name - the name to find
        +
        Returns:
        the IOCase object
        +
        Throws:
        +
        IllegalArgumentException - if the name is invalid
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public String getName()
        +
        Gets the name of the constant.
        +
        Returns:
        the name of the constant
        +
      • +
      + + + +
        +
      • +

        isCaseSensitive

        +
        public boolean isCaseSensitive()
        +
        Does the object represent case sensitive comparison.
        +
        Returns:
        true if case sensitive
        +
      • +
      + + + +
        +
      • +

        checkCompareTo

        +
        public int checkCompareTo(String str1,
        +                 String str2)
        +
        Compares two strings using the case-sensitivity rule. +

        + This method mimics String.compareTo(java.lang.String) but takes case-sensitivity + into account.

        +
        Parameters:
        str1 - the first string to compare, not null
        str2 - the second string to compare, not null
        +
        Returns:
        true if equal using the case rules
        +
        Throws:
        +
        NullPointerException - if either string is null
        +
      • +
      + + + +
        +
      • +

        checkEquals

        +
        public boolean checkEquals(String str1,
        +                  String str2)
        +
        Compares two strings using the case-sensitivity rule. +

        + This method mimics String.equals(java.lang.Object) but takes case-sensitivity + into account.

        +
        Parameters:
        str1 - the first string to compare, not null
        str2 - the second string to compare, not null
        +
        Returns:
        true if equal using the case rules
        +
        Throws:
        +
        NullPointerException - if either string is null
        +
      • +
      + + + +
        +
      • +

        checkStartsWith

        +
        public boolean checkStartsWith(String str,
        +                      String start)
        +
        Checks if one string starts with another using the case-sensitivity rule. +

        + This method mimics String.startsWith(String) but takes case-sensitivity + into account.

        +
        Parameters:
        str - the string to check, not null
        start - the start to compare against, not null
        +
        Returns:
        true if equal using the case rules
        +
        Throws:
        +
        NullPointerException - if either string is null
        +
      • +
      + + + +
        +
      • +

        checkEndsWith

        +
        public boolean checkEndsWith(String str,
        +                    String end)
        +
        Checks if one string ends with another using the case-sensitivity rule. +

        + This method mimics String.endsWith(java.lang.String) but takes case-sensitivity + into account.

        +
        Parameters:
        str - the string to check, not null
        end - the end to compare against, not null
        +
        Returns:
        true if equal using the case rules
        +
        Throws:
        +
        NullPointerException - if either string is null
        +
      • +
      + + + +
        +
      • +

        checkIndexOf

        +
        public int checkIndexOf(String str,
        +               int strStartIndex,
        +               String search)
        +
        Checks if one string contains another starting at a specific index using the + case-sensitivity rule. +

        + This method mimics parts of String.indexOf(String, int) + but takes case-sensitivity into account.

        +
        Parameters:
        str - the string to check, not null
        strStartIndex - the index to start at in str
        search - the start to search for, not null
        +
        Returns:
        the first index of the search String, + -1 if no match or null string input
        +
        Throws:
        +
        NullPointerException - if either string is null
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        checkRegionMatches

        +
        public boolean checkRegionMatches(String str,
        +                         int strStartIndex,
        +                         String search)
        +
        Checks if one string contains another at a specific index using the case-sensitivity rule. +

        + This method mimics parts of String.regionMatches(boolean, int, String, int, int) + but takes case-sensitivity into account.

        +
        Parameters:
        str - the string to check, not null
        strStartIndex - the index to start at in str
        search - the start to search for, not null
        +
        Returns:
        true if equal using the case rules
        +
        Throws:
        +
        NullPointerException - if either string is null
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Gets a string describing the sensitivity.
        +
        +
        Overrides:
        +
        toString in class Enum<IOCase>
        +
        Returns:
        a string describing the sensitivity
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/IOExceptionWithCause.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/IOExceptionWithCause.html new file mode 100644 index 0000000..e36b528 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/IOExceptionWithCause.html @@ -0,0 +1,302 @@ + + + + + +IOExceptionWithCause (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class IOExceptionWithCause

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        IOExceptionWithCause

        +
        public IOExceptionWithCause(String message,
        +                    Throwable cause)
        +
        Deprecated. 
        +
        Constructs a new instance with the given message and cause. +

        + As specified in Throwable, the message in the given cause is not used in this instance's + message. +

        +
        Parameters:
        message - the message (see Throwable.getMessage())
        cause - the cause (see Throwable.getCause()). A null value is allowed.
        +
      • +
      + + + +
        +
      • +

        IOExceptionWithCause

        +
        public IOExceptionWithCause(Throwable cause)
        +
        Deprecated. 
        +
        Constructs a new instance with the given cause. +

        + The message is set to cause==null ? null : cause.toString(), which by default contains the class + and message of cause. This constructor is useful for call sites that just wrap another throwable. +

        +
        Parameters:
        cause - the cause (see Throwable.getCause()). A null value is allowed.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/IOUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/IOUtils.html new file mode 100644 index 0000000..0d1b667 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/IOUtils.html @@ -0,0 +1,4242 @@ + + + + + +IOUtils (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class IOUtils

+
+
+ +
+
    +
  • +
    +
    +
    public class IOUtils
    +extends Object
    +
    General IO stream manipulation utilities. +

    + This class provides static utility methods for input/output operations. +

      +
    • closeQuietly - these methods close a stream ignoring nulls and exceptions +
    • toXxx/read - these methods read data from a stream +
    • write - these methods write data to a stream +
    • copy - these methods copy all the data from one stream to another +
    • contentEquals - these methods compare the content of two streams +
    +

    + The byte-to-char methods and char-to-byte methods involve a conversion step. + Two methods are provided in each case, one that uses the platform default + encoding and the other which allows you to specify an encoding. You are + encouraged to always specify an encoding because relying on the platform + default can lead to unexpected results, for example when moving from + development to production. +

    + All the methods in this class that read a stream are buffered internally. + This means that there is no cause to use a BufferedInputStream + or BufferedReader. The default buffer size of 4K has been shown + to be efficient in tests. +

    + The various copy methods all delegate the actual copying to one of the following methods: +

    + For example, copy(InputStream, OutputStream) calls copyLarge(InputStream, OutputStream) + which calls copy(InputStream, OutputStream, int) which creates the buffer and calls + copyLarge(InputStream, OutputStream, byte[]). +

    + Applications can re-use buffers by using the underlying methods directly. + This may improve performance for applications that need to do a lot of copying. +

    + Wherever possible, the methods in this class do not flush or close + the stream. This is to avoid making non-portable assumptions about the + streams' origin and further use. Thus the caller is still responsible for + closing streams after use. +

    + Origin of code: Excalibur.

    +
    Version:
    +
    $Id: IOUtils.java 1722156 2015-12-29 15:40:07Z ggregory $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        EOF

        +
        public static final int EOF
        +
        Represents the end-of-file (or stream).
        +
        Since:
        +
        2.5 (made public)
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        DIR_SEPARATOR_UNIX

        +
        public static final char DIR_SEPARATOR_UNIX
        +
        The Unix directory separator character.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        DIR_SEPARATOR_WINDOWS

        +
        public static final char DIR_SEPARATOR_WINDOWS
        +
        The Windows directory separator character.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        DIR_SEPARATOR

        +
        public static final char DIR_SEPARATOR
        +
        The system directory separator character.
        +
      • +
      + + + +
        +
      • +

        LINE_SEPARATOR_UNIX

        +
        public static final String LINE_SEPARATOR_UNIX
        +
        The Unix line separator string.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        LINE_SEPARATOR_WINDOWS

        +
        public static final String LINE_SEPARATOR_WINDOWS
        +
        The Windows line separator string.
        +
        See Also:
        Constant Field Values
        +
      • +
      + + + +
        +
      • +

        LINE_SEPARATOR

        +
        public static final String LINE_SEPARATOR
        +
        The system line separator string.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        IOUtils

        +
        public IOUtils()
        +
        Instances should NOT be constructed in standard programming.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        close

        +
        public static void close(URLConnection conn)
        +
        Closes a URLConnection.
        +
        Parameters:
        conn - the connection to close.
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        closeQuietly

        +
        public static void closeQuietly(Reader input)
        +
        Closes an Reader unconditionally. +

        + Equivalent to Reader.close(), except any exceptions will be ignored. + This is typically used in finally blocks. +

        + Example code: +

        +   char[] data = new char[1024];
        +   Reader in = null;
        +   try {
        +       in = new FileReader("foo.txt");
        +       in.read(data);
        +       in.close(); //close errors are handled
        +   } catch (Exception e) {
        +       // error handling
        +   } finally {
        +       IOUtils.closeQuietly(in);
        +   }
        + 
        +
        Parameters:
        input - the Reader to close, may be null or already closed
        +
      • +
      + + + +
        +
      • +

        closeQuietly

        +
        public static void closeQuietly(Writer output)
        +
        Closes an Writer unconditionally. +

        + Equivalent to Writer.close(), except any exceptions will be ignored. + This is typically used in finally blocks. +

        + Example code: +

        +   Writer out = null;
        +   try {
        +       out = new StringWriter();
        +       out.write("Hello World");
        +       out.close(); //close errors are handled
        +   } catch (Exception e) {
        +       // error handling
        +   } finally {
        +       IOUtils.closeQuietly(out);
        +   }
        + 
        +
        Parameters:
        output - the Writer to close, may be null or already closed
        +
      • +
      + + + +
        +
      • +

        closeQuietly

        +
        public static void closeQuietly(InputStream input)
        +
        Closes an InputStream unconditionally. +

        + Equivalent to InputStream.close(), except any exceptions will be ignored. + This is typically used in finally blocks. +

        + Example code: +

        +   byte[] data = new byte[1024];
        +   InputStream in = null;
        +   try {
        +       in = new FileInputStream("foo.txt");
        +       in.read(data);
        +       in.close(); //close errors are handled
        +   } catch (Exception e) {
        +       // error handling
        +   } finally {
        +       IOUtils.closeQuietly(in);
        +   }
        + 
        +
        Parameters:
        input - the InputStream to close, may be null or already closed
        +
      • +
      + + + +
        +
      • +

        closeQuietly

        +
        public static void closeQuietly(OutputStream output)
        +
        Closes an OutputStream unconditionally. +

        + Equivalent to OutputStream.close(), except any exceptions will be ignored. + This is typically used in finally blocks. +

        + Example code: +

        + byte[] data = "Hello, World".getBytes();
        +
        + OutputStream out = null;
        + try {
        +     out = new FileOutputStream("foo.txt");
        +     out.write(data);
        +     out.close(); //close errors are handled
        + } catch (IOException e) {
        +     // error handling
        + } finally {
        +     IOUtils.closeQuietly(out);
        + }
        + 
        +
        Parameters:
        output - the OutputStream to close, may be null or already closed
        +
      • +
      + + + +
        +
      • +

        closeQuietly

        +
        public static void closeQuietly(Closeable closeable)
        +
        Closes a Closeable unconditionally. +

        + Equivalent to Closeable.close(), except any exceptions will be ignored. This is typically used in + finally blocks. +

        + Example code: +

        +
        + Closeable closeable = null;
        + try {
        +     closeable = new FileReader("foo.txt");
        +     // process closeable
        +     closeable.close();
        + } catch (Exception e) {
        +     // error handling
        + } finally {
        +     IOUtils.closeQuietly(closeable);
        + }
        + 
        +

        + Closing all streams: +

        +
        + try {
        +     return IOUtils.copy(inputStream, outputStream);
        + } finally {
        +     IOUtils.closeQuietly(inputStream);
        +     IOUtils.closeQuietly(outputStream);
        + }
        + 
        +
        Parameters:
        closeable - the objects to close, may be null or already closed
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        closeQuietly

        +
        public static void closeQuietly(Closeable... closeables)
        +
        Closes a Closeable unconditionally. +

        + Equivalent to Closeable.close(), except any exceptions will be ignored. +

        + This is typically used in finally blocks to ensure that the closeable is closed + even if an Exception was thrown before the normal close statement was reached. +
        + It should not be used to replace the close statement(s) + which should be present for the non-exceptional case. +
        + It is only intended to simplify tidying up where normal processing has already failed + and reporting close failure as well is not necessary or useful. +

        + Example code: +

        +
        + Closeable closeable = null;
        + try {
        +     closeable = new FileReader("foo.txt");
        +     // processing using the closeable; may throw an Exception
        +     closeable.close(); // Normal close - exceptions not ignored
        + } catch (Exception e) {
        +     // error handling
        + } finally {
        +     IOUtils.closeQuietly(closeable); // In case normal close was skipped due to Exception
        + }
        + 
        +

        + Closing all streams: +
        +

        + try {
        +     return IOUtils.copy(inputStream, outputStream);
        + } finally {
        +     IOUtils.closeQuietly(inputStream, outputStream);
        + }
        + 
        +
        Parameters:
        closeables - the objects to close, may be null or already closed
        Since:
        +
        2.5
        +
        See Also:
        closeQuietly(Closeable)
        +
      • +
      + + + +
        +
      • +

        closeQuietly

        +
        public static void closeQuietly(Socket sock)
        +
        Closes a Socket unconditionally. +

        + Equivalent to Socket.close(), except any exceptions will be ignored. + This is typically used in finally blocks. +

        + Example code: +

        +   Socket socket = null;
        +   try {
        +       socket = new Socket("http://www.foo.com/", 80);
        +       // process socket
        +       socket.close();
        +   } catch (Exception e) {
        +       // error handling
        +   } finally {
        +       IOUtils.closeQuietly(socket);
        +   }
        + 
        +
        Parameters:
        sock - the Socket to close, may be null or already closed
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        closeQuietly

        +
        public static void closeQuietly(Selector selector)
        +
        Closes a Selector unconditionally. +

        + Equivalent to Selector.close(), except any exceptions will be ignored. + This is typically used in finally blocks. +

        + Example code: +

        +   Selector selector = null;
        +   try {
        +       selector = Selector.open();
        +       // process socket
        +
        +   } catch (Exception e) {
        +       // error handling
        +   } finally {
        +       IOUtils.closeQuietly(selector);
        +   }
        + 
        +
        Parameters:
        selector - the Selector to close, may be null or already closed
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        closeQuietly

        +
        public static void closeQuietly(ServerSocket sock)
        +
        Closes a ServerSocket unconditionally. +

        + Equivalent to ServerSocket.close(), except any exceptions will be ignored. + This is typically used in finally blocks. +

        + Example code: +

        +   ServerSocket socket = null;
        +   try {
        +       socket = new ServerSocket();
        +       // process socket
        +       socket.close();
        +   } catch (Exception e) {
        +       // error handling
        +   } finally {
        +       IOUtils.closeQuietly(socket);
        +   }
        + 
        +
        Parameters:
        sock - the ServerSocket to close, may be null or already closed
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        toBufferedInputStream

        +
        public static InputStream toBufferedInputStream(InputStream input)
        +                                         throws IOException
        +
        Fetches entire contents of an InputStream and represent + same data as result InputStream. +

        + This method is useful where, +

          +
        • Source InputStream is slow.
        • +
        • It has network resources associated, so we cannot keep it open for + long time.
        • +
        • It has network timeout associated.
        • +
        + It can be used in favor of toByteArray(InputStream), since it + avoids unnecessary allocation and copy of byte[].
        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.
        +
        Parameters:
        input - Stream to be fully buffered.
        +
        Returns:
        A fully buffered stream.
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        toBufferedInputStream

        +
        public static InputStream toBufferedInputStream(InputStream input,
        +                                int size)
        +                                         throws IOException
        +
        Fetches entire contents of an InputStream and represent + same data as result InputStream. +

        + This method is useful where, +

          +
        • Source InputStream is slow.
        • +
        • It has network resources associated, so we cannot keep it open for + long time.
        • +
        • It has network timeout associated.
        • +
        + It can be used in favor of toByteArray(InputStream), since it + avoids unnecessary allocation and copy of byte[].
        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.
        +
        Parameters:
        input - Stream to be fully buffered.
        size - the initial buffer size
        +
        Returns:
        A fully buffered stream.
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        toBufferedReader

        +
        public static BufferedReader toBufferedReader(Reader reader)
        +
        Returns the given reader if it is a BufferedReader, otherwise creates a BufferedReader from the given + reader.
        +
        Parameters:
        reader - the reader to wrap or return (not null)
        +
        Returns:
        the given reader or a new BufferedReader for the given reader
        +
        Throws:
        +
        NullPointerException - if the input parameter is null
        Since:
        +
        2.2
        +
        See Also:
        buffer(Reader)
        +
      • +
      + + + +
        +
      • +

        toBufferedReader

        +
        public static BufferedReader toBufferedReader(Reader reader,
        +                              int size)
        +
        Returns the given reader if it is a BufferedReader, otherwise creates a BufferedReader from the given + reader.
        +
        Parameters:
        reader - the reader to wrap or return (not null)
        size - the buffer size, if a new BufferedReader is created.
        +
        Returns:
        the given reader or a new BufferedReader for the given reader
        +
        Throws:
        +
        NullPointerException - if the input parameter is null
        Since:
        +
        2.5
        +
        See Also:
        buffer(Reader)
        +
      • +
      + + + +
        +
      • +

        buffer

        +
        public static BufferedReader buffer(Reader reader)
        +
        Returns the given reader if it is already a BufferedReader, otherwise creates a BufferedReader from + the given reader.
        +
        Parameters:
        reader - the reader to wrap or return (not null)
        +
        Returns:
        the given reader or a new BufferedReader for the given reader
        +
        Throws:
        +
        NullPointerException - if the input parameter is null
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        buffer

        +
        public static BufferedReader buffer(Reader reader,
        +                    int size)
        +
        Returns the given reader if it is already a BufferedReader, otherwise creates a BufferedReader from the + given reader.
        +
        Parameters:
        reader - the reader to wrap or return (not null)
        size - the buffer size, if a new BufferedReader is created.
        +
        Returns:
        the given reader or a new BufferedReader for the given reader
        +
        Throws:
        +
        NullPointerException - if the input parameter is null
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        buffer

        +
        public static BufferedWriter buffer(Writer writer)
        +
        Returns the given Writer if it is already a BufferedWriter, otherwise creates a BufferedWriter from the + given Writer.
        +
        Parameters:
        writer - the Writer to wrap or return (not null)
        +
        Returns:
        the given Writer or a new BufferedWriter for the given Writer
        +
        Throws:
        +
        NullPointerException - if the input parameter is null
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        buffer

        +
        public static BufferedWriter buffer(Writer writer,
        +                    int size)
        +
        Returns the given Writer if it is already a BufferedWriter, otherwise creates a BufferedWriter from the + given Writer.
        +
        Parameters:
        writer - the Writer to wrap or return (not null)
        size - the buffer size, if a new BufferedWriter is created.
        +
        Returns:
        the given Writer or a new BufferedWriter for the given Writer
        +
        Throws:
        +
        NullPointerException - if the input parameter is null
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        buffer

        +
        public static BufferedOutputStream buffer(OutputStream outputStream)
        +
        Returns the given OutputStream if it is already a BufferedOutputStream, otherwise creates a + BufferedOutputStream from the given OutputStream.
        +
        Parameters:
        outputStream - the OutputStream to wrap or return (not null)
        +
        Returns:
        the given OutputStream or a new BufferedOutputStream for the given OutputStream
        +
        Throws:
        +
        NullPointerException - if the input parameter is null
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        buffer

        +
        public static BufferedOutputStream buffer(OutputStream outputStream,
        +                          int size)
        +
        Returns the given OutputStream if it is already a BufferedOutputStream, otherwise creates a + BufferedOutputStream from the given OutputStream.
        +
        Parameters:
        outputStream - the OutputStream to wrap or return (not null)
        size - the buffer size, if a new BufferedOutputStream is created.
        +
        Returns:
        the given OutputStream or a new BufferedOutputStream for the given OutputStream
        +
        Throws:
        +
        NullPointerException - if the input parameter is null
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        buffer

        +
        public static BufferedInputStream buffer(InputStream inputStream)
        +
        Returns the given InputStream if it is already a BufferedInputStream, otherwise creates a + BufferedInputStream from the given InputStream.
        +
        Parameters:
        inputStream - the InputStream to wrap or return (not null)
        +
        Returns:
        the given InputStream or a new BufferedInputStream for the given InputStream
        +
        Throws:
        +
        NullPointerException - if the input parameter is null
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        buffer

        +
        public static BufferedInputStream buffer(InputStream inputStream,
        +                         int size)
        +
        Returns the given InputStream if it is already a BufferedInputStream, otherwise creates a + BufferedInputStream from the given InputStream.
        +
        Parameters:
        inputStream - the InputStream to wrap or return (not null)
        size - the buffer size, if a new BufferedInputStream is created.
        +
        Returns:
        the given InputStream or a new BufferedInputStream for the given InputStream
        +
        Throws:
        +
        NullPointerException - if the input parameter is null
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        toByteArray

        +
        public static byte[] toByteArray(InputStream input)
        +                          throws IOException
        +
        Gets the contents of an InputStream as a byte[]. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.

        +
        Parameters:
        input - the InputStream to read from
        +
        Returns:
        the requested byte array
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        toByteArray

        +
        public static byte[] toByteArray(InputStream input,
        +                 long size)
        +                          throws IOException
        +
        Gets contents of an InputStream as a byte[]. + Use this method instead of toByteArray(InputStream) + when InputStream size is known. + NOTE: the method checks that the length can safely be cast to an int without truncation + before using toByteArray(java.io.InputStream, int) to read into the byte array. + (Arrays can have no more than Integer.MAX_VALUE entries anyway)
        +
        Parameters:
        input - the InputStream to read from
        size - the size of InputStream
        +
        Returns:
        the requested byte array
        +
        Throws:
        +
        IOException - if an I/O error occurs or InputStream size differ from parameter + size
        +
        IllegalArgumentException - if size is less than zero or size is greater than Integer.MAX_VALUE
        Since:
        +
        2.1
        +
        See Also:
        toByteArray(java.io.InputStream, int)
        +
      • +
      + + + +
        +
      • +

        toByteArray

        +
        public static byte[] toByteArray(InputStream input,
        +                 int size)
        +                          throws IOException
        +
        Gets the contents of an InputStream as a byte[]. + Use this method instead of toByteArray(InputStream) + when InputStream size is known
        +
        Parameters:
        input - the InputStream to read from
        size - the size of InputStream
        +
        Returns:
        the requested byte array
        +
        Throws:
        +
        IOException - if an I/O error occurs or InputStream size differ from parameter + size
        +
        IllegalArgumentException - if size is less than zero
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        toByteArray

        +
        @Deprecated
        +public static byte[] toByteArray(Reader input)
        +                          throws IOException
        +
        Deprecated. 2.5 use toByteArray(Reader, Charset) instead
        +
        Gets the contents of a Reader as a byte[] + using the default character encoding of the platform. +

        + This method buffers the input internally, so there is no need to use a + BufferedReader.

        +
        Parameters:
        input - the Reader to read from
        +
        Returns:
        the requested byte array
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        toByteArray

        +
        public static byte[] toByteArray(Reader input,
        +                 Charset encoding)
        +                          throws IOException
        +
        Gets the contents of a Reader as a byte[] + using the specified character encoding. +

        + This method buffers the input internally, so there is no need to use a + BufferedReader.

        +
        Parameters:
        input - the Reader to read from
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the requested byte array
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        toByteArray

        +
        public static byte[] toByteArray(Reader input,
        +                 String encoding)
        +                          throws IOException
        +
        Gets the contents of a Reader as a byte[] + using the specified character encoding. +

        + Character encoding names can be found at + IANA. +

        + This method buffers the input internally, so there is no need to use a + BufferedReader.

        +
        Parameters:
        input - the Reader to read from
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the requested byte array
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the + encoding is not supported.
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        toByteArray

        +
        @Deprecated
        +public static byte[] toByteArray(String input)
        +                          throws IOException
        +
        Deprecated. 2.5 Use String.getBytes() instead
        +
        Gets the contents of a String as a byte[] + using the default character encoding of the platform. +

        + This is the same as String.getBytes().

        +
        Parameters:
        input - the String to convert
        +
        Returns:
        the requested byte array
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs (never occurs)
        +
      • +
      + + + +
        +
      • +

        toByteArray

        +
        public static byte[] toByteArray(URI uri)
        +                          throws IOException
        +
        Gets the contents of a URI as a byte[].
        +
        Parameters:
        uri - the URI to read
        +
        Returns:
        the requested byte array
        +
        Throws:
        +
        NullPointerException - if the uri is null
        +
        IOException - if an I/O exception occurs
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        toByteArray

        +
        public static byte[] toByteArray(URL url)
        +                          throws IOException
        +
        Gets the contents of a URL as a byte[].
        +
        Parameters:
        url - the URL to read
        +
        Returns:
        the requested byte array
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O exception occurs
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        toByteArray

        +
        public static byte[] toByteArray(URLConnection urlConn)
        +                          throws IOException
        +
        Gets the contents of a URLConnection as a byte[].
        +
        Parameters:
        urlConn - the URLConnection to read
        +
        Returns:
        the requested byte array
        +
        Throws:
        +
        NullPointerException - if the urlConn is null
        +
        IOException - if an I/O exception occurs
        Since:
        +
        2.4
        +
      • +
      + + + +
        +
      • +

        toCharArray

        +
        @Deprecated
        +public static char[] toCharArray(InputStream is)
        +                          throws IOException
        +
        Deprecated. 2.5 use toCharArray(InputStream, Charset) instead
        +
        Gets the contents of an InputStream as a character array + using the default character encoding of the platform. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.

        +
        Parameters:
        is - the InputStream to read from
        +
        Returns:
        the requested character array
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        toCharArray

        +
        public static char[] toCharArray(InputStream is,
        +                 Charset encoding)
        +                          throws IOException
        +
        Gets the contents of an InputStream as a character array + using the specified character encoding. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.

        +
        Parameters:
        is - the InputStream to read from
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the requested character array
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        toCharArray

        +
        public static char[] toCharArray(InputStream is,
        +                 String encoding)
        +                          throws IOException
        +
        Gets the contents of an InputStream as a character array + using the specified character encoding. +

        + Character encoding names can be found at + IANA. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.

        +
        Parameters:
        is - the InputStream to read from
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the requested character array
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the + encoding is not supported.
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        toCharArray

        +
        public static char[] toCharArray(Reader input)
        +                          throws IOException
        +
        Gets the contents of a Reader as a character array. +

        + This method buffers the input internally, so there is no need to use a + BufferedReader.

        +
        Parameters:
        input - the Reader to read from
        +
        Returns:
        the requested character array
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        toString

        +
        @Deprecated
        +public static String toString(InputStream input)
        +                       throws IOException
        +
        Deprecated. 2.5 use toString(InputStream, Charset) instead
        +
        Gets the contents of an InputStream as a String + using the default character encoding of the platform. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.

        +
        Parameters:
        input - the InputStream to read from
        +
        Returns:
        the requested String
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static String toString(InputStream input,
        +              Charset encoding)
        +                       throws IOException
        +
        Gets the contents of an InputStream as a String + using the specified character encoding. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream. +

        +
        Parameters:
        input - the InputStream to read from
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the requested String
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static String toString(InputStream input,
        +              String encoding)
        +                       throws IOException
        +
        Gets the contents of an InputStream as a String + using the specified character encoding. +

        + Character encoding names can be found at + IANA. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.

        +
        Parameters:
        input - the InputStream to read from
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the requested String
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the + encoding is not supported.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static String toString(Reader input)
        +                       throws IOException
        +
        Gets the contents of a Reader as a String. +

        + This method buffers the input internally, so there is no need to use a + BufferedReader.

        +
        Parameters:
        input - the Reader to read from
        +
        Returns:
        the requested String
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        toString

        +
        @Deprecated
        +public static String toString(URI uri)
        +                       throws IOException
        +
        Deprecated. 2.5 use toString(URI, Charset) instead
        +
        Gets the contents at the given URI.
        +
        Parameters:
        uri - The URI source.
        +
        Returns:
        The contents of the URL as a String.
        +
        Throws:
        +
        IOException - if an I/O exception occurs.
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static String toString(URI uri,
        +              Charset encoding)
        +                       throws IOException
        +
        Gets the contents at the given URI.
        +
        Parameters:
        uri - The URI source.
        encoding - The encoding name for the URL contents.
        +
        Returns:
        The contents of the URL as a String.
        +
        Throws:
        +
        IOException - if an I/O exception occurs.
        Since:
        +
        2.3.
        +
      • +
      + + + + + + + +
        +
      • +

        toString

        +
        @Deprecated
        +public static String toString(URL url)
        +                       throws IOException
        +
        Deprecated. 2.5 use toString(URL, Charset) instead
        +
        Gets the contents at the given URL.
        +
        Parameters:
        url - The URL source.
        +
        Returns:
        The contents of the URL as a String.
        +
        Throws:
        +
        IOException - if an I/O exception occurs.
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static String toString(URL url,
        +              Charset encoding)
        +                       throws IOException
        +
        Gets the contents at the given URL.
        +
        Parameters:
        url - The URL source.
        encoding - The encoding name for the URL contents.
        +
        Returns:
        The contents of the URL as a String.
        +
        Throws:
        +
        IOException - if an I/O exception occurs.
        Since:
        +
        2.3
        +
      • +
      + + + + + + + +
        +
      • +

        toString

        +
        @Deprecated
        +public static String toString(byte[] input)
        +                       throws IOException
        +
        Deprecated. 2.5 Use String.String(byte[]) instead
        +
        Gets the contents of a byte[] as a String + using the default character encoding of the platform.
        +
        Parameters:
        input - the byte array to read from
        +
        Returns:
        the requested String
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs (never occurs)
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public static String toString(byte[] input,
        +              String encoding)
        +                       throws IOException
        +
        Gets the contents of a byte[] as a String + using the specified character encoding. +

        + Character encoding names can be found at + IANA.

        +
        Parameters:
        input - the byte array to read from
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the requested String
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs (never occurs)
        +
      • +
      + + + +
        +
      • +

        readLines

        +
        @Deprecated
        +public static List<String> readLines(InputStream input)
        +                              throws IOException
        +
        Deprecated. 2.5 use readLines(InputStream, Charset) instead
        +
        Gets the contents of an InputStream as a list of Strings, + one entry per line, using the default character encoding of the platform. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.

        +
        Parameters:
        input - the InputStream to read from, not null
        +
        Returns:
        the list of Strings, never null
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        readLines

        +
        public static List<String> readLines(InputStream input,
        +                     Charset encoding)
        +                              throws IOException
        +
        Gets the contents of an InputStream as a list of Strings, + one entry per line, using the specified character encoding. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.

        +
        Parameters:
        input - the InputStream to read from, not null
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the list of Strings, never null
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        readLines

        +
        public static List<String> readLines(InputStream input,
        +                     String encoding)
        +                              throws IOException
        +
        Gets the contents of an InputStream as a list of Strings, + one entry per line, using the specified character encoding. +

        + Character encoding names can be found at + IANA. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.

        +
        Parameters:
        input - the InputStream to read from, not null
        encoding - the encoding to use, null means platform default
        +
        Returns:
        the list of Strings, never null
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the + encoding is not supported.
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        readLines

        +
        public static List<String> readLines(Reader input)
        +                              throws IOException
        +
        Gets the contents of a Reader as a list of Strings, + one entry per line. +

        + This method buffers the input internally, so there is no need to use a + BufferedReader.

        +
        Parameters:
        input - the Reader to read from, not null
        +
        Returns:
        the list of Strings, never null
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        lineIterator

        +
        public static LineIterator lineIterator(Reader reader)
        +
        Returns an Iterator for the lines in a Reader. +

        + LineIterator holds a reference to the open + Reader specified here. When you have finished with the + iterator you should close the reader to free internal resources. + This can be done by closing the reader directly, or by calling + LineIterator.close() or LineIterator.closeQuietly(LineIterator). +

        + The recommended usage pattern is: +

        + try {
        +   LineIterator it = IOUtils.lineIterator(reader);
        +   while (it.hasNext()) {
        +     String line = it.nextLine();
        +     /// do something with line
        +   }
        + } finally {
        +   IOUtils.closeQuietly(reader);
        + }
        + 
        +
        Parameters:
        reader - the Reader to read from, not null
        +
        Returns:
        an Iterator of the lines in the reader, never null
        +
        Throws:
        +
        IllegalArgumentException - if the reader is null
        Since:
        +
        1.2
        +
      • +
      + + + +
        +
      • +

        lineIterator

        +
        public static LineIterator lineIterator(InputStream input,
        +                        Charset encoding)
        +                                 throws IOException
        +
        Returns an Iterator for the lines in an InputStream, using + the character encoding specified (or default encoding if null). +

        + LineIterator holds a reference to the open + InputStream specified here. When you have finished with + the iterator you should close the stream to free internal resources. + This can be done by closing the stream directly, or by calling + LineIterator.close() or LineIterator.closeQuietly(LineIterator). +

        + The recommended usage pattern is: +

        + try {
        +   LineIterator it = IOUtils.lineIterator(stream, charset);
        +   while (it.hasNext()) {
        +     String line = it.nextLine();
        +     /// do something with line
        +   }
        + } finally {
        +   IOUtils.closeQuietly(stream);
        + }
        + 
        +
        Parameters:
        input - the InputStream to read from, not null
        encoding - the encoding to use, null means platform default
        +
        Returns:
        an Iterator of the lines in the reader, never null
        +
        Throws:
        +
        IllegalArgumentException - if the input is null
        +
        IOException - if an I/O error occurs, such as if the encoding is invalid
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        lineIterator

        +
        public static LineIterator lineIterator(InputStream input,
        +                        String encoding)
        +                                 throws IOException
        +
        Returns an Iterator for the lines in an InputStream, using + the character encoding specified (or default encoding if null). +

        + LineIterator holds a reference to the open + InputStream specified here. When you have finished with + the iterator you should close the stream to free internal resources. + This can be done by closing the stream directly, or by calling + LineIterator.close() or LineIterator.closeQuietly(LineIterator). +

        + The recommended usage pattern is: +

        + try {
        +   LineIterator it = IOUtils.lineIterator(stream, "UTF-8");
        +   while (it.hasNext()) {
        +     String line = it.nextLine();
        +     /// do something with line
        +   }
        + } finally {
        +   IOUtils.closeQuietly(stream);
        + }
        + 
        +
        Parameters:
        input - the InputStream to read from, not null
        encoding - the encoding to use, null means platform default
        +
        Returns:
        an Iterator of the lines in the reader, never null
        +
        Throws:
        +
        IllegalArgumentException - if the input is null
        +
        IOException - if an I/O error occurs, such as if the encoding is invalid
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the + encoding is not supported.
        Since:
        +
        1.2
        +
      • +
      + + + +
        +
      • +

        toInputStream

        +
        @Deprecated
        +public static InputStream toInputStream(CharSequence input)
        +
        Deprecated. 2.5 use toInputStream(CharSequence, Charset) instead
        +
        Converts the specified CharSequence to an input stream, encoded as bytes + using the default character encoding of the platform.
        +
        Parameters:
        input - the CharSequence to convert
        +
        Returns:
        an input stream
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        toInputStream

        +
        public static InputStream toInputStream(CharSequence input,
        +                        Charset encoding)
        +
        Converts the specified CharSequence to an input stream, encoded as bytes + using the specified character encoding.
        +
        Parameters:
        input - the CharSequence to convert
        encoding - the encoding to use, null means platform default
        +
        Returns:
        an input stream
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        toInputStream

        +
        public static InputStream toInputStream(CharSequence input,
        +                        String encoding)
        +                                 throws IOException
        +
        Converts the specified CharSequence to an input stream, encoded as bytes + using the specified character encoding. +

        + Character encoding names can be found at + IANA.

        +
        Parameters:
        input - the CharSequence to convert
        encoding - the encoding to use, null means platform default
        +
        Returns:
        an input stream
        +
        Throws:
        +
        IOException - if the encoding is invalid
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the + encoding is not supported.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        toInputStream

        +
        @Deprecated
        +public static InputStream toInputStream(String input)
        +
        Deprecated. 2.5 use toInputStream(String, Charset) instead
        +
        Converts the specified string to an input stream, encoded as bytes + using the default character encoding of the platform.
        +
        Parameters:
        input - the string to convert
        +
        Returns:
        an input stream
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        toInputStream

        +
        public static InputStream toInputStream(String input,
        +                        Charset encoding)
        +
        Converts the specified string to an input stream, encoded as bytes + using the specified character encoding.
        +
        Parameters:
        input - the string to convert
        encoding - the encoding to use, null means platform default
        +
        Returns:
        an input stream
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        toInputStream

        +
        public static InputStream toInputStream(String input,
        +                        String encoding)
        +                                 throws IOException
        +
        Converts the specified string to an input stream, encoded as bytes + using the specified character encoding. +

        + Character encoding names can be found at + IANA.

        +
        Parameters:
        input - the string to convert
        encoding - the encoding to use, null means platform default
        +
        Returns:
        an input stream
        +
        Throws:
        +
        IOException - if the encoding is invalid
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the + encoding is not supported.
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        write

        +
        public static void write(byte[] data,
        +         OutputStream output)
        +                  throws IOException
        +
        Writes bytes from a byte[] to an OutputStream.
        +
        Parameters:
        data - the byte array to write, do not modify during output, + null ignored
        output - the OutputStream to write to
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        writeChunked

        +
        public static void writeChunked(byte[] data,
        +                OutputStream output)
        +                         throws IOException
        +
        Writes bytes from a byte[] to an OutputStream using chunked writes. + This is intended for writing very large byte arrays which might otherwise cause excessive + memory usage if the native code has to allocate a copy.
        +
        Parameters:
        data - the byte array to write, do not modify during output, + null ignored
        output - the OutputStream to write to
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.5
        +
      • +
      + + + + + + + +
        +
      • +

        write

        +
        public static void write(byte[] data,
        +         Writer output,
        +         Charset encoding)
        +                  throws IOException
        +
        Writes bytes from a byte[] to chars on a Writer + using the specified character encoding. +

        + This method uses String.String(byte[], String).

        +
        Parameters:
        data - the byte array to write, do not modify during output, + null ignored
        output - the Writer to write to
        encoding - the encoding to use, null means platform default
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        write

        +
        public static void write(byte[] data,
        +         Writer output,
        +         String encoding)
        +                  throws IOException
        +
        Writes bytes from a byte[] to chars on a Writer + using the specified character encoding. +

        + Character encoding names can be found at + IANA. +

        + This method uses String.String(byte[], String).

        +
        Parameters:
        data - the byte array to write, do not modify during output, + null ignored
        output - the Writer to write to
        encoding - the encoding to use, null means platform default
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the + encoding is not supported.
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        write

        +
        public static void write(char[] data,
        +         Writer output)
        +                  throws IOException
        +
        Writes chars from a char[] to a Writer
        +
        Parameters:
        data - the char array to write, do not modify during output, + null ignored
        output - the Writer to write to
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        writeChunked

        +
        public static void writeChunked(char[] data,
        +                Writer output)
        +                         throws IOException
        +
        Writes chars from a char[] to a Writer using chunked writes. + This is intended for writing very large byte arrays which might otherwise cause excessive + memory usage if the native code has to allocate a copy.
        +
        Parameters:
        data - the char array to write, do not modify during output, + null ignored
        output - the Writer to write to
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.5
        +
      • +
      + + + + + + + +
        +
      • +

        write

        +
        public static void write(char[] data,
        +         OutputStream output,
        +         Charset encoding)
        +                  throws IOException
        +
        Writes chars from a char[] to bytes on an + OutputStream using the specified character encoding. +

        + This method uses String.String(char[]) and + String.getBytes(String).

        +
        Parameters:
        data - the char array to write, do not modify during output, + null ignored
        output - the OutputStream to write to
        encoding - the encoding to use, null means platform default
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.3
        +
      • +
      + + + + + + + +
        +
      • +

        write

        +
        public static void write(CharSequence data,
        +         Writer output)
        +                  throws IOException
        +
        Writes chars from a CharSequence to a Writer.
        +
        Parameters:
        data - the CharSequence to write, null ignored
        output - the Writer to write to
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.0
        +
      • +
      + + + + + + + +
        +
      • +

        write

        +
        public static void write(CharSequence data,
        +         OutputStream output,
        +         Charset encoding)
        +                  throws IOException
        +
        Writes chars from a CharSequence to bytes on an + OutputStream using the specified character encoding. +

        + This method uses String.getBytes(String).

        +
        Parameters:
        data - the CharSequence to write, null ignored
        output - the OutputStream to write to
        encoding - the encoding to use, null means platform default
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.3
        +
      • +
      + + + + + + + +
        +
      • +

        write

        +
        public static void write(String data,
        +         Writer output)
        +                  throws IOException
        +
        Writes chars from a String to a Writer.
        +
        Parameters:
        data - the String to write, null ignored
        output - the Writer to write to
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + + + + + +
        +
      • +

        write

        +
        public static void write(String data,
        +         OutputStream output,
        +         Charset encoding)
        +                  throws IOException
        +
        Writes chars from a String to bytes on an + OutputStream using the specified character encoding. +

        + This method uses String.getBytes(String).

        +
        Parameters:
        data - the String to write, null ignored
        output - the OutputStream to write to
        encoding - the encoding to use, null means platform default
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.3
        +
      • +
      + + + + + + + +
        +
      • +

        write

        +
        @Deprecated
        +public static void write(StringBuffer data,
        +                    Writer output)
        +                  throws IOException
        +
        Deprecated. replaced by write(CharSequence, Writer)
        +
        Writes chars from a StringBuffer to a Writer.
        +
        Parameters:
        data - the StringBuffer to write, null ignored
        output - the Writer to write to
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        write

        +
        @Deprecated
        +public static void write(StringBuffer data,
        +                    OutputStream output)
        +                  throws IOException
        +
        Deprecated. replaced by write(CharSequence, OutputStream)
        +
        Writes chars from a StringBuffer to bytes on an + OutputStream using the default character encoding of the + platform. +

        + This method uses String.getBytes().

        +
        Parameters:
        data - the StringBuffer to write, null ignored
        output - the OutputStream to write to
        +
        Throws:
        +
        NullPointerException - if output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + + + + + +
        +
      • +

        writeLines

        +
        @Deprecated
        +public static void writeLines(Collection<?> lines,
        +                         String lineEnding,
        +                         OutputStream output)
        +                       throws IOException
        + +
        Writes the toString() value of each item in a collection to + an OutputStream line by line, using the default character + encoding of the platform and the specified line ending.
        +
        Parameters:
        lines - the lines to write, null entries produce blank lines
        lineEnding - the line separator to use, null is system default
        output - the OutputStream to write to, not null, not closed
        +
        Throws:
        +
        NullPointerException - if the output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        writeLines

        +
        public static void writeLines(Collection<?> lines,
        +              String lineEnding,
        +              OutputStream output,
        +              Charset encoding)
        +                       throws IOException
        +
        Writes the toString() value of each item in a collection to + an OutputStream line by line, using the specified character + encoding and the specified line ending.
        +
        Parameters:
        lines - the lines to write, null entries produce blank lines
        lineEnding - the line separator to use, null is system default
        output - the OutputStream to write to, not null, not closed
        encoding - the encoding to use, null means platform default
        +
        Throws:
        +
        NullPointerException - if the output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        writeLines

        +
        public static void writeLines(Collection<?> lines,
        +              String lineEnding,
        +              OutputStream output,
        +              String encoding)
        +                       throws IOException
        +
        Writes the toString() value of each item in a collection to + an OutputStream line by line, using the specified character + encoding and the specified line ending. +

        + Character encoding names can be found at + IANA.

        +
        Parameters:
        lines - the lines to write, null entries produce blank lines
        lineEnding - the line separator to use, null is system default
        output - the OutputStream to write to, not null, not closed
        encoding - the encoding to use, null means platform default
        +
        Throws:
        +
        NullPointerException - if the output is null
        +
        IOException - if an I/O error occurs
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the + encoding is not supported.
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        writeLines

        +
        public static void writeLines(Collection<?> lines,
        +              String lineEnding,
        +              Writer writer)
        +                       throws IOException
        +
        Writes the toString() value of each item in a collection to + a Writer line by line, using the specified line ending.
        +
        Parameters:
        lines - the lines to write, null entries produce blank lines
        lineEnding - the line separator to use, null is system default
        writer - the Writer to write to, not null, not closed
        +
        Throws:
        +
        NullPointerException - if the input is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static int copy(InputStream input,
        +       OutputStream output)
        +                throws IOException
        +
        Copies bytes from an InputStream to an + OutputStream. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream. +

        + Large streams (over 2GB) will return a bytes copied value of + -1 after the copy has completed since the correct + number of bytes cannot be returned as an int. For large streams + use the copyLarge(InputStream, OutputStream) method.

        +
        Parameters:
        input - the InputStream to read from
        output - the OutputStream to write to
        +
        Returns:
        the number of bytes copied, or -1 if > Integer.MAX_VALUE
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static long copy(InputStream input,
        +        OutputStream output,
        +        int bufferSize)
        +                 throws IOException
        +
        Copies bytes from an InputStream to an OutputStream using an internal buffer of the + given size. +

        + This method buffers the input internally, so there is no need to use a BufferedInputStream. +

        +
        Parameters:
        input - the InputStream to read from
        output - the OutputStream to write to
        bufferSize - the bufferSize used to copy from the input to the output
        +
        Returns:
        the number of bytes copied
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        copyLarge

        +
        public static long copyLarge(InputStream input,
        +             OutputStream output)
        +                      throws IOException
        +
        Copies bytes from a large (over 2GB) InputStream to an + OutputStream. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream. +

        + The buffer size is given by DEFAULT_BUFFER_SIZE.

        +
        Parameters:
        input - the InputStream to read from
        output - the OutputStream to write to
        +
        Returns:
        the number of bytes copied
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        copyLarge

        +
        public static long copyLarge(InputStream input,
        +             OutputStream output,
        +             byte[] buffer)
        +                      throws IOException
        +
        Copies bytes from a large (over 2GB) InputStream to an + OutputStream. +

        + This method uses the provided buffer, so there is no need to use a + BufferedInputStream. +

        +
        Parameters:
        input - the InputStream to read from
        output - the OutputStream to write to
        buffer - the buffer to use for the copy
        +
        Returns:
        the number of bytes copied
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        copyLarge

        +
        public static long copyLarge(InputStream input,
        +             OutputStream output,
        +             long inputOffset,
        +             long length)
        +                      throws IOException
        +
        Copies some or all bytes from a large (over 2GB) InputStream to an + OutputStream, optionally skipping input bytes. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream. +

        +

        + Note that the implementation uses skip(InputStream, long). + This means that the method may be considerably less efficient than using the actual skip implementation, + this is done to guarantee that the correct number of characters are skipped. +

        + The buffer size is given by DEFAULT_BUFFER_SIZE.
        +
        Parameters:
        input - the InputStream to read from
        output - the OutputStream to write to
        inputOffset - : number of bytes to skip from input before copying + -ve values are ignored
        length - : number of bytes to copy. -ve means all
        +
        Returns:
        the number of bytes copied
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        copyLarge

        +
        public static long copyLarge(InputStream input,
        +             OutputStream output,
        +             long inputOffset,
        +             long length,
        +             byte[] buffer)
        +                      throws IOException
        +
        Copies some or all bytes from a large (over 2GB) InputStream to an + OutputStream, optionally skipping input bytes. +

        + This method uses the provided buffer, so there is no need to use a + BufferedInputStream. +

        +

        + Note that the implementation uses skip(InputStream, long). + This means that the method may be considerably less efficient than using the actual skip implementation, + this is done to guarantee that the correct number of characters are skipped. +

        +
        Parameters:
        input - the InputStream to read from
        output - the OutputStream to write to
        inputOffset - : number of bytes to skip from input before copying + -ve values are ignored
        length - : number of bytes to copy. -ve means all
        buffer - the buffer to use for the copy
        +
        Returns:
        the number of bytes copied
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        copy

        +
        @Deprecated
        +public static void copy(InputStream input,
        +                   Writer output)
        +                 throws IOException
        +
        Deprecated. 2.5 use copy(InputStream, Writer, Charset) instead
        +
        Copies bytes from an InputStream to chars on a + Writer using the default character encoding of the platform. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream. +

        + This method uses InputStreamReader.

        +
        Parameters:
        input - the InputStream to read from
        output - the Writer to write to
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static void copy(InputStream input,
        +        Writer output,
        +        Charset inputEncoding)
        +                 throws IOException
        +
        Copies bytes from an InputStream to chars on a + Writer using the specified character encoding. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream. +

        + This method uses InputStreamReader.

        +
        Parameters:
        input - the InputStream to read from
        output - the Writer to write to
        inputEncoding - the encoding to use for the input stream, null means platform default
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static void copy(InputStream input,
        +        Writer output,
        +        String inputEncoding)
        +                 throws IOException
        +
        Copies bytes from an InputStream to chars on a + Writer using the specified character encoding. +

        + This method buffers the input internally, so there is no need to use a + BufferedInputStream. +

        + Character encoding names can be found at + IANA. +

        + This method uses InputStreamReader.

        +
        Parameters:
        input - the InputStream to read from
        output - the Writer to write to
        inputEncoding - the encoding to use for the InputStream, null means platform default
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the + encoding is not supported.
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static int copy(Reader input,
        +       Writer output)
        +                throws IOException
        +
        Copies chars from a Reader to a Writer. +

        + This method buffers the input internally, so there is no need to use a + BufferedReader. +

        + Large streams (over 2GB) will return a chars copied value of + -1 after the copy has completed since the correct + number of chars cannot be returned as an int. For large streams + use the copyLarge(Reader, Writer) method.

        +
        Parameters:
        input - the Reader to read from
        output - the Writer to write to
        +
        Returns:
        the number of characters copied, or -1 if > Integer.MAX_VALUE
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        copyLarge

        +
        public static long copyLarge(Reader input,
        +             Writer output)
        +                      throws IOException
        +
        Copies chars from a large (over 2GB) Reader to a Writer. +

        + This method buffers the input internally, so there is no need to use a + BufferedReader. +

        + The buffer size is given by DEFAULT_BUFFER_SIZE.

        +
        Parameters:
        input - the Reader to read from
        output - the Writer to write to
        +
        Returns:
        the number of characters copied
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        copyLarge

        +
        public static long copyLarge(Reader input,
        +             Writer output,
        +             char[] buffer)
        +                      throws IOException
        +
        Copies chars from a large (over 2GB) Reader to a Writer. +

        + This method uses the provided buffer, so there is no need to use a + BufferedReader. +

        +
        Parameters:
        input - the Reader to read from
        output - the Writer to write to
        buffer - the buffer to be used for the copy
        +
        Returns:
        the number of characters copied
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        copyLarge

        +
        public static long copyLarge(Reader input,
        +             Writer output,
        +             long inputOffset,
        +             long length)
        +                      throws IOException
        +
        Copies some or all chars from a large (over 2GB) InputStream to an + OutputStream, optionally skipping input chars. +

        + This method buffers the input internally, so there is no need to use a + BufferedReader. +

        + The buffer size is given by DEFAULT_BUFFER_SIZE.

        +
        Parameters:
        input - the Reader to read from
        output - the Writer to write to
        inputOffset - : number of chars to skip from input before copying + -ve values are ignored
        length - : number of chars to copy. -ve means all
        +
        Returns:
        the number of chars copied
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        copyLarge

        +
        public static long copyLarge(Reader input,
        +             Writer output,
        +             long inputOffset,
        +             long length,
        +             char[] buffer)
        +                      throws IOException
        +
        Copies some or all chars from a large (over 2GB) InputStream to an + OutputStream, optionally skipping input chars. +

        + This method uses the provided buffer, so there is no need to use a + BufferedReader. +

        +
        Parameters:
        input - the Reader to read from
        output - the Writer to write to
        inputOffset - : number of chars to skip from input before copying + -ve values are ignored
        length - : number of chars to copy. -ve means all
        buffer - the buffer to be used for the copy
        +
        Returns:
        the number of chars copied
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        copy

        +
        @Deprecated
        +public static void copy(Reader input,
        +                   OutputStream output)
        +                 throws IOException
        +
        Deprecated. 2.5 use copy(Reader, OutputStream, Charset) instead
        +
        Copies chars from a Reader to bytes on an + OutputStream using the default character encoding of the + platform, and calling flush. +

        + This method buffers the input internally, so there is no need to use a + BufferedReader. +

        + Due to the implementation of OutputStreamWriter, this method performs a + flush. +

        + This method uses OutputStreamWriter.

        +
        Parameters:
        input - the Reader to read from
        output - the OutputStream to write to
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static void copy(Reader input,
        +        OutputStream output,
        +        Charset outputEncoding)
        +                 throws IOException
        +
        Copies chars from a Reader to bytes on an + OutputStream using the specified character encoding, and + calling flush. +

        + This method buffers the input internally, so there is no need to use a + BufferedReader. +

        +

        + Due to the implementation of OutputStreamWriter, this method performs a + flush. +

        +

        + This method uses OutputStreamWriter. +

        +
        Parameters:
        input - the Reader to read from
        output - the OutputStream to write to
        outputEncoding - the encoding to use for the OutputStream, null means platform default
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static void copy(Reader input,
        +        OutputStream output,
        +        String outputEncoding)
        +                 throws IOException
        +
        Copies chars from a Reader to bytes on an + OutputStream using the specified character encoding, and + calling flush. +

        + This method buffers the input internally, so there is no need to use a + BufferedReader. +

        + Character encoding names can be found at + IANA. +

        + Due to the implementation of OutputStreamWriter, this method performs a + flush. +

        + This method uses OutputStreamWriter.

        +
        Parameters:
        input - the Reader to read from
        output - the OutputStream to write to
        outputEncoding - the encoding to use for the OutputStream, null means platform default
        +
        Throws:
        +
        NullPointerException - if the input or output is null
        +
        IOException - if an I/O error occurs
        +
        UnsupportedCharsetException - thrown instead of .UnsupportedEncodingException in version 2.2 if the + encoding is not supported.
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        contentEquals

        +
        public static boolean contentEquals(InputStream input1,
        +                    InputStream input2)
        +                             throws IOException
        +
        Compares the contents of two Streams to determine if they are equal or + not. +

        + This method buffers the input internally using + BufferedInputStream if they are not already buffered.

        +
        Parameters:
        input1 - the first stream
        input2 - the second stream
        +
        Returns:
        true if the content of the streams are equal or they both don't + exist, false otherwise
        +
        Throws:
        +
        NullPointerException - if either input is null
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        contentEquals

        +
        public static boolean contentEquals(Reader input1,
        +                    Reader input2)
        +                             throws IOException
        +
        Compares the contents of two Readers to determine if they are equal or + not. +

        + This method buffers the input internally using + BufferedReader if they are not already buffered.

        +
        Parameters:
        input1 - the first reader
        input2 - the second reader
        +
        Returns:
        true if the content of the readers are equal or they both don't + exist, false otherwise
        +
        Throws:
        +
        NullPointerException - if either input is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        contentEqualsIgnoreEOL

        +
        public static boolean contentEqualsIgnoreEOL(Reader input1,
        +                             Reader input2)
        +                                      throws IOException
        +
        Compares the contents of two Readers to determine if they are equal or + not, ignoring EOL characters. +

        + This method buffers the input internally using + BufferedReader if they are not already buffered.

        +
        Parameters:
        input1 - the first reader
        input2 - the second reader
        +
        Returns:
        true if the content of the readers are equal (ignoring EOL differences), false otherwise
        +
        Throws:
        +
        NullPointerException - if either input is null
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.2
        +
      • +
      + + + + + + + +
        +
      • +

        skip

        +
        public static long skip(ReadableByteChannel input,
        +        long toSkip)
        +                 throws IOException
        +
        Skips bytes from a ReadableByteChannel. + This implementation guarantees that it will read as many bytes + as possible before giving up.
        +
        Parameters:
        input - ReadableByteChannel to skip
        toSkip - number of bytes to skip.
        +
        Returns:
        number of bytes actually skipped.
        +
        Throws:
        +
        IOException - if there is a problem reading the ReadableByteChannel
        +
        IllegalArgumentException - if toSkip is negative
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        skip

        +
        public static long skip(Reader input,
        +        long toSkip)
        +                 throws IOException
        +
        Skips characters from an input character stream. + This implementation guarantees that it will read as many characters + as possible before giving up; this may not always be the case for + skip() implementations in subclasses of Reader. +

        + Note that the implementation uses Reader.read(char[], int, int) rather + than delegating to Reader.skip(long). + This means that the method may be considerably less efficient than using the actual skip implementation, + this is done to guarantee that the correct number of characters are skipped. +

        +
        Parameters:
        input - character stream to skip
        toSkip - number of characters to skip.
        +
        Returns:
        number of characters actually skipped.
        +
        Throws:
        +
        IOException - if there is a problem reading the file
        +
        IllegalArgumentException - if toSkip is negative
        Since:
        +
        2.0
        +
        See Also:
        Reader.skip(long), +IO-203 - Add skipFully() method for InputStreams
        +
      • +
      + + + +
        +
      • +

        skipFully

        +
        public static void skipFully(InputStream input,
        +             long toSkip)
        +                      throws IOException
        +
        Skips the requested number of bytes or fail if there are not enough left. +

        + This allows for the possibility that InputStream.skip(long) may + not skip as many bytes as requested (most likely because of reaching EOF). +

        + Note that the implementation uses skip(InputStream, long). + This means that the method may be considerably less efficient than using the actual skip implementation, + this is done to guarantee that the correct number of characters are skipped. +

        +
        Parameters:
        input - stream to skip
        toSkip - the number of bytes to skip
        +
        Throws:
        +
        IOException - if there is a problem reading the file
        +
        IllegalArgumentException - if toSkip is negative
        +
        EOFException - if the number of bytes skipped was incorrect
        Since:
        +
        2.0
        +
        See Also:
        InputStream.skip(long)
        +
      • +
      + + + +
        +
      • +

        skipFully

        +
        public static void skipFully(ReadableByteChannel input,
        +             long toSkip)
        +                      throws IOException
        +
        Skips the requested number of bytes or fail if there are not enough left.
        +
        Parameters:
        input - ReadableByteChannel to skip
        toSkip - the number of bytes to skip
        +
        Throws:
        +
        IOException - if there is a problem reading the ReadableByteChannel
        +
        IllegalArgumentException - if toSkip is negative
        +
        EOFException - if the number of bytes skipped was incorrect
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        skipFully

        +
        public static void skipFully(Reader input,
        +             long toSkip)
        +                      throws IOException
        +
        Skips the requested number of characters or fail if there are not enough left. +

        + This allows for the possibility that Reader.skip(long) may + not skip as many characters as requested (most likely because of reaching EOF). +

        + Note that the implementation uses skip(Reader, long). + This means that the method may be considerably less efficient than using the actual skip implementation, + this is done to guarantee that the correct number of characters are skipped. +

        +
        Parameters:
        input - stream to skip
        toSkip - the number of characters to skip
        +
        Throws:
        +
        IOException - if there is a problem reading the file
        +
        IllegalArgumentException - if toSkip is negative
        +
        EOFException - if the number of characters skipped was incorrect
        Since:
        +
        2.0
        +
        See Also:
        Reader.skip(long)
        +
      • +
      + + + +
        +
      • +

        read

        +
        public static int read(Reader input,
        +       char[] buffer,
        +       int offset,
        +       int length)
        +                throws IOException
        +
        Reads characters from an input character stream. + This implementation guarantees that it will read as many characters + as possible before giving up; this may not always be the case for + subclasses of Reader.
        +
        Parameters:
        input - where to read input from
        buffer - destination
        offset - initial offset into buffer
        length - length to read, must be >= 0
        +
        Returns:
        actual length read; may be less than requested if EOF was reached
        +
        Throws:
        +
        IOException - if a read error occurs
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        read

        +
        public static int read(Reader input,
        +       char[] buffer)
        +                throws IOException
        +
        Reads characters from an input character stream. + This implementation guarantees that it will read as many characters + as possible before giving up; this may not always be the case for + subclasses of Reader.
        +
        Parameters:
        input - where to read input from
        buffer - destination
        +
        Returns:
        actual length read; may be less than requested if EOF was reached
        +
        Throws:
        +
        IOException - if a read error occurs
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        read

        +
        public static int read(InputStream input,
        +       byte[] buffer,
        +       int offset,
        +       int length)
        +                throws IOException
        +
        Reads bytes from an input stream. + This implementation guarantees that it will read as many bytes + as possible before giving up; this may not always be the case for + subclasses of InputStream.
        +
        Parameters:
        input - where to read input from
        buffer - destination
        offset - initial offset into buffer
        length - length to read, must be >= 0
        +
        Returns:
        actual length read; may be less than requested if EOF was reached
        +
        Throws:
        +
        IOException - if a read error occurs
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        read

        +
        public static int read(InputStream input,
        +       byte[] buffer)
        +                throws IOException
        +
        Reads bytes from an input stream. + This implementation guarantees that it will read as many bytes + as possible before giving up; this may not always be the case for + subclasses of InputStream.
        +
        Parameters:
        input - where to read input from
        buffer - destination
        +
        Returns:
        actual length read; may be less than requested if EOF was reached
        +
        Throws:
        +
        IOException - if a read error occurs
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        read

        +
        public static int read(ReadableByteChannel input,
        +       ByteBuffer buffer)
        +                throws IOException
        +
        Reads bytes from a ReadableByteChannel. +

        + This implementation guarantees that it will read as many bytes + as possible before giving up; this may not always be the case for + subclasses of ReadableByteChannel.

        +
        Parameters:
        input - the byte channel to read
        buffer - byte buffer destination
        +
        Returns:
        the actual length read; may be less than requested if EOF was reached
        +
        Throws:
        +
        IOException - if a read error occurs
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        readFully

        +
        public static void readFully(Reader input,
        +             char[] buffer,
        +             int offset,
        +             int length)
        +                      throws IOException
        +
        Reads the requested number of characters or fail if there are not enough left. +

        + This allows for the possibility that Reader.read(char[], int, int) may + not read as many characters as requested (most likely because of reaching EOF).

        +
        Parameters:
        input - where to read input from
        buffer - destination
        offset - initial offset into buffer
        length - length to read, must be >= 0
        +
        Throws:
        +
        IOException - if there is a problem reading the file
        +
        IllegalArgumentException - if length is negative
        +
        EOFException - if the number of characters read was incorrect
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        readFully

        +
        public static void readFully(Reader input,
        +             char[] buffer)
        +                      throws IOException
        +
        Reads the requested number of characters or fail if there are not enough left. +

        + This allows for the possibility that Reader.read(char[], int, int) may + not read as many characters as requested (most likely because of reaching EOF).

        +
        Parameters:
        input - where to read input from
        buffer - destination
        +
        Throws:
        +
        IOException - if there is a problem reading the file
        +
        IllegalArgumentException - if length is negative
        +
        EOFException - if the number of characters read was incorrect
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        readFully

        +
        public static void readFully(InputStream input,
        +             byte[] buffer,
        +             int offset,
        +             int length)
        +                      throws IOException
        +
        Reads the requested number of bytes or fail if there are not enough left. +

        + This allows for the possibility that InputStream.read(byte[], int, int) may + not read as many bytes as requested (most likely because of reaching EOF).

        +
        Parameters:
        input - where to read input from
        buffer - destination
        offset - initial offset into buffer
        length - length to read, must be >= 0
        +
        Throws:
        +
        IOException - if there is a problem reading the file
        +
        IllegalArgumentException - if length is negative
        +
        EOFException - if the number of bytes read was incorrect
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        readFully

        +
        public static void readFully(InputStream input,
        +             byte[] buffer)
        +                      throws IOException
        +
        Reads the requested number of bytes or fail if there are not enough left. +

        + This allows for the possibility that InputStream.read(byte[], int, int) may + not read as many bytes as requested (most likely because of reaching EOF).

        +
        Parameters:
        input - where to read input from
        buffer - destination
        +
        Throws:
        +
        IOException - if there is a problem reading the file
        +
        IllegalArgumentException - if length is negative
        +
        EOFException - if the number of bytes read was incorrect
        Since:
        +
        2.2
        +
      • +
      + + + +
        +
      • +

        readFully

        +
        public static byte[] readFully(InputStream input,
        +               int length)
        +                        throws IOException
        +
        Reads the requested number of bytes or fail if there are not enough left. +

        + This allows for the possibility that InputStream.read(byte[], int, int) may + not read as many bytes as requested (most likely because of reaching EOF).

        +
        Parameters:
        input - where to read input from
        length - length to read, must be >= 0
        +
        Returns:
        the bytes read from input
        +
        Throws:
        +
        IOException - if there is a problem reading the file
        +
        IllegalArgumentException - if length is negative
        +
        EOFException - if the number of bytes read was incorrect
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        readFully

        +
        public static void readFully(ReadableByteChannel input,
        +             ByteBuffer buffer)
        +                      throws IOException
        +
        Reads the requested number of bytes or fail if there are not enough left. +

        + This allows for the possibility that ReadableByteChannel.read(ByteBuffer) may + not read as many bytes as requested (most likely because of reaching EOF).

        +
        Parameters:
        input - the byte channel to read
        buffer - byte buffer destination
        +
        Throws:
        +
        IOException - if there is a problem reading the file
        +
        EOFException - if the number of bytes read was incorrect
        Since:
        +
        2.5
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/LineIterator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/LineIterator.html new file mode 100644 index 0000000..e640dd4 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/LineIterator.html @@ -0,0 +1,421 @@ + + + + + +LineIterator (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class LineIterator

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Iterator<String>
    +
    +
    +
    +
    public class LineIterator
    +extends Object
    +implements Iterator<String>
    +
    An Iterator over the lines in a Reader. +

    + LineIterator holds a reference to an open Reader. + When you have finished with the iterator you should close the reader + to free internal resources. This can be done by closing the reader directly, + or by calling the close() or closeQuietly(LineIterator) + method on the iterator. +

    + The recommended usage pattern is: +

    + LineIterator it = FileUtils.lineIterator(file, "UTF-8");
    + try {
    +   while (it.hasNext()) {
    +     String line = it.nextLine();
    +     // do something with line
    +   }
    + } finally {
    +   it.close();
    + }
    + 
    +
    Since:
    +
    1.2
    +
    Version:
    +
    $Id: LineIterator.java 1471767 2013-04-24 23:24:19Z sebb $
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      LineIterator(Reader reader) +
      Constructs an iterator of the lines for a Reader.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        hasNext

        +
        public boolean hasNext()
        +
        Indicates whether the Reader has more lines. + If there is an IOException then close() will + be called on this instance.
        +
        +
        Specified by:
        +
        hasNext in interface Iterator<String>
        +
        Returns:
        true if the Reader has more lines
        +
        Throws:
        +
        IllegalStateException - if an IO exception occurs
        +
      • +
      + + + +
        +
      • +

        isValidLine

        +
        protected boolean isValidLine(String line)
        +
        Overridable method to validate each line that is returned. + This implementation always returns true.
        +
        Parameters:
        line - the line that is to be validated
        +
        Returns:
        true if valid, false to remove from the iterator
        +
      • +
      + + + +
        +
      • +

        next

        +
        public String next()
        +
        Returns the next line in the wrapped Reader.
        +
        +
        Specified by:
        +
        next in interface Iterator<String>
        +
        Returns:
        the next line from the input
        +
        Throws:
        +
        NoSuchElementException - if there is no line to return
        +
      • +
      + + + +
        +
      • +

        nextLine

        +
        public String nextLine()
        +
        Returns the next line in the wrapped Reader.
        +
        Returns:
        the next line from the input
        +
        Throws:
        +
        NoSuchElementException - if there is no line to return
        +
      • +
      + + + +
        +
      • +

        close

        +
        public void close()
        +
        Closes the underlying Reader quietly. + This method is useful if you only want to process the first few + lines of a larger file. If you do not close the iterator + then the Reader remains open. + This method can safely be called multiple times.
        +
      • +
      + + + + + + + +
        +
      • +

        closeQuietly

        +
        public static void closeQuietly(LineIterator iterator)
        +
        Closes the iterator, handling null and ignoring exceptions.
        +
        Parameters:
        iterator - the iterator to close
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/TaggedIOException.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/TaggedIOException.html new file mode 100644 index 0000000..90d07a2 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/TaggedIOException.html @@ -0,0 +1,403 @@ + + + + + +TaggedIOException (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io
+

Class TaggedIOException

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable
    +
    +
    +
    +
    public class TaggedIOException
    +extends IOExceptionWithCause
    +
    An IOException decorator that adds a serializable tag to the + wrapped exception. Both the tag and the original exception can be used + to determine further processing when this exception is caught.
    +
    Since:
    +
    2.0
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TaggedIOException

        +
        public TaggedIOException(IOException original,
        +                 Serializable tag)
        +
        Creates a tagged wrapper for the given exception.
        +
        Parameters:
        original - the exception to be tagged
        tag - tag of this exception
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        isTaggedWith

        +
        public static boolean isTaggedWith(Throwable throwable,
        +                   Object tag)
        +
        Checks whether the given throwable is tagged with the given tag. +

        + This check can only succeed if the throwable is a + TaggedIOException and the tag is Serializable, but + the argument types are intentionally more generic to make it easier + to use this method without type casts. +

        + A typical use for this method is in a catch block to + determine how a caught exception should be handled: +

        + Serializable tag = ...;
        + try {
        +     ...;
        + } catch (Throwable t) {
        +     if (TaggedIOExcepton.isTaggedWith(t, tag)) {
        +         // special processing for tagged exception
        +     } else {
        +         // handling of other kinds of exceptions
        +     }
        + }
        + 
        +
        Parameters:
        throwable - The Throwable object to check
        tag - tag object
        +
        Returns:
        true if the throwable has the specified tag, + otherwise false
        +
      • +
      + + + +
        +
      • +

        throwCauseIfTaggedWith

        +
        public static void throwCauseIfTaggedWith(Throwable throwable,
        +                          Object tag)
        +                                   throws IOException
        +
        Throws the original IOException if the given throwable is + a TaggedIOException decorator the given tag. Does nothing + if the given throwable is of a different type or if it is tagged + with some other tag. +

        + This method is typically used in a catch block to + selectively rethrow tagged exceptions. +

        + Serializable tag = ...;
        + try {
        +     ...;
        + } catch (Throwable t) {
        +     TaggedIOExcepton.throwCauseIfTagged(t, tag);
        +     // handle other kinds of exceptions
        + }
        + 
        +
        Parameters:
        throwable - an exception
        tag - tag object
        +
        Throws:
        +
        IOException - original exception from the tagged decorator, if any
        +
      • +
      + + + +
        +
      • +

        getTag

        +
        public Serializable getTag()
        +
        Returns the serializable tag object.
        +
        Returns:
        tag object
        +
      • +
      + + + +
        +
      • +

        getCause

        +
        public IOException getCause()
        +
        Returns the wrapped exception. The only difference to the overridden + Throwable.getCause() method is the narrower return type.
        +
        +
        Overrides:
        +
        getCause in class Throwable
        +
        Returns:
        wrapped exception
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/ByteOrderMark.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/ByteOrderMark.html new file mode 100644 index 0000000..a44a753 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/ByteOrderMark.html @@ -0,0 +1,249 @@ + + + + + +Uses of Class org.apache.commons.io.ByteOrderMark (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.ByteOrderMark

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/Charsets.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/Charsets.html new file mode 100644 index 0000000..3fd2946 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/Charsets.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.Charsets (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.Charsets

+
+
No usage of org.apache.commons.io.Charsets
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/CopyUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/CopyUtils.html new file mode 100644 index 0000000..5e1a6f7 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/CopyUtils.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.CopyUtils (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.CopyUtils

+
+
No usage of org.apache.commons.io.CopyUtils
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/DirectoryWalker.CancelException.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/DirectoryWalker.CancelException.html new file mode 100644 index 0000000..e2f947d --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/DirectoryWalker.CancelException.html @@ -0,0 +1,163 @@ + + + + + +Uses of Class org.apache.commons.io.DirectoryWalker.CancelException (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.DirectoryWalker.CancelException

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/DirectoryWalker.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/DirectoryWalker.html new file mode 100644 index 0000000..69eeddb --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/DirectoryWalker.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.DirectoryWalker (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.DirectoryWalker

+
+
No usage of org.apache.commons.io.DirectoryWalker
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/EndianUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/EndianUtils.html new file mode 100644 index 0000000..b474075 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/EndianUtils.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.EndianUtils (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.EndianUtils

+
+
No usage of org.apache.commons.io.EndianUtils
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileCleaner.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileCleaner.html new file mode 100644 index 0000000..9953f42 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileCleaner.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.FileCleaner (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.FileCleaner

+
+
No usage of org.apache.commons.io.FileCleaner
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileCleaningTracker.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileCleaningTracker.html new file mode 100644 index 0000000..2af5c88 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileCleaningTracker.html @@ -0,0 +1,162 @@ + + + + + +Uses of Class org.apache.commons.io.FileCleaningTracker (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.FileCleaningTracker

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileDeleteStrategy.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileDeleteStrategy.html new file mode 100644 index 0000000..1fc88b5 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileDeleteStrategy.html @@ -0,0 +1,216 @@ + + + + + +Uses of Class org.apache.commons.io.FileDeleteStrategy (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.FileDeleteStrategy

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileExistsException.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileExistsException.html new file mode 100644 index 0000000..0c852bf --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileExistsException.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.FileExistsException (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.FileExistsException

+
+
No usage of org.apache.commons.io.FileExistsException
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileSystemUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileSystemUtils.html new file mode 100644 index 0000000..19e53b3 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileSystemUtils.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.FileSystemUtils (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.FileSystemUtils

+
+
No usage of org.apache.commons.io.FileSystemUtils
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileUtils.html new file mode 100644 index 0000000..34356e4 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FileUtils.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.FileUtils (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.FileUtils

+
+
No usage of org.apache.commons.io.FileUtils
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FilenameUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FilenameUtils.html new file mode 100644 index 0000000..8f321ac --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/FilenameUtils.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.FilenameUtils (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.FilenameUtils

+
+
No usage of org.apache.commons.io.FilenameUtils
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/HexDump.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/HexDump.html new file mode 100644 index 0000000..28e314f --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/HexDump.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.HexDump (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.HexDump

+
+
No usage of org.apache.commons.io.HexDump
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/IOCase.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/IOCase.html new file mode 100644 index 0000000..fa397e1 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/IOCase.html @@ -0,0 +1,416 @@ + + + + + +Uses of Class org.apache.commons.io.IOCase (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.IOCase

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/IOExceptionWithCause.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/IOExceptionWithCause.html new file mode 100644 index 0000000..a6340ec --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/IOExceptionWithCause.html @@ -0,0 +1,162 @@ + + + + + +Uses of Class org.apache.commons.io.IOExceptionWithCause (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.IOExceptionWithCause

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/IOUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/IOUtils.html new file mode 100644 index 0000000..3ebfe63 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/IOUtils.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.IOUtils (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.IOUtils

+
+
No usage of org.apache.commons.io.IOUtils
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/LineIterator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/LineIterator.html new file mode 100644 index 0000000..61722d0 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/LineIterator.html @@ -0,0 +1,205 @@ + + + + + +Uses of Class org.apache.commons.io.LineIterator (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.LineIterator

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/TaggedIOException.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/TaggedIOException.html new file mode 100644 index 0000000..8eff349 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/class-use/TaggedIOException.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.TaggedIOException (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.TaggedIOException

+
+
No usage of org.apache.commons.io.TaggedIOException
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/CompositeFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/CompositeFileComparator.html new file mode 100644 index 0000000..9a7c2b0 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/CompositeFileComparator.html @@ -0,0 +1,380 @@ + + + + + +CompositeFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.comparator
+

Class CompositeFileComparator

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.comparator.CompositeFileComparator
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparator<File>
    +
    +
    +
    +
    public class CompositeFileComparator
    +extends Object
    +implements Serializable
    +
    Compare two files using a set of delegate file Comparator. +

    + This comparator can be used to sort lists or arrays of files + by combining a number other comparators. +

    + Example of sorting a list of files by type (i.e. directory or file) + and then by name: +

    +       CompositeFileComparator comparator =
    +                       new CompositeFileComparator(
    +                                 (AbstractFileComparator) DirectoryFileComparator.DIRECTORY_COMPARATOR,
    +                                 (AbstractFileComparator) NameFileComparator.NAME_COMPARATOR);
    +       List<File> list = ...
    +       comparator.sort(list);
    + 
    +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: CompositeFileComparator.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CompositeFileComparator

        +
        public CompositeFileComparator(Comparator<File>... delegates)
        +
        Create a composite comparator for the set of delegate comparators.
        +
        Parameters:
        delegates - The delegate file comparators
        +
      • +
      + + + +
        +
      • +

        CompositeFileComparator

        +
        public CompositeFileComparator(Iterable<Comparator<File>> delegates)
        +
        Create a composite comparator for the set of delegate comparators.
        +
        Parameters:
        delegates - The delegate file comparators
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        compare

        +
        public int compare(File file1,
        +          File file2)
        +
        Compare the two files using delegate comparators.
        +
        +
        Specified by:
        +
        compare in interface Comparator<File>
        +
        Parameters:
        file1 - The first file to compare
        file2 - The second file to compare
        +
        Returns:
        the first non-zero result returned from + the delegate comparators or zero.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        String representation of this file comparator.
        +
        Returns:
        String representation of this file comparator
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public File[] sort(File... files)
        +
        Sort an array of files. +

        + This method uses Arrays.sort(Object[], Comparator) + and returns the original array.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted array
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public List<File> sort(List<File> files)
        +
        Sort a List of files. +

        + This method uses Collections.sort(List, Comparator) + and returns the original list.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted list
        Since:
        +
        2.0
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/DefaultFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/DefaultFileComparator.html new file mode 100644 index 0000000..4fdae24 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/DefaultFileComparator.html @@ -0,0 +1,422 @@ + + + + + +DefaultFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.comparator
+

Class DefaultFileComparator

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.comparator.DefaultFileComparator
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparator<File>
    +
    +
    +
    +
    public class DefaultFileComparator
    +extends Object
    +implements Serializable
    +
    Compare two files using the default File.compareTo(File) method. +

    + This comparator can be used to sort lists or arrays of files + by using the default file comparison. +

    + Example of sorting a list of files using the + DEFAULT_COMPARATOR singleton instance: +

    +       List<File> list = ...
    +       ((AbstractFileComparator) DefaultFileComparator.DEFAULT_COMPARATOR).sort(list);
    + 
    +

    + Example of doing a reverse sort of an array of files using the + DEFAULT_REVERSE singleton instance: +

    +       File[] array = ...
    +       ((AbstractFileComparator) DefaultFileComparator.DEFAULT_REVERSE).sort(array);
    + 
    +

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: DefaultFileComparator.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        DEFAULT_COMPARATOR

        +
        public static final Comparator<File> DEFAULT_COMPARATOR
        +
        Singleton default comparator instance
        +
      • +
      + + + +
        +
      • +

        DEFAULT_REVERSE

        +
        public static final Comparator<File> DEFAULT_REVERSE
        +
        Singleton reverse default comparator instance
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DefaultFileComparator

        +
        public DefaultFileComparator()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        compare

        +
        public int compare(File file1,
        +          File file2)
        +
        Compare the two files using the File.compareTo(File) method.
        +
        +
        Specified by:
        +
        compare in interface Comparator<File>
        +
        Parameters:
        file1 - The first file to compare
        file2 - The second file to compare
        +
        Returns:
        the result of calling file1's + File.compareTo(File) with file2 as the parameter.
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public File[] sort(File... files)
        +
        Sort an array of files. +

        + This method uses Arrays.sort(Object[], Comparator) + and returns the original array.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted array
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public List<File> sort(List<File> files)
        +
        Sort a List of files. +

        + This method uses Collections.sort(List, Comparator) + and returns the original list.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted list
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        String representation of this file comparator.
        +
        +
        Overrides:
        +
        toString in class Object
        +
        Returns:
        String representation of this file comparator
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/DirectoryFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/DirectoryFileComparator.html new file mode 100644 index 0000000..8969eae --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/DirectoryFileComparator.html @@ -0,0 +1,421 @@ + + + + + +DirectoryFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.comparator
+

Class DirectoryFileComparator

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.comparator.DirectoryFileComparator
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparator<File>
    +
    +
    +
    +
    public class DirectoryFileComparator
    +extends Object
    +implements Serializable
    +
    Compare two files using the File.isDirectory() method. +

    + This comparator can be used to sort lists or arrays by directories and files. +

    + Example of sorting a list of files/directories using the + DIRECTORY_COMPARATOR singleton instance: +

    +       List<File> list = ...
    +       ((AbstractFileComparator) DirectoryFileComparator.DIRECTORY_COMPARATOR).sort(list);
    + 
    +

    + Example of doing a reverse sort of an array of files/directories using the + DIRECTORY_REVERSE singleton instance: +

    +       File[] array = ...
    +       ((AbstractFileComparator) DirectoryFileComparator.DIRECTORY_REVERSE).sort(array);
    + 
    +

    +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: DirectoryFileComparator.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        DIRECTORY_COMPARATOR

        +
        public static final Comparator<File> DIRECTORY_COMPARATOR
        +
        Singleton default comparator instance
        +
      • +
      + + + +
        +
      • +

        DIRECTORY_REVERSE

        +
        public static final Comparator<File> DIRECTORY_REVERSE
        +
        Singleton reverse default comparator instance
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DirectoryFileComparator

        +
        public DirectoryFileComparator()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        compare

        +
        public int compare(File file1,
        +          File file2)
        +
        Compare the two files using the File.isDirectory() method.
        +
        +
        Specified by:
        +
        compare in interface Comparator<File>
        +
        Parameters:
        file1 - The first file to compare
        file2 - The second file to compare
        +
        Returns:
        the result of calling file1's + File.compareTo(File) with file2 as the parameter.
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public File[] sort(File... files)
        +
        Sort an array of files. +

        + This method uses Arrays.sort(Object[], Comparator) + and returns the original array.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted array
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public List<File> sort(List<File> files)
        +
        Sort a List of files. +

        + This method uses Collections.sort(List, Comparator) + and returns the original list.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted list
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        String representation of this file comparator.
        +
        +
        Overrides:
        +
        toString in class Object
        +
        Returns:
        String representation of this file comparator
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/ExtensionFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/ExtensionFileComparator.html new file mode 100644 index 0000000..3806fdc --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/ExtensionFileComparator.html @@ -0,0 +1,508 @@ + + + + + +ExtensionFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.comparator
+

Class ExtensionFileComparator

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.comparator.ExtensionFileComparator
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparator<File>
    +
    +
    +
    +
    public class ExtensionFileComparator
    +extends Object
    +implements Serializable
    +
    Compare the file name extensions for order + (see FilenameUtils.getExtension(String)). +

    + This comparator can be used to sort lists or arrays of files + by their file extension either in a case-sensitive, case-insensitive or + system dependent case sensitive way. A number of singleton instances + are provided for the various case sensitivity options (using IOCase) + and the reverse of those options. +

    + Example of a case-sensitive file extension sort using the + EXTENSION_COMPARATOR singleton instance: +

    +       List<File> list = ...
    +       ((AbstractFileComparator) ExtensionFileComparator.EXTENSION_COMPARATOR).sort(list);
    + 
    +

    + Example of a reverse case-insensitive file extension sort using the + EXTENSION_INSENSITIVE_REVERSE singleton instance: +

    +       File[] array = ...
    +       ((AbstractFileComparator) ExtensionFileComparator.EXTENSION_INSENSITIVE_REVERSE).sort(array);
    + 
    +

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: ExtensionFileComparator.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        EXTENSION_COMPARATOR

        +
        public static final Comparator<File> EXTENSION_COMPARATOR
        +
        Case-sensitive extension comparator instance (see IOCase.SENSITIVE)
        +
      • +
      + + + +
        +
      • +

        EXTENSION_REVERSE

        +
        public static final Comparator<File> EXTENSION_REVERSE
        +
        Reverse case-sensitive extension comparator instance (see IOCase.SENSITIVE)
        +
      • +
      + + + +
        +
      • +

        EXTENSION_INSENSITIVE_COMPARATOR

        +
        public static final Comparator<File> EXTENSION_INSENSITIVE_COMPARATOR
        +
        Case-insensitive extension comparator instance (see IOCase.INSENSITIVE)
        +
      • +
      + + + +
        +
      • +

        EXTENSION_INSENSITIVE_REVERSE

        +
        public static final Comparator<File> EXTENSION_INSENSITIVE_REVERSE
        +
        Reverse case-insensitive extension comparator instance (see IOCase.INSENSITIVE)
        +
      • +
      + + + +
        +
      • +

        EXTENSION_SYSTEM_COMPARATOR

        +
        public static final Comparator<File> EXTENSION_SYSTEM_COMPARATOR
        +
        System sensitive extension comparator instance (see IOCase.SYSTEM)
        +
      • +
      + + + +
        +
      • +

        EXTENSION_SYSTEM_REVERSE

        +
        public static final Comparator<File> EXTENSION_SYSTEM_REVERSE
        +
        Reverse system sensitive path comparator instance (see IOCase.SYSTEM)
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ExtensionFileComparator

        +
        public ExtensionFileComparator()
        +
        Construct a case sensitive file extension comparator instance.
        +
      • +
      + + + +
        +
      • +

        ExtensionFileComparator

        +
        public ExtensionFileComparator(IOCase caseSensitivity)
        +
        Construct a file extension comparator instance with the specified case-sensitivity.
        +
        Parameters:
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        compare

        +
        public int compare(File file1,
        +          File file2)
        +
        Compare the extensions of two files the specified case sensitivity.
        +
        +
        Specified by:
        +
        compare in interface Comparator<File>
        +
        Parameters:
        file1 - The first file to compare
        file2 - The second file to compare
        +
        Returns:
        a negative value if the first file's extension + is less than the second, zero if the extensions are the + same and a positive value if the first files extension + is greater than the second file.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        String representation of this file comparator.
        +
        Returns:
        String representation of this file comparator
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public File[] sort(File... files)
        +
        Sort an array of files. +

        + This method uses Arrays.sort(Object[], Comparator) + and returns the original array.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted array
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public List<File> sort(List<File> files)
        +
        Sort a List of files. +

        + This method uses Collections.sort(List, Comparator) + and returns the original list.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted list
        Since:
        +
        2.0
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/LastModifiedFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/LastModifiedFileComparator.html new file mode 100644 index 0000000..677a3f0 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/LastModifiedFileComparator.html @@ -0,0 +1,425 @@ + + + + + +LastModifiedFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.comparator
+

Class LastModifiedFileComparator

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.comparator.LastModifiedFileComparator
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparator<File>
    +
    +
    +
    +
    public class LastModifiedFileComparator
    +extends Object
    +implements Serializable
    +
    Compare the last modified date/time of two files for order + (see File.lastModified()). +

    + This comparator can be used to sort lists or arrays of files + by their last modified date/time. +

    + Example of sorting a list of files using the + LASTMODIFIED_COMPARATOR singleton instance: +

    +       List<File> list = ...
    +       ((AbstractFileComparator) LastModifiedFileComparator.LASTMODIFIED_COMPARATOR).sort(list);
    + 
    +

    + Example of doing a reverse sort of an array of files using the + LASTMODIFIED_REVERSE singleton instance: +

    +       File[] array = ...
    +       ((AbstractFileComparator) LastModifiedFileComparator.LASTMODIFIED_REVERSE).sort(array);
    + 
    +

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: LastModifiedFileComparator.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        LASTMODIFIED_COMPARATOR

        +
        public static final Comparator<File> LASTMODIFIED_COMPARATOR
        +
        Last modified comparator instance
        +
      • +
      + + + +
        +
      • +

        LASTMODIFIED_REVERSE

        +
        public static final Comparator<File> LASTMODIFIED_REVERSE
        +
        Reverse last modified comparator instance
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        LastModifiedFileComparator

        +
        public LastModifiedFileComparator()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        compare

        +
        public int compare(File file1,
        +          File file2)
        +
        Compare the last the last modified date/time of two files.
        +
        +
        Specified by:
        +
        compare in interface Comparator<File>
        +
        Parameters:
        file1 - The first file to compare
        file2 - The second file to compare
        +
        Returns:
        a negative value if the first file's lastmodified date/time + is less than the second, zero if the lastmodified date/time are the + same and a positive value if the first files lastmodified date/time + is greater than the second file.
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public File[] sort(File... files)
        +
        Sort an array of files. +

        + This method uses Arrays.sort(Object[], Comparator) + and returns the original array.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted array
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public List<File> sort(List<File> files)
        +
        Sort a List of files. +

        + This method uses Collections.sort(List, Comparator) + and returns the original list.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted list
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        String representation of this file comparator.
        +
        +
        Overrides:
        +
        toString in class Object
        +
        Returns:
        String representation of this file comparator
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/NameFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/NameFileComparator.html new file mode 100644 index 0000000..d201855 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/NameFileComparator.html @@ -0,0 +1,507 @@ + + + + + +NameFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.comparator
+

Class NameFileComparator

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.comparator.NameFileComparator
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparator<File>
    +
    +
    +
    +
    public class NameFileComparator
    +extends Object
    +implements Serializable
    +
    Compare the names of two files for order (see File.getName()). +

    + This comparator can be used to sort lists or arrays of files + by their name either in a case-sensitive, case-insensitive or + system dependent case sensitive way. A number of singleton instances + are provided for the various case sensitivity options (using IOCase) + and the reverse of those options. +

    + Example of a case-sensitive file name sort using the + NAME_COMPARATOR singleton instance: +

    +       List<File> list = ...
    +       ((AbstractFileComparator) NameFileComparator.NAME_COMPARATOR).sort(list);
    + 
    +

    + Example of a reverse case-insensitive file name sort using the + NAME_INSENSITIVE_REVERSE singleton instance: +

    +       File[] array = ...
    +       ((AbstractFileComparator) NameFileComparator.NAME_INSENSITIVE_REVERSE).sort(array);
    + 
    +

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: NameFileComparator.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NameFileComparator

        +
        public NameFileComparator()
        +
        Construct a case sensitive file name comparator instance.
        +
      • +
      + + + +
        +
      • +

        NameFileComparator

        +
        public NameFileComparator(IOCase caseSensitivity)
        +
        Construct a file name comparator instance with the specified case-sensitivity.
        +
        Parameters:
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        compare

        +
        public int compare(File file1,
        +          File file2)
        +
        Compare the names of two files with the specified case sensitivity.
        +
        +
        Specified by:
        +
        compare in interface Comparator<File>
        +
        Parameters:
        file1 - The first file to compare
        file2 - The second file to compare
        +
        Returns:
        a negative value if the first file's name + is less than the second, zero if the names are the + same and a positive value if the first files name + is greater than the second file.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        String representation of this file comparator.
        +
        Returns:
        String representation of this file comparator
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public File[] sort(File... files)
        +
        Sort an array of files. +

        + This method uses Arrays.sort(Object[], Comparator) + and returns the original array.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted array
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public List<File> sort(List<File> files)
        +
        Sort a List of files. +

        + This method uses Collections.sort(List, Comparator) + and returns the original list.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted list
        Since:
        +
        2.0
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/PathFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/PathFileComparator.html new file mode 100644 index 0000000..e3464f7 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/PathFileComparator.html @@ -0,0 +1,507 @@ + + + + + +PathFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.comparator
+

Class PathFileComparator

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.comparator.PathFileComparator
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparator<File>
    +
    +
    +
    +
    public class PathFileComparator
    +extends Object
    +implements Serializable
    +
    Compare the path of two files for order (see File.getPath()). +

    + This comparator can be used to sort lists or arrays of files + by their path either in a case-sensitive, case-insensitive or + system dependent case sensitive way. A number of singleton instances + are provided for the various case sensitivity options (using IOCase) + and the reverse of those options. +

    + Example of a case-sensitive file path sort using the + PATH_COMPARATOR singleton instance: +

    +       List<File> list = ...
    +       ((AbstractFileComparator) PathFileComparator.PATH_COMPARATOR).sort(list);
    + 
    +

    + Example of a reverse case-insensitive file path sort using the + PATH_INSENSITIVE_REVERSE singleton instance: +

    +       File[] array = ...
    +       ((AbstractFileComparator) PathFileComparator.PATH_INSENSITIVE_REVERSE).sort(array);
    + 
    +

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: PathFileComparator.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PathFileComparator

        +
        public PathFileComparator()
        +
        Construct a case sensitive file path comparator instance.
        +
      • +
      + + + +
        +
      • +

        PathFileComparator

        +
        public PathFileComparator(IOCase caseSensitivity)
        +
        Construct a file path comparator instance with the specified case-sensitivity.
        +
        Parameters:
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        compare

        +
        public int compare(File file1,
        +          File file2)
        +
        Compare the paths of two files the specified case sensitivity.
        +
        +
        Specified by:
        +
        compare in interface Comparator<File>
        +
        Parameters:
        file1 - The first file to compare
        file2 - The second file to compare
        +
        Returns:
        a negative value if the first file's path + is less than the second, zero if the paths are the + same and a positive value if the first files path + is greater than the second file.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        String representation of this file comparator.
        +
        Returns:
        String representation of this file comparator
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public File[] sort(File... files)
        +
        Sort an array of files. +

        + This method uses Arrays.sort(Object[], Comparator) + and returns the original array.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted array
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public List<File> sort(List<File> files)
        +
        Sort a List of files. +

        + This method uses Collections.sort(List, Comparator) + and returns the original list.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted list
        Since:
        +
        2.0
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/SizeFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/SizeFileComparator.html new file mode 100644 index 0000000..652c7cf --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/SizeFileComparator.html @@ -0,0 +1,486 @@ + + + + + +SizeFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.comparator
+

Class SizeFileComparator

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.comparator.SizeFileComparator
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable, Comparator<File>
    +
    +
    +
    +
    public class SizeFileComparator
    +extends Object
    +implements Serializable
    +
    Compare the length/size of two files for order (see + File.length() and FileUtils.sizeOfDirectory(File)). +

    + This comparator can be used to sort lists or arrays of files + by their length/size. +

    + Example of sorting a list of files using the + SIZE_COMPARATOR singleton instance: +

    +       List<File> list = ...
    +       ((AbstractFileComparator) SizeFileComparator.SIZE_COMPARATOR).sort(list);
    + 
    +

    + Example of doing a reverse sort of an array of files using the + SIZE_REVERSE singleton instance: +

    +       File[] array = ...
    +       ((AbstractFileComparator) SizeFileComparator.SIZE_REVERSE).sort(array);
    + 
    +

    + N.B. Directories are treated as zero size unless + sumDirectoryContents is true.

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: SizeFileComparator.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        SIZE_COMPARATOR

        +
        public static final Comparator<File> SIZE_COMPARATOR
        +
        Size comparator instance - directories are treated as zero size
        +
      • +
      + + + +
        +
      • +

        SIZE_REVERSE

        +
        public static final Comparator<File> SIZE_REVERSE
        +
        Reverse size comparator instance - directories are treated as zero size
        +
      • +
      + + + + + + + + +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SizeFileComparator

        +
        public SizeFileComparator()
        +
        Construct a file size comparator instance (directories treated as zero size).
        +
      • +
      + + + +
        +
      • +

        SizeFileComparator

        +
        public SizeFileComparator(boolean sumDirectoryContents)
        +
        Construct a file size comparator instance specifying whether the size of + the directory contents should be aggregated. +

        + If the sumDirectoryContents is true The size of + directories is calculated using FileUtils.sizeOfDirectory(File).

        +
        Parameters:
        sumDirectoryContents - true if the sum of the directoryies contents + should be calculated, otherwise false if directories should be treated + as size zero (see FileUtils.sizeOfDirectory(File)).
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        compare

        +
        public int compare(File file1,
        +          File file2)
        +
        Compare the length of two files.
        +
        +
        Specified by:
        +
        compare in interface Comparator<File>
        +
        Parameters:
        file1 - The first file to compare
        file2 - The second file to compare
        +
        Returns:
        a negative value if the first file's length + is less than the second, zero if the lengths are the + same and a positive value if the first files length + is greater than the second file.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        String representation of this file comparator.
        +
        Returns:
        String representation of this file comparator
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public File[] sort(File... files)
        +
        Sort an array of files. +

        + This method uses Arrays.sort(Object[], Comparator) + and returns the original array.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted array
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        sort

        +
        public List<File> sort(List<File> files)
        +
        Sort a List of files. +

        + This method uses Collections.sort(List, Comparator) + and returns the original list.

        +
        Parameters:
        files - The files to sort, may be null
        +
        Returns:
        The sorted list
        Since:
        +
        2.0
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/CompositeFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/CompositeFileComparator.html new file mode 100644 index 0000000..c3222d5 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/CompositeFileComparator.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.comparator.CompositeFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.comparator.CompositeFileComparator

+
+
No usage of org.apache.commons.io.comparator.CompositeFileComparator
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/DefaultFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/DefaultFileComparator.html new file mode 100644 index 0000000..85b67e1 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/DefaultFileComparator.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.comparator.DefaultFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.comparator.DefaultFileComparator

+
+
No usage of org.apache.commons.io.comparator.DefaultFileComparator
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/DirectoryFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/DirectoryFileComparator.html new file mode 100644 index 0000000..86a37e3 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/DirectoryFileComparator.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.comparator.DirectoryFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.comparator.DirectoryFileComparator

+
+
No usage of org.apache.commons.io.comparator.DirectoryFileComparator
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/ExtensionFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/ExtensionFileComparator.html new file mode 100644 index 0000000..2964be6 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/ExtensionFileComparator.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.comparator.ExtensionFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.comparator.ExtensionFileComparator

+
+
No usage of org.apache.commons.io.comparator.ExtensionFileComparator
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/LastModifiedFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/LastModifiedFileComparator.html new file mode 100644 index 0000000..4797665 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/LastModifiedFileComparator.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.comparator.LastModifiedFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.comparator.LastModifiedFileComparator

+
+
No usage of org.apache.commons.io.comparator.LastModifiedFileComparator
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/NameFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/NameFileComparator.html new file mode 100644 index 0000000..c56e28c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/NameFileComparator.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.comparator.NameFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.comparator.NameFileComparator

+
+
No usage of org.apache.commons.io.comparator.NameFileComparator
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/PathFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/PathFileComparator.html new file mode 100644 index 0000000..8d6d045 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/PathFileComparator.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.comparator.PathFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.comparator.PathFileComparator

+
+
No usage of org.apache.commons.io.comparator.PathFileComparator
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/SizeFileComparator.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/SizeFileComparator.html new file mode 100644 index 0000000..4acbc13 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/class-use/SizeFileComparator.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.comparator.SizeFileComparator (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.comparator.SizeFileComparator

+
+
No usage of org.apache.commons.io.comparator.SizeFileComparator
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-frame.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-frame.html new file mode 100644 index 0000000..48570e6 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-frame.html @@ -0,0 +1,25 @@ + + + + + +org.apache.commons.io.comparator (Apache Commons IO 2.5 API) + + + +

org.apache.commons.io.comparator

+ + + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-summary.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-summary.html new file mode 100644 index 0000000..0044608 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-summary.html @@ -0,0 +1,355 @@ + + + + + +org.apache.commons.io.comparator (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Package org.apache.commons.io.comparator

+
+
This package provides various Comparator implementations +for Files.
+
+

See: Description

+
+
+ + + + +

Package org.apache.commons.io.comparator Description

+

This package provides various Comparator implementations +for Files. +

+

Sorting

+

+ All the compartors include convenience utility sort(File...) and + sort(List) methods. +

+

+ For example, to sort the files in a directory by name: +

+
+        File[] files = dir.listFiles();
+        NameFileComparator.NAME_COMPARATOR.sort(files);
+  
+

+ ...alternatively you can do this in one line: +

+

+

+        File[] files = NameFileComparator.NAME_COMPARATOR.sort(dir.listFiles());
+  
+

+ +

Composite Comparator

+

+ The CompositeFileComparator can be used + to compare (and sort lists or arrays of files) by combining a number other comparators. +

+

+ For example, to sort an array of files by type (i.e. directory or file) + and then by name: +

+

+

+        CompositeFileComparator comparator =
+                        new CompositeFileComparator(
+                                    DirectoryFileComparator.DIRECTORY_COMPARATOR,
+                                    NameFileComparator.NAME_COMPARATOR);
+        File[] files = dir.listFiles();
+        comparator.sort(files);
+  
+

+ +

Singleton Instances (thread-safe)

+

+ The Comparator implementations have some convenience + singleton(thread-safe) instances ready to use: +

+

+
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-tree.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-tree.html new file mode 100644 index 0000000..3eb671b --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-tree.html @@ -0,0 +1,135 @@ + + + + + +org.apache.commons.io.comparator Class Hierarchy (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For Package org.apache.commons.io.comparator

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-use.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-use.html new file mode 100644 index 0000000..8058348 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/comparator/package-use.html @@ -0,0 +1,115 @@ + + + + + +Uses of Package org.apache.commons.io.comparator (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Package
org.apache.commons.io.comparator

+
+
No usage of org.apache.commons.io.comparator
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/AbstractFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/AbstractFileFilter.html new file mode 100644 index 0000000..b53c303 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/AbstractFileFilter.html @@ -0,0 +1,329 @@ + + + + + +AbstractFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class AbstractFileFilter

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.filefilter.AbstractFileFilter
    • +
    +
  • +
+
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        AbstractFileFilter

        +
        public AbstractFileFilter()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the File should be accepted by this filter.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if this file matches the test
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File dir,
        +             String name)
        +
        Checks to see if the File should be accepted by this filter.
        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Parameters:
        dir - the directory File to check
        name - the filename within the directory to check
        +
        Returns:
        true if this file matches the test
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Provide a String representaion of this file filter.
        +
        +
        Overrides:
        +
        toString in class Object
        +
        Returns:
        a String representaion
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/AgeFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/AgeFileFilter.html new file mode 100644 index 0000000..1ba3200 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/AgeFileFilter.html @@ -0,0 +1,447 @@ + + + + + +AgeFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class AgeFileFilter

+
+
+ +
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      AgeFileFilter(Date cutoffDate) +
      Constructs a new age file filter for files older than (at or before) + a certain cutoff date.
      +
      AgeFileFilter(Date cutoffDate, + boolean acceptOlder) +
      Constructs a new age file filter for files on any one side + of a certain cutoff date.
      +
      AgeFileFilter(File cutoffReference) +
      Constructs a new age file filter for files older than (at or before) + a certain File (whose last modification time will be used as reference).
      +
      AgeFileFilter(File cutoffReference, + boolean acceptOlder) +
      Constructs a new age file filter for files on any one side + of a certain File (whose last modification time will be used as + reference).
      +
      AgeFileFilter(long cutoff) +
      Constructs a new age file filter for files equal to or older than + a certain cutoff
      +
      AgeFileFilter(long cutoff, + boolean acceptOlder) +
      Constructs a new age file filter for files on any one side + of a certain cutoff.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        AgeFileFilter

        +
        public AgeFileFilter(long cutoff)
        +
        Constructs a new age file filter for files equal to or older than + a certain cutoff
        +
        Parameters:
        cutoff - the threshold age of the files
        +
      • +
      + + + +
        +
      • +

        AgeFileFilter

        +
        public AgeFileFilter(long cutoff,
        +             boolean acceptOlder)
        +
        Constructs a new age file filter for files on any one side + of a certain cutoff.
        +
        Parameters:
        cutoff - the threshold age of the files
        acceptOlder - if true, older files (at or before the cutoff) + are accepted, else newer ones (after the cutoff).
        +
      • +
      + + + +
        +
      • +

        AgeFileFilter

        +
        public AgeFileFilter(Date cutoffDate)
        +
        Constructs a new age file filter for files older than (at or before) + a certain cutoff date.
        +
        Parameters:
        cutoffDate - the threshold age of the files
        +
      • +
      + + + +
        +
      • +

        AgeFileFilter

        +
        public AgeFileFilter(Date cutoffDate,
        +             boolean acceptOlder)
        +
        Constructs a new age file filter for files on any one side + of a certain cutoff date.
        +
        Parameters:
        cutoffDate - the threshold age of the files
        acceptOlder - if true, older files (at or before the cutoff) + are accepted, else newer ones (after the cutoff).
        +
      • +
      + + + +
        +
      • +

        AgeFileFilter

        +
        public AgeFileFilter(File cutoffReference)
        +
        Constructs a new age file filter for files older than (at or before) + a certain File (whose last modification time will be used as reference).
        +
        Parameters:
        cutoffReference - the file whose last modification + time is usesd as the threshold age of the files
        +
      • +
      + + + +
        +
      • +

        AgeFileFilter

        +
        public AgeFileFilter(File cutoffReference,
        +             boolean acceptOlder)
        +
        Constructs a new age file filter for files on any one side + of a certain File (whose last modification time will be used as + reference).
        +
        Parameters:
        cutoffReference - the file whose last modification + time is usesd as the threshold age of the files
        acceptOlder - if true, older files (at or before the cutoff) + are accepted, else newer ones (after the cutoff).
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the last modification of the file matches cutoff + favorably. +

        + If last modification time equals cutoff and newer files are required, + file IS NOT selected. + If last modification time equals cutoff and older files are required, + file IS selected.

        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if the filename matches
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Provide a String representaion of this file filter.
        +
        +
        Overrides:
        +
        toString in class AbstractFileFilter
        +
        Returns:
        a String representaion
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/AndFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/AndFileFilter.html new file mode 100644 index 0000000..e6a7e13 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/AndFileFilter.html @@ -0,0 +1,466 @@ + + + + + +AndFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class AndFileFilter

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        AndFileFilter

        +
        public AndFileFilter()
        +
        Constructs a new instance of AndFileFilter.
        +
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        AndFileFilter

        +
        public AndFileFilter(List<IOFileFilter> fileFilters)
        +
        Constructs a new instance of AndFileFilter + with the specified list of filters.
        +
        Parameters:
        fileFilters - a List of IOFileFilter instances, copied, null ignored
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        AndFileFilter

        +
        public AndFileFilter(IOFileFilter filter1,
        +             IOFileFilter filter2)
        +
        Constructs a new file filter that ANDs the result of two other filters.
        +
        Parameters:
        filter1 - the first filter, must not be null
        filter2 - the second filter, must not be null
        +
        Throws:
        +
        IllegalArgumentException - if either filter is null
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        addFileFilter

        +
        public void addFileFilter(IOFileFilter ioFileFilter)
        +
        Adds the specified file filter to the list of file filters at the end of + the list.
        +
        +
        Specified by:
        +
        addFileFilter in interface ConditionalFileFilter
        +
        Parameters:
        ioFileFilter - the filter to be added
        +
      • +
      + + + + + + + +
        +
      • +

        removeFileFilter

        +
        public boolean removeFileFilter(IOFileFilter ioFileFilter)
        +
        Removes the specified file filter.
        +
        +
        Specified by:
        +
        removeFileFilter in interface ConditionalFileFilter
        +
        Parameters:
        ioFileFilter - filter to be removed
        +
        Returns:
        true if the filter was found in the list, + false otherwise
        +
      • +
      + + + +
        +
      • +

        setFileFilters

        +
        public void setFileFilters(List<IOFileFilter> fileFilters)
        +
        Sets the list of file filters, replacing any previously configured + file filters on this filter.
        +
        +
        Specified by:
        +
        setFileFilters in interface ConditionalFileFilter
        +
        Parameters:
        fileFilters - the list of filters
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the File should be accepted by this filter.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if this file matches the test
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file,
        +             String name)
        +
        Checks to see if the File should be accepted by this filter.
        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the directory File to check
        name - the filename within the directory to check
        +
        Returns:
        true if this file matches the test
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Provide a String representaion of this file filter.
        +
        +
        Overrides:
        +
        toString in class AbstractFileFilter
        +
        Returns:
        a String representaion
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/CanReadFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/CanReadFileFilter.html new file mode 100644 index 0000000..fe7b006 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/CanReadFileFilter.html @@ -0,0 +1,403 @@ + + + + + +CanReadFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class CanReadFileFilter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FileFilter, FilenameFilter, Serializable, IOFileFilter
    +
    +
    +
    +
    public class CanReadFileFilter
    +extends AbstractFileFilter
    +implements Serializable
    +
    This filter accepts Files that can be read. +

    + Example, showing how to print out a list of the + current directory's readable files: + +

    + File dir = new File(".");
    + String[] files = dir.list( CanReadFileFilter.CAN_READ );
    + for ( int i = 0; i < files.length; i++ ) {
    +     System.out.println(files[i]);
    + }
    + 
    + +

    + Example, showing how to print out a list of the + current directory's un-readable files: + +

    + File dir = new File(".");
    + String[] files = dir.list( CanReadFileFilter.CANNOT_READ );
    + for ( int i = 0; i < files.length; i++ ) {
    +     System.out.println(files[i]);
    + }
    + 
    + +

    + Example, showing how to print out a list of the + current directory's read-only files: + +

    + File dir = new File(".");
    + String[] files = dir.list( CanReadFileFilter.READ_ONLY );
    + for ( int i = 0; i < files.length; i++ ) {
    +     System.out.println(files[i]);
    + }
    + 
    +
    Since:
    +
    1.3
    +
    Version:
    +
    $Id: CanReadFileFilter.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        CAN_READ

        +
        public static final IOFileFilter CAN_READ
        +
        Singleton instance of readable filter
        +
      • +
      + + + +
        +
      • +

        CANNOT_READ

        +
        public static final IOFileFilter CANNOT_READ
        +
        Singleton instance of not readable filter
        +
      • +
      + + + +
        +
      • +

        READ_ONLY

        +
        public static final IOFileFilter READ_ONLY
        +
        Singleton instance of read-only filter
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CanReadFileFilter

        +
        protected CanReadFileFilter()
        +
        Restrictive consructor.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the file can be read.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File to check.
        +
        Returns:
        true if the file can be + read, otherwise false.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/CanWriteFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/CanWriteFileFilter.html new file mode 100644 index 0000000..250097d --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/CanWriteFileFilter.html @@ -0,0 +1,379 @@ + + + + + +CanWriteFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class CanWriteFileFilter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FileFilter, FilenameFilter, Serializable, IOFileFilter
    +
    +
    +
    +
    public class CanWriteFileFilter
    +extends AbstractFileFilter
    +implements Serializable
    +
    This filter accepts Files that can be written to. +

    + Example, showing how to print out a list of the + current directory's writable files: + +

    + File dir = new File(".");
    + String[] files = dir.list( CanWriteFileFilter.CAN_WRITE );
    + for ( int i = 0; i < files.length; i++ ) {
    +     System.out.println(files[i]);
    + }
    + 
    + +

    + Example, showing how to print out a list of the + current directory's un-writable files: + +

    + File dir = new File(".");
    + String[] files = dir.list( CanWriteFileFilter.CANNOT_WRITE );
    + for ( int i = 0; i < files.length; i++ ) {
    +     System.out.println(files[i]);
    + }
    + 
    + +

    + N.B. For read-only files, use + CanReadFileFilter.READ_ONLY.

    +
    Since:
    +
    1.3
    +
    Version:
    +
    $Id: CanWriteFileFilter.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        CAN_WRITE

        +
        public static final IOFileFilter CAN_WRITE
        +
        Singleton instance of writable filter
        +
      • +
      + + + +
        +
      • +

        CANNOT_WRITE

        +
        public static final IOFileFilter CANNOT_WRITE
        +
        Singleton instance of not writable filter
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CanWriteFileFilter

        +
        protected CanWriteFileFilter()
        +
        Restrictive consructor.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the file can be written to.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if the file can be + written to, otherwise false.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/ConditionalFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/ConditionalFileFilter.html new file mode 100644 index 0000000..d919c0f --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/ConditionalFileFilter.html @@ -0,0 +1,280 @@ + + + + + +ConditionalFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Interface ConditionalFileFilter

+
+
+
+
    +
  • +
    +
    All Known Implementing Classes:
    +
    AndFileFilter, OrFileFilter
    +
    +
    +
    +
    public interface ConditionalFileFilter
    +
    Defines operations for conditional file filters.
    +
    Since:
    +
    1.1
    +
    Version:
    +
    $Id: ConditionalFileFilter.java 1307462 2012-03-30 15:13:11Z ggregory $
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidaddFileFilter(IOFileFilter ioFileFilter) +
      Adds the specified file filter to the list of file filters at the end of + the list.
      +
      List<IOFileFilter>getFileFilters() +
      Returns this conditional file filter's list of file filters.
      +
      booleanremoveFileFilter(IOFileFilter ioFileFilter) +
      Removes the specified file filter.
      +
      voidsetFileFilters(List<IOFileFilter> fileFilters) +
      Sets the list of file filters, replacing any previously configured + file filters on this filter.
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        addFileFilter

        +
        void addFileFilter(IOFileFilter ioFileFilter)
        +
        Adds the specified file filter to the list of file filters at the end of + the list.
        +
        Parameters:
        ioFileFilter - the filter to be added
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        getFileFilters

        +
        List<IOFileFilter> getFileFilters()
        +
        Returns this conditional file filter's list of file filters.
        +
        Returns:
        the file filter list
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        removeFileFilter

        +
        boolean removeFileFilter(IOFileFilter ioFileFilter)
        +
        Removes the specified file filter.
        +
        Parameters:
        ioFileFilter - filter to be removed
        +
        Returns:
        true if the filter was found in the list, + false otherwise
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        setFileFilters

        +
        void setFileFilters(List<IOFileFilter> fileFilters)
        +
        Sets the list of file filters, replacing any previously configured + file filters on this filter.
        +
        Parameters:
        fileFilters - the list of filters
        Since:
        +
        1.1
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/DelegateFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/DelegateFileFilter.html new file mode 100644 index 0000000..ed94394 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/DelegateFileFilter.html @@ -0,0 +1,353 @@ + + + + + +DelegateFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class DelegateFileFilter

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DelegateFileFilter

        +
        public DelegateFileFilter(FilenameFilter filter)
        +
        Constructs a delegate file filter around an existing FilenameFilter.
        +
        Parameters:
        filter - the filter to decorate
        +
      • +
      + + + +
        +
      • +

        DelegateFileFilter

        +
        public DelegateFileFilter(FileFilter filter)
        +
        Constructs a delegate file filter around an existing FileFilter.
        +
        Parameters:
        filter - the filter to decorate
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/DirectoryFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/DirectoryFileFilter.html new file mode 100644 index 0000000..ddcec4b --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/DirectoryFileFilter.html @@ -0,0 +1,368 @@ + + + + + +DirectoryFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class DirectoryFileFilter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FileFilter, FilenameFilter, Serializable, IOFileFilter
    +
    +
    +
    +
    public class DirectoryFileFilter
    +extends AbstractFileFilter
    +implements Serializable
    +
    This filter accepts Files that are directories. +

    + For example, here is how to print out a list of the + current directory's subdirectories: + +

    + File dir = new File(".");
    + String[] files = dir.list( DirectoryFileFilter.INSTANCE );
    + for ( int i = 0; i < files.length; i++ ) {
    +     System.out.println(files[i]);
    + }
    + 
    +
    Since:
    +
    1.0
    +
    Version:
    +
    $Id: DirectoryFileFilter.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    FileFilterUtils.directoryFileFilter(), +Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        DIRECTORY

        +
        public static final IOFileFilter DIRECTORY
        +
        Singleton instance of directory filter.
        +
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        INSTANCE

        +
        public static final IOFileFilter INSTANCE
        +
        Singleton instance of directory filter. + Please use the identical DirectoryFileFilter.DIRECTORY constant. + The new name is more JDK 1.5 friendly as it doesn't clash with other + values when using static imports.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DirectoryFileFilter

        +
        protected DirectoryFileFilter()
        +
        Restrictive consructor.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the file is a directory.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if the file is a directory
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/EmptyFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/EmptyFileFilter.html new file mode 100644 index 0000000..21cd2d9 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/EmptyFileFilter.html @@ -0,0 +1,378 @@ + + + + + +EmptyFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class EmptyFileFilter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FileFilter, FilenameFilter, Serializable, IOFileFilter
    +
    +
    +
    +
    public class EmptyFileFilter
    +extends AbstractFileFilter
    +implements Serializable
    +
    This filter accepts files or directories that are empty. +

    + If the File is a directory it checks that + it contains no files. +

    + Example, showing how to print out a list of the + current directory's empty files/directories: + +

    + File dir = new File(".");
    + String[] files = dir.list( EmptyFileFilter.EMPTY );
    + for ( int i = 0; i < files.length; i++ ) {
    +     System.out.println(files[i]);
    + }
    + 
    + +

    + Example, showing how to print out a list of the + current directory's non-empty files/directories: + +

    + File dir = new File(".");
    + String[] files = dir.list( EmptyFileFilter.NOT_EMPTY );
    + for ( int i = 0; i < files.length; i++ ) {
    +     System.out.println(files[i]);
    + }
    + 
    +
    Since:
    +
    1.3
    +
    Version:
    +
    $Id: EmptyFileFilter.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        EMPTY

        +
        public static final IOFileFilter EMPTY
        +
        Singleton instance of empty filter
        +
      • +
      + + + +
        +
      • +

        NOT_EMPTY

        +
        public static final IOFileFilter NOT_EMPTY
        +
        Singleton instance of not-empty filter
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        EmptyFileFilter

        +
        protected EmptyFileFilter()
        +
        Restrictive consructor.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the file is empty.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the file or directory to check
        +
        Returns:
        true if the file or directory + is empty, otherwise false.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/FalseFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/FalseFileFilter.html new file mode 100644 index 0000000..dc8dbb0 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/FalseFileFilter.html @@ -0,0 +1,368 @@ + + + + + +FalseFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class FalseFileFilter

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        FALSE

        +
        public static final IOFileFilter FALSE
        +
        Singleton instance of false filter.
        +
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        INSTANCE

        +
        public static final IOFileFilter INSTANCE
        +
        Singleton instance of false filter. + Please use the identical FalseFileFilter.FALSE constant. + The new name is more JDK 1.5 friendly as it doesn't clash with other + values when using static imports.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FalseFileFilter

        +
        protected FalseFileFilter()
        +
        Restrictive consructor.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Returns false.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Parameters:
        file - the file to check (ignored)
        +
        Returns:
        false
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File dir,
        +             String name)
        +
        Returns false.
        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Parameters:
        dir - the directory to check (ignored)
        name - the filename (ignored)
        +
        Returns:
        false
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/FileFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/FileFileFilter.html new file mode 100644 index 0000000..71b691e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/FileFileFilter.html @@ -0,0 +1,347 @@ + + + + + +FileFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class FileFileFilter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FileFilter, FilenameFilter, Serializable, IOFileFilter
    +
    +
    +
    +
    public class FileFileFilter
    +extends AbstractFileFilter
    +implements Serializable
    +
    This filter accepts Files that are files (not directories). +

    + For example, here is how to print out a list of the real files + within the current directory: + +

    + File dir = new File(".");
    + String[] files = dir.list( FileFileFilter.FILE );
    + for ( int i = 0; i < files.length; i++ ) {
    +     System.out.println(files[i]);
    + }
    + 
    +
    Since:
    +
    1.3
    +
    Version:
    +
    $Id: FileFileFilter.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    FileFilterUtils.fileFileFilter(), +Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        FILE

        +
        public static final IOFileFilter FILE
        +
        Singleton instance of file filter
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileFileFilter

        +
        protected FileFileFilter()
        +
        Restrictive consructor.
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/FileFilterUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/FileFilterUtils.html new file mode 100644 index 0000000..d3d6576 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/FileFilterUtils.html @@ -0,0 +1,1259 @@ + + + + + +FileFilterUtils (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class FileFilterUtils

+
+
+ +
+
    +
  • +
    +
    +
    public class FileFilterUtils
    +extends Object
    +
    Useful utilities for working with file filters. It provides access to all + file filter implementations in this package so you don't have to import + every class you use.
    +
    Since:
    +
    1.0
    +
    Version:
    +
    $Id: FileFilterUtils.java 1471767 2013-04-24 23:24:19Z sebb $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileFilterUtils

        +
        public FileFilterUtils()
        +
        FileFilterUtils is not normally instantiated.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        filter

        +
        public static File[] filter(IOFileFilter filter,
        +            File... files)
        +

        + Applies an IOFileFilter to the provided File + objects. The resulting array is a subset of the original file list that + matches the provided filter. +

        + +

        + The Set returned by this method is not guaranteed to be thread safe. +

        + +
        + Set<File> allFiles = ...
        + Set<File> javaFiles = FileFilterUtils.filterSet(allFiles,
        +     FileFilterUtils.suffixFileFilter(".java"));
        + 
        +
        Parameters:
        filter - the filter to apply to the set of files.
        files - the array of files to apply the filter to.
        +
        Returns:
        a subset of files that is accepted by the + file filter.
        +
        Throws:
        +
        IllegalArgumentException - if the filter is null + or files contains a null value.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        filter

        +
        public static File[] filter(IOFileFilter filter,
        +            Iterable<File> files)
        +

        + Applies an IOFileFilter to the provided File + objects. The resulting array is a subset of the original file list that + matches the provided filter. +

        + +

        + The Set returned by this method is not guaranteed to be thread safe. +

        + +
        + Set<File> allFiles = ...
        + Set<File> javaFiles = FileFilterUtils.filterSet(allFiles,
        +     FileFilterUtils.suffixFileFilter(".java"));
        + 
        +
        Parameters:
        filter - the filter to apply to the set of files.
        files - the array of files to apply the filter to.
        +
        Returns:
        a subset of files that is accepted by the + file filter.
        +
        Throws:
        +
        IllegalArgumentException - if the filter is null + or files contains a null value.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        filterList

        +
        public static List<File> filterList(IOFileFilter filter,
        +                    Iterable<File> files)
        +

        + Applies an IOFileFilter to the provided File + objects. The resulting list is a subset of the original files that + matches the provided filter. +

        + +

        + The List returned by this method is not guaranteed to be thread safe. +

        + +
        + List<File> filesAndDirectories = ...
        + List<File> directories = FileFilterUtils.filterList(filesAndDirectories,
        +     FileFilterUtils.directoryFileFilter());
        + 
        +
        Parameters:
        filter - the filter to apply to each files in the list.
        files - the collection of files to apply the filter to.
        +
        Returns:
        a subset of files that is accepted by the + file filter.
        +
        Throws:
        +
        IllegalArgumentException - if the filter is null + or files contains a null value.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        filterList

        +
        public static List<File> filterList(IOFileFilter filter,
        +                    File... files)
        +

        + Applies an IOFileFilter to the provided File + objects. The resulting list is a subset of the original files that + matches the provided filter. +

        + +

        + The List returned by this method is not guaranteed to be thread safe. +

        + +
        + List<File> filesAndDirectories = ...
        + List<File> directories = FileFilterUtils.filterList(filesAndDirectories,
        +     FileFilterUtils.directoryFileFilter());
        + 
        +
        Parameters:
        filter - the filter to apply to each files in the list.
        files - the collection of files to apply the filter to.
        +
        Returns:
        a subset of files that is accepted by the + file filter.
        +
        Throws:
        +
        IllegalArgumentException - if the filter is null + or files contains a null value.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        filterSet

        +
        public static Set<File> filterSet(IOFileFilter filter,
        +                  File... files)
        +

        + Applies an IOFileFilter to the provided File + objects. The resulting set is a subset of the original file list that + matches the provided filter. +

        + +

        + The Set returned by this method is not guaranteed to be thread safe. +

        + +
        + Set<File> allFiles = ...
        + Set<File> javaFiles = FileFilterUtils.filterSet(allFiles,
        +     FileFilterUtils.suffixFileFilter(".java"));
        + 
        +
        Parameters:
        filter - the filter to apply to the set of files.
        files - the collection of files to apply the filter to.
        +
        Returns:
        a subset of files that is accepted by the + file filter.
        +
        Throws:
        +
        IllegalArgumentException - if the filter is null + or files contains a null value.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        filterSet

        +
        public static Set<File> filterSet(IOFileFilter filter,
        +                  Iterable<File> files)
        +

        + Applies an IOFileFilter to the provided File + objects. The resulting set is a subset of the original file list that + matches the provided filter. +

        + +

        + The Set returned by this method is not guaranteed to be thread safe. +

        + +
        + Set<File> allFiles = ...
        + Set<File> javaFiles = FileFilterUtils.filterSet(allFiles,
        +     FileFilterUtils.suffixFileFilter(".java"));
        + 
        +
        Parameters:
        filter - the filter to apply to the set of files.
        files - the collection of files to apply the filter to.
        +
        Returns:
        a subset of files that is accepted by the + file filter.
        +
        Throws:
        +
        IllegalArgumentException - if the filter is null + or files contains a null value.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        prefixFileFilter

        +
        public static IOFileFilter prefixFileFilter(String prefix)
        +
        Returns a filter that returns true if the filename starts with the specified text.
        +
        Parameters:
        prefix - the filename prefix
        +
        Returns:
        a prefix checking filter
        See Also:
        PrefixFileFilter
        +
      • +
      + + + +
        +
      • +

        prefixFileFilter

        +
        public static IOFileFilter prefixFileFilter(String prefix,
        +                            IOCase caseSensitivity)
        +
        Returns a filter that returns true if the filename starts with the specified text.
        +
        Parameters:
        prefix - the filename prefix
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Returns:
        a prefix checking filter
        Since:
        +
        2.0
        +
        See Also:
        PrefixFileFilter
        +
      • +
      + + + +
        +
      • +

        suffixFileFilter

        +
        public static IOFileFilter suffixFileFilter(String suffix)
        +
        Returns a filter that returns true if the filename ends with the specified text.
        +
        Parameters:
        suffix - the filename suffix
        +
        Returns:
        a suffix checking filter
        See Also:
        SuffixFileFilter
        +
      • +
      + + + +
        +
      • +

        suffixFileFilter

        +
        public static IOFileFilter suffixFileFilter(String suffix,
        +                            IOCase caseSensitivity)
        +
        Returns a filter that returns true if the filename ends with the specified text.
        +
        Parameters:
        suffix - the filename suffix
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Returns:
        a suffix checking filter
        Since:
        +
        2.0
        +
        See Also:
        SuffixFileFilter
        +
      • +
      + + + +
        +
      • +

        nameFileFilter

        +
        public static IOFileFilter nameFileFilter(String name)
        +
        Returns a filter that returns true if the filename matches the specified text.
        +
        Parameters:
        name - the filename
        +
        Returns:
        a name checking filter
        See Also:
        NameFileFilter
        +
      • +
      + + + +
        +
      • +

        nameFileFilter

        +
        public static IOFileFilter nameFileFilter(String name,
        +                          IOCase caseSensitivity)
        +
        Returns a filter that returns true if the filename matches the specified text.
        +
        Parameters:
        name - the filename
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Returns:
        a name checking filter
        Since:
        +
        2.0
        +
        See Also:
        NameFileFilter
        +
      • +
      + + + +
        +
      • +

        directoryFileFilter

        +
        public static IOFileFilter directoryFileFilter()
        +
        Returns a filter that checks if the file is a directory.
        +
        Returns:
        file filter that accepts only directories and not files
        See Also:
        DirectoryFileFilter.DIRECTORY
        +
      • +
      + + + +
        +
      • +

        fileFileFilter

        +
        public static IOFileFilter fileFileFilter()
        +
        Returns a filter that checks if the file is a file (and not a directory).
        +
        Returns:
        file filter that accepts only files and not directories
        See Also:
        FileFileFilter.FILE
        +
      • +
      + + + + + + + + + + + +
        +
      • +

        and

        +
        public static IOFileFilter and(IOFileFilter... filters)
        +
        Returns a filter that ANDs the specified filters.
        +
        Parameters:
        filters - the IOFileFilters that will be ANDed together.
        +
        Returns:
        a filter that ANDs the specified filters
        +
        Throws:
        +
        IllegalArgumentException - if the filters are null or contain a + null value.
        Since:
        +
        2.0
        +
        See Also:
        AndFileFilter
        +
      • +
      + + + +
        +
      • +

        or

        +
        public static IOFileFilter or(IOFileFilter... filters)
        +
        Returns a filter that ORs the specified filters.
        +
        Parameters:
        filters - the IOFileFilters that will be ORed together.
        +
        Returns:
        a filter that ORs the specified filters
        +
        Throws:
        +
        IllegalArgumentException - if the filters are null or contain a + null value.
        Since:
        +
        2.0
        +
        See Also:
        OrFileFilter
        +
      • +
      + + + +
        +
      • +

        toList

        +
        public static List<IOFileFilter> toList(IOFileFilter... filters)
        +
        Create a List of file filters.
        +
        Parameters:
        filters - The file filters
        +
        Returns:
        The list of file filters
        +
        Throws:
        +
        IllegalArgumentException - if the filters are null or contain a + null value.
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        notFileFilter

        +
        public static IOFileFilter notFileFilter(IOFileFilter filter)
        +
        Returns a filter that NOTs the specified filter.
        +
        Parameters:
        filter - the filter to invert
        +
        Returns:
        a filter that NOTs the specified filter
        See Also:
        NotFileFilter
        +
      • +
      + + + +
        +
      • +

        trueFileFilter

        +
        public static IOFileFilter trueFileFilter()
        +
        Returns a filter that always returns true.
        +
        Returns:
        a true filter
        See Also:
        TrueFileFilter.TRUE
        +
      • +
      + + + +
        +
      • +

        falseFileFilter

        +
        public static IOFileFilter falseFileFilter()
        +
        Returns a filter that always returns false.
        +
        Returns:
        a false filter
        See Also:
        FalseFileFilter.FALSE
        +
      • +
      + + + +
        +
      • +

        asFileFilter

        +
        public static IOFileFilter asFileFilter(FileFilter filter)
        +
        Returns an IOFileFilter that wraps the + FileFilter instance.
        +
        Parameters:
        filter - the filter to be wrapped
        +
        Returns:
        a new filter that implements IOFileFilter
        See Also:
        DelegateFileFilter
        +
      • +
      + + + +
        +
      • +

        asFileFilter

        +
        public static IOFileFilter asFileFilter(FilenameFilter filter)
        +
        Returns an IOFileFilter that wraps the + FilenameFilter instance.
        +
        Parameters:
        filter - the filter to be wrapped
        +
        Returns:
        a new filter that implements IOFileFilter
        See Also:
        DelegateFileFilter
        +
      • +
      + + + +
        +
      • +

        ageFileFilter

        +
        public static IOFileFilter ageFileFilter(long cutoff)
        +
        Returns a filter that returns true if the file was last modified after + the specified cutoff time.
        +
        Parameters:
        cutoff - the time threshold
        +
        Returns:
        an appropriately configured age file filter
        Since:
        +
        1.2
        +
        See Also:
        AgeFileFilter
        +
      • +
      + + + +
        +
      • +

        ageFileFilter

        +
        public static IOFileFilter ageFileFilter(long cutoff,
        +                         boolean acceptOlder)
        +
        Returns a filter that filters files based on a cutoff time.
        +
        Parameters:
        cutoff - the time threshold
        acceptOlder - if true, older files get accepted, if false, newer
        +
        Returns:
        an appropriately configured age file filter
        Since:
        +
        1.2
        +
        See Also:
        AgeFileFilter
        +
      • +
      + + + +
        +
      • +

        ageFileFilter

        +
        public static IOFileFilter ageFileFilter(Date cutoffDate)
        +
        Returns a filter that returns true if the file was last modified after + the specified cutoff date.
        +
        Parameters:
        cutoffDate - the time threshold
        +
        Returns:
        an appropriately configured age file filter
        Since:
        +
        1.2
        +
        See Also:
        AgeFileFilter
        +
      • +
      + + + +
        +
      • +

        ageFileFilter

        +
        public static IOFileFilter ageFileFilter(Date cutoffDate,
        +                         boolean acceptOlder)
        +
        Returns a filter that filters files based on a cutoff date.
        +
        Parameters:
        cutoffDate - the time threshold
        acceptOlder - if true, older files get accepted, if false, newer
        +
        Returns:
        an appropriately configured age file filter
        Since:
        +
        1.2
        +
        See Also:
        AgeFileFilter
        +
      • +
      + + + +
        +
      • +

        ageFileFilter

        +
        public static IOFileFilter ageFileFilter(File cutoffReference)
        +
        Returns a filter that returns true if the file was last modified after + the specified reference file.
        +
        Parameters:
        cutoffReference - the file whose last modification + time is usesd as the threshold age of the files
        +
        Returns:
        an appropriately configured age file filter
        Since:
        +
        1.2
        +
        See Also:
        AgeFileFilter
        +
      • +
      + + + +
        +
      • +

        ageFileFilter

        +
        public static IOFileFilter ageFileFilter(File cutoffReference,
        +                         boolean acceptOlder)
        +
        Returns a filter that filters files based on a cutoff reference file.
        +
        Parameters:
        cutoffReference - the file whose last modification + time is usesd as the threshold age of the files
        acceptOlder - if true, older files get accepted, if false, newer
        +
        Returns:
        an appropriately configured age file filter
        Since:
        +
        1.2
        +
        See Also:
        AgeFileFilter
        +
      • +
      + + + +
        +
      • +

        sizeFileFilter

        +
        public static IOFileFilter sizeFileFilter(long threshold)
        +
        Returns a filter that returns true if the file is bigger than a certain size.
        +
        Parameters:
        threshold - the file size threshold
        +
        Returns:
        an appropriately configured SizeFileFilter
        Since:
        +
        1.2
        +
        See Also:
        SizeFileFilter
        +
      • +
      + + + +
        +
      • +

        sizeFileFilter

        +
        public static IOFileFilter sizeFileFilter(long threshold,
        +                          boolean acceptLarger)
        +
        Returns a filter that filters based on file size.
        +
        Parameters:
        threshold - the file size threshold
        acceptLarger - if true, larger files get accepted, if false, smaller
        +
        Returns:
        an appropriately configured SizeFileFilter
        Since:
        +
        1.2
        +
        See Also:
        SizeFileFilter
        +
      • +
      + + + +
        +
      • +

        sizeRangeFileFilter

        +
        public static IOFileFilter sizeRangeFileFilter(long minSizeInclusive,
        +                               long maxSizeInclusive)
        +
        Returns a filter that accepts files whose size is >= minimum size + and <= maximum size.
        +
        Parameters:
        minSizeInclusive - the minimum file size (inclusive)
        maxSizeInclusive - the maximum file size (inclusive)
        +
        Returns:
        an appropriately configured IOFileFilter
        Since:
        +
        1.3
        +
        See Also:
        SizeFileFilter
        +
      • +
      + + + +
        +
      • +

        magicNumberFileFilter

        +
        public static IOFileFilter magicNumberFileFilter(String magicNumber)
        +
        Returns a filter that accepts files that begin with the provided magic + number.
        +
        Parameters:
        magicNumber - the magic number (byte sequence) to match at the + beginning of each file.
        +
        Returns:
        an IOFileFilter that accepts files beginning with the provided + magic number.
        +
        Throws:
        +
        IllegalArgumentException - if magicNumber is + null or the empty String.
        Since:
        +
        2.0
        +
        See Also:
        MagicNumberFileFilter
        +
      • +
      + + + +
        +
      • +

        magicNumberFileFilter

        +
        public static IOFileFilter magicNumberFileFilter(String magicNumber,
        +                                 long offset)
        +
        Returns a filter that accepts files that contains the provided magic + number at a specified offset within the file.
        +
        Parameters:
        magicNumber - the magic number (byte sequence) to match at the + provided offset in each file.
        offset - the offset within the files to look for the magic number.
        +
        Returns:
        an IOFileFilter that accepts files containing the magic number + at the specified offset.
        +
        Throws:
        +
        IllegalArgumentException - if magicNumber is + null or the empty String, or if offset is a + negative number.
        Since:
        +
        2.0
        +
        See Also:
        MagicNumberFileFilter
        +
      • +
      + + + +
        +
      • +

        magicNumberFileFilter

        +
        public static IOFileFilter magicNumberFileFilter(byte[] magicNumber)
        +
        Returns a filter that accepts files that begin with the provided magic + number.
        +
        Parameters:
        magicNumber - the magic number (byte sequence) to match at the + beginning of each file.
        +
        Returns:
        an IOFileFilter that accepts files beginning with the provided + magic number.
        +
        Throws:
        +
        IllegalArgumentException - if magicNumber is + null or is of length zero.
        Since:
        +
        2.0
        +
        See Also:
        MagicNumberFileFilter
        +
      • +
      + + + +
        +
      • +

        magicNumberFileFilter

        +
        public static IOFileFilter magicNumberFileFilter(byte[] magicNumber,
        +                                 long offset)
        +
        Returns a filter that accepts files that contains the provided magic + number at a specified offset within the file.
        +
        Parameters:
        magicNumber - the magic number (byte sequence) to match at the + provided offset in each file.
        offset - the offset within the files to look for the magic number.
        +
        Returns:
        an IOFileFilter that accepts files containing the magic number + at the specified offset.
        +
        Throws:
        +
        IllegalArgumentException - if magicNumber is + null, or contains no bytes, or offset + is a negative number.
        Since:
        +
        2.0
        +
        See Also:
        MagicNumberFileFilter
        +
      • +
      + + + +
        +
      • +

        makeCVSAware

        +
        public static IOFileFilter makeCVSAware(IOFileFilter filter)
        +
        Decorates a filter to make it ignore CVS directories. + Passing in null will return a filter that accepts everything + except CVS directories.
        +
        Parameters:
        filter - the filter to decorate, null means an unrestricted filter
        +
        Returns:
        the decorated filter, never null
        Since:
        +
        1.1 (method existed but had bug in 1.0)
        +
      • +
      + + + +
        +
      • +

        makeSVNAware

        +
        public static IOFileFilter makeSVNAware(IOFileFilter filter)
        +
        Decorates a filter to make it ignore SVN directories. + Passing in null will return a filter that accepts everything + except SVN directories.
        +
        Parameters:
        filter - the filter to decorate, null means an unrestricted filter
        +
        Returns:
        the decorated filter, never null
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        makeDirectoryOnly

        +
        public static IOFileFilter makeDirectoryOnly(IOFileFilter filter)
        +
        Decorates a filter so that it only applies to directories and not to files.
        +
        Parameters:
        filter - the filter to decorate, null means an unrestricted filter
        +
        Returns:
        the decorated filter, never null
        Since:
        +
        1.3
        +
        See Also:
        DirectoryFileFilter.DIRECTORY
        +
      • +
      + + + +
        +
      • +

        makeFileOnly

        +
        public static IOFileFilter makeFileOnly(IOFileFilter filter)
        +
        Decorates a filter so that it only applies to files and not to directories.
        +
        Parameters:
        filter - the filter to decorate, null means an unrestricted filter
        +
        Returns:
        the decorated filter, never null
        Since:
        +
        1.3
        +
        See Also:
        FileFileFilter.FILE
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/HiddenFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/HiddenFileFilter.html new file mode 100644 index 0000000..4bca46d --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/HiddenFileFilter.html @@ -0,0 +1,375 @@ + + + + + +HiddenFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class HiddenFileFilter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FileFilter, FilenameFilter, Serializable, IOFileFilter
    +
    +
    +
    +
    public class HiddenFileFilter
    +extends AbstractFileFilter
    +implements Serializable
    +
    This filter accepts Files that are hidden. +

    + Example, showing how to print out a list of the + current directory's hidden files: + +

    + File dir = new File(".");
    + String[] files = dir.list( HiddenFileFilter.HIDDEN );
    + for ( int i = 0; i < files.length; i++ ) {
    +     System.out.println(files[i]);
    + }
    + 
    + +

    + Example, showing how to print out a list of the + current directory's visible (i.e. not hidden) files: + +

    + File dir = new File(".");
    + String[] files = dir.list( HiddenFileFilter.VISIBLE );
    + for ( int i = 0; i < files.length; i++ ) {
    +     System.out.println(files[i]);
    + }
    + 
    +
    Since:
    +
    1.3
    +
    Version:
    +
    $Id: HiddenFileFilter.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        HIDDEN

        +
        public static final IOFileFilter HIDDEN
        +
        Singleton instance of hidden filter
        +
      • +
      + + + +
        +
      • +

        VISIBLE

        +
        public static final IOFileFilter VISIBLE
        +
        Singleton instance of visible filter
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        HiddenFileFilter

        +
        protected HiddenFileFilter()
        +
        Restrictive consructor.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the file is hidden.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if the file is + hidden, otherwise false.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/IOFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/IOFileFilter.html new file mode 100644 index 0000000..9f68c30 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/IOFileFilter.html @@ -0,0 +1,256 @@ + + + + + +IOFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Interface IOFileFilter

+
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      booleanaccept(File file) +
      Checks to see if the File should be accepted by this filter.
      +
      booleanaccept(File dir, + String name) +
      Checks to see if the File should be accepted by this filter.
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        boolean accept(File file)
        +
        Checks to see if the File should be accepted by this filter. +

        + Defined in FileFilter.

        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if this file matches the test
        +
      • +
      + + + +
        +
      • +

        accept

        +
        boolean accept(File dir,
        +             String name)
        +
        Checks to see if the File should be accepted by this filter. +

        + Defined in FilenameFilter.

        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Parameters:
        dir - the directory File to check
        name - the filename within the directory to check
        +
        Returns:
        true if this file matches the test
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/MagicNumberFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/MagicNumberFileFilter.html new file mode 100644 index 0000000..c600a89 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/MagicNumberFileFilter.html @@ -0,0 +1,490 @@ + + + + + +MagicNumberFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class MagicNumberFileFilter

+
+
+ +
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      MagicNumberFileFilter(byte[] magicNumber) +
      + Constructs a new MagicNumberFileFilter and associates it with the magic + number to test for in files.
      +
      MagicNumberFileFilter(byte[] magicNumber, + long offset) +
      + Constructs a new MagicNumberFileFilter and associates it with the magic + number to test for in files and the byte offset location in the file to + to look for that magic number.
      +
      MagicNumberFileFilter(String magicNumber) +
      + Constructs a new MagicNumberFileFilter and associates it with the magic + number to test for in files.
      +
      MagicNumberFileFilter(String magicNumber, + long offset) +
      + Constructs a new MagicNumberFileFilter and associates it with the magic + number to test for in files and the byte offset location in the file to + to look for that magic number.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        MagicNumberFileFilter

        +
        public MagicNumberFileFilter(byte[] magicNumber)
        +

        + Constructs a new MagicNumberFileFilter and associates it with the magic + number to test for in files. This constructor assumes a starting offset + of 0. +

        + +

        + It is important to note that the array is not cloned and that + any changes to the magic number array after construction will affect the + behavior of this file filter. +

        + +
        + MagicNumberFileFilter javaClassFileFilter =
        +     MagicNumberFileFilter(new byte[] {(byte) 0xCA, (byte) 0xFE,
        +       (byte) 0xBA, (byte) 0xBE});
        + 
        +
        Parameters:
        magicNumber - the magic number to look for in the file.
        +
        Throws:
        +
        IllegalArgumentException - if magicNumber is + null, or contains no bytes.
        +
      • +
      + + + +
        +
      • +

        MagicNumberFileFilter

        +
        public MagicNumberFileFilter(String magicNumber)
        +

        + Constructs a new MagicNumberFileFilter and associates it with the magic + number to test for in files. This constructor assumes a starting offset + of 0. +

        + + Example usage: +
        + MagicNumberFileFilter xmlFileFilter =
        +     MagicNumberFileFilter("<?xml");
        + 
        + 
        +
        Parameters:
        magicNumber - the magic number to look for in the file. + The string is converted to bytes using the platform default charset.
        +
        Throws:
        +
        IllegalArgumentException - if magicNumber is + null or the empty String.
        +
      • +
      + + + +
        +
      • +

        MagicNumberFileFilter

        +
        public MagicNumberFileFilter(String magicNumber,
        +                     long offset)
        +

        + Constructs a new MagicNumberFileFilter and associates it with the magic + number to test for in files and the byte offset location in the file to + to look for that magic number. +

        + +
        + MagicNumberFileFilter tarFileFilter =
        +     MagicNumberFileFilter("ustar", 257);
        + 
        +
        Parameters:
        magicNumber - the magic number to look for in the file. + The string is converted to bytes using the platform default charset.
        offset - the byte offset in the file to start comparing bytes.
        +
        Throws:
        +
        IllegalArgumentException - if magicNumber is + null or the empty String, or offset is + a negative number.
        +
      • +
      + + + +
        +
      • +

        MagicNumberFileFilter

        +
        public MagicNumberFileFilter(byte[] magicNumber,
        +                     long offset)
        +

        + Constructs a new MagicNumberFileFilter and associates it with the magic + number to test for in files and the byte offset location in the file to + to look for that magic number. +

        + +
        + MagicNumberFileFilter tarFileFilter =
        +     MagicNumberFileFilter(new byte[] {0x75, 0x73, 0x74, 0x61, 0x72}, 257);
        + 
        + +
        + MagicNumberFileFilter javaClassFileFilter =
        +     MagicNumberFileFilter(new byte[] {0xCA, 0xFE, 0xBA, 0xBE}, 0);
        + 
        +
        Parameters:
        magicNumber - the magic number to look for in the file.
        offset - the byte offset in the file to start comparing bytes.
        +
        Throws:
        +
        IllegalArgumentException - if magicNumber is + null, or contains no bytes, or offset + is a negative number.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +

        + Accepts the provided file if the file contains the file filter's magic + number at the specified offset. +

        + +

        + If any IOExceptions occur while reading the file, the file will + be rejected. +

        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the file to accept or reject.
        +
        Returns:
        true if the file contains the filter's magic number + at the specified offset, false otherwise.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Returns a String representation of the file filter, which includes the + magic number bytes and byte offset.
        +
        +
        Overrides:
        +
        toString in class AbstractFileFilter
        +
        Returns:
        a String representation of the file filter.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/NameFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/NameFileFilter.html new file mode 100644 index 0000000..39d17ad --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/NameFileFilter.html @@ -0,0 +1,451 @@ + + + + + +NameFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class NameFileFilter

+
+
+ +
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      NameFileFilter(List<String> names) +
      Constructs a new case-sensitive name file filter for a list of names.
      +
      NameFileFilter(List<String> names, + IOCase caseSensitivity) +
      Constructs a new name file filter for a list of names specifying case-sensitivity.
      +
      NameFileFilter(String name) +
      Constructs a new case-sensitive name file filter for a single name.
      +
      NameFileFilter(String[] names) +
      Constructs a new case-sensitive name file filter for an array of names.
      +
      NameFileFilter(String[] names, + IOCase caseSensitivity) +
      Constructs a new name file filter for an array of names specifying case-sensitivity.
      +
      NameFileFilter(String name, + IOCase caseSensitivity) +
      Construct a new name file filter specifying case-sensitivity.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NameFileFilter

        +
        public NameFileFilter(String name)
        +
        Constructs a new case-sensitive name file filter for a single name.
        +
        Parameters:
        name - the name to allow, must not be null
        +
        Throws:
        +
        IllegalArgumentException - if the name is null
        +
      • +
      + + + +
        +
      • +

        NameFileFilter

        +
        public NameFileFilter(String name,
        +              IOCase caseSensitivity)
        +
        Construct a new name file filter specifying case-sensitivity.
        +
        Parameters:
        name - the name to allow, must not be null
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the name is null
        +
      • +
      + + + +
        +
      • +

        NameFileFilter

        +
        public NameFileFilter(String[] names)
        +
        Constructs a new case-sensitive name file filter for an array of names. +

        + The array is not cloned, so could be changed after constructing the + instance. This would be inadvisable however.

        +
        Parameters:
        names - the names to allow, must not be null
        +
        Throws:
        +
        IllegalArgumentException - if the names array is null
        +
      • +
      + + + +
        +
      • +

        NameFileFilter

        +
        public NameFileFilter(String[] names,
        +              IOCase caseSensitivity)
        +
        Constructs a new name file filter for an array of names specifying case-sensitivity.
        +
        Parameters:
        names - the names to allow, must not be null
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the names array is null
        +
      • +
      + + + +
        +
      • +

        NameFileFilter

        +
        public NameFileFilter(List<String> names)
        +
        Constructs a new case-sensitive name file filter for a list of names.
        +
        Parameters:
        names - the names to allow, must not be null
        +
        Throws:
        +
        IllegalArgumentException - if the name list is null
        +
        ClassCastException - if the list does not contain Strings
        +
      • +
      + + + +
        +
      • +

        NameFileFilter

        +
        public NameFileFilter(List<String> names,
        +              IOCase caseSensitivity)
        +
        Constructs a new name file filter for a list of names specifying case-sensitivity.
        +
        Parameters:
        names - the names to allow, must not be null
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the name list is null
        +
        ClassCastException - if the list does not contain Strings
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the filename matches.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if the filename matches
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File dir,
        +             String name)
        +
        Checks to see if the filename matches.
        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        dir - the File directory (ignored)
        name - the filename
        +
        Returns:
        true if the filename matches
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Provide a String representaion of this file filter.
        +
        +
        Overrides:
        +
        toString in class AbstractFileFilter
        +
        Returns:
        a String representaion
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/NotFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/NotFileFilter.html new file mode 100644 index 0000000..b80af6e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/NotFileFilter.html @@ -0,0 +1,338 @@ + + + + + +NotFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class NotFileFilter

+
+
+ +
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      NotFileFilter(IOFileFilter filter) +
      Constructs a new file filter that NOTs the result of another filter.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NotFileFilter

        +
        public NotFileFilter(IOFileFilter filter)
        +
        Constructs a new file filter that NOTs the result of another filter.
        +
        Parameters:
        filter - the filter, must not be null
        +
        Throws:
        +
        IllegalArgumentException - if the filter is null
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Returns the logical NOT of the underlying filter's return value for the same File.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if the filter returns false
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file,
        +             String name)
        +
        Returns the logical NOT of the underlying filter's return value for the same arguments.
        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File directory
        name - the filename
        +
        Returns:
        true if the filter returns false
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Provide a String representaion of this file filter.
        +
        +
        Overrides:
        +
        toString in class AbstractFileFilter
        +
        Returns:
        a String representaion
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/OrFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/OrFileFilter.html new file mode 100644 index 0000000..751ad8b --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/OrFileFilter.html @@ -0,0 +1,466 @@ + + + + + +OrFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class OrFileFilter

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        OrFileFilter

        +
        public OrFileFilter()
        +
        Constructs a new instance of OrFileFilter.
        +
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        OrFileFilter

        +
        public OrFileFilter(List<IOFileFilter> fileFilters)
        +
        Constructs a new instance of OrFileFilter + with the specified filters.
        +
        Parameters:
        fileFilters - the file filters for this filter, copied, null ignored
        Since:
        +
        1.1
        +
      • +
      + + + +
        +
      • +

        OrFileFilter

        +
        public OrFileFilter(IOFileFilter filter1,
        +            IOFileFilter filter2)
        +
        Constructs a new file filter that ORs the result of two other filters.
        +
        Parameters:
        filter1 - the first filter, must not be null
        filter2 - the second filter, must not be null
        +
        Throws:
        +
        IllegalArgumentException - if either filter is null
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        addFileFilter

        +
        public void addFileFilter(IOFileFilter ioFileFilter)
        +
        Adds the specified file filter to the list of file filters at the end of + the list.
        +
        +
        Specified by:
        +
        addFileFilter in interface ConditionalFileFilter
        +
        Parameters:
        ioFileFilter - the filter to be added
        +
      • +
      + + + + + + + +
        +
      • +

        removeFileFilter

        +
        public boolean removeFileFilter(IOFileFilter ioFileFilter)
        +
        Removes the specified file filter.
        +
        +
        Specified by:
        +
        removeFileFilter in interface ConditionalFileFilter
        +
        Parameters:
        ioFileFilter - filter to be removed
        +
        Returns:
        true if the filter was found in the list, + false otherwise
        +
      • +
      + + + +
        +
      • +

        setFileFilters

        +
        public void setFileFilters(List<IOFileFilter> fileFilters)
        +
        Sets the list of file filters, replacing any previously configured + file filters on this filter.
        +
        +
        Specified by:
        +
        setFileFilters in interface ConditionalFileFilter
        +
        Parameters:
        fileFilters - the list of filters
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the File should be accepted by this filter.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if this file matches the test
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file,
        +             String name)
        +
        Checks to see if the File should be accepted by this filter.
        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the directory File to check
        name - the filename within the directory to check
        +
        Returns:
        true if this file matches the test
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Provide a String representaion of this file filter.
        +
        +
        Overrides:
        +
        toString in class AbstractFileFilter
        +
        Returns:
        a String representaion
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/PrefixFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/PrefixFileFilter.html new file mode 100644 index 0000000..080bfc3 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/PrefixFileFilter.html @@ -0,0 +1,460 @@ + + + + + +PrefixFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class PrefixFileFilter

+
+
+ +
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      PrefixFileFilter(List<String> prefixes) +
      Constructs a new Prefix file filter for a list of prefixes.
      +
      PrefixFileFilter(List<String> prefixes, + IOCase caseSensitivity) +
      Constructs a new Prefix file filter for a list of prefixes + specifying case-sensitivity.
      +
      PrefixFileFilter(String prefix) +
      Constructs a new Prefix file filter for a single prefix.
      +
      PrefixFileFilter(String[] prefixes) +
      Constructs a new Prefix file filter for any of an array of prefixes.
      +
      PrefixFileFilter(String[] prefixes, + IOCase caseSensitivity) +
      Constructs a new Prefix file filter for any of an array of prefixes + specifying case-sensitivity.
      +
      PrefixFileFilter(String prefix, + IOCase caseSensitivity) +
      Constructs a new Prefix file filter for a single prefix + specifying case-sensitivity.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PrefixFileFilter

        +
        public PrefixFileFilter(String prefix)
        +
        Constructs a new Prefix file filter for a single prefix.
        +
        Parameters:
        prefix - the prefix to allow, must not be null
        +
        Throws:
        +
        IllegalArgumentException - if the prefix is null
        +
      • +
      + + + +
        +
      • +

        PrefixFileFilter

        +
        public PrefixFileFilter(String prefix,
        +                IOCase caseSensitivity)
        +
        Constructs a new Prefix file filter for a single prefix + specifying case-sensitivity.
        +
        Parameters:
        prefix - the prefix to allow, must not be null
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the prefix is null
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        PrefixFileFilter

        +
        public PrefixFileFilter(String[] prefixes)
        +
        Constructs a new Prefix file filter for any of an array of prefixes. +

        + The array is not cloned, so could be changed after constructing the + instance. This would be inadvisable however.

        +
        Parameters:
        prefixes - the prefixes to allow, must not be null
        +
        Throws:
        +
        IllegalArgumentException - if the prefix array is null
        +
      • +
      + + + +
        +
      • +

        PrefixFileFilter

        +
        public PrefixFileFilter(String[] prefixes,
        +                IOCase caseSensitivity)
        +
        Constructs a new Prefix file filter for any of an array of prefixes + specifying case-sensitivity.
        +
        Parameters:
        prefixes - the prefixes to allow, must not be null
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the prefix is null
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        PrefixFileFilter

        +
        public PrefixFileFilter(List<String> prefixes)
        +
        Constructs a new Prefix file filter for a list of prefixes.
        +
        Parameters:
        prefixes - the prefixes to allow, must not be null
        +
        Throws:
        +
        IllegalArgumentException - if the prefix list is null
        +
        ClassCastException - if the list does not contain Strings
        +
      • +
      + + + +
        +
      • +

        PrefixFileFilter

        +
        public PrefixFileFilter(List<String> prefixes,
        +                IOCase caseSensitivity)
        +
        Constructs a new Prefix file filter for a list of prefixes + specifying case-sensitivity.
        +
        Parameters:
        prefixes - the prefixes to allow, must not be null
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the prefix list is null
        +
        ClassCastException - if the list does not contain Strings
        Since:
        +
        1.4
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the filename starts with the prefix.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if the filename starts with one of our prefixes
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file,
        +             String name)
        +
        Checks to see if the filename starts with the prefix.
        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File directory
        name - the filename
        +
        Returns:
        true if the filename starts with one of our prefixes
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Provide a String representaion of this file filter.
        +
        +
        Overrides:
        +
        toString in class AbstractFileFilter
        +
        Returns:
        a String representaion
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/RegexFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/RegexFileFilter.html new file mode 100644 index 0000000..8edca8e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/RegexFileFilter.html @@ -0,0 +1,371 @@ + + + + + +RegexFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class RegexFileFilter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FileFilter, FilenameFilter, Serializable, IOFileFilter
    +
    +
    +
    +
    public class RegexFileFilter
    +extends AbstractFileFilter
    +implements Serializable
    +
    Filters files using supplied regular expression(s). +

    + See java.util.regex.Pattern for regex matching rules +

    + +

    + e.g. +

    + File dir = new File(".");
    + FileFilter fileFilter = new RegexFileFilter("^.*[tT]est(-\\d+)?\\.java$");
    + File[] files = dir.listFiles(fileFilter);
    + for (int i = 0; i < files.length; i++) {
    +   System.out.println(files[i]);
    + }
    + 
    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: RegexFileFilter.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        RegexFileFilter

        +
        public RegexFileFilter(String pattern)
        +
        Construct a new regular expression filter.
        +
        Parameters:
        pattern - regular string expression to match
        +
        Throws:
        +
        IllegalArgumentException - if the pattern is null
        +
      • +
      + + + +
        +
      • +

        RegexFileFilter

        +
        public RegexFileFilter(String pattern,
        +               IOCase caseSensitivity)
        +
        Construct a new regular expression filter with the specified flags case sensitivity.
        +
        Parameters:
        pattern - regular string expression to match
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the pattern is null
        +
      • +
      + + + +
        +
      • +

        RegexFileFilter

        +
        public RegexFileFilter(String pattern,
        +               int flags)
        +
        Construct a new regular expression filter with the specified flags.
        +
        Parameters:
        pattern - regular string expression to match
        flags - pattern flags - e.g. Pattern.CASE_INSENSITIVE
        +
        Throws:
        +
        IllegalArgumentException - if the pattern is null
        +
      • +
      + + + +
        +
      • +

        RegexFileFilter

        +
        public RegexFileFilter(Pattern pattern)
        +
        Construct a new regular expression filter for a compiled regular expression
        +
        Parameters:
        pattern - regular expression to match
        +
        Throws:
        +
        IllegalArgumentException - if the pattern is null
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File dir,
        +             String name)
        +
        Checks to see if the filename matches one of the regular expressions.
        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        dir - the file directory (ignored)
        name - the filename
        +
        Returns:
        true if the filename matches one of the regular expressions
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/SizeFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/SizeFileFilter.html new file mode 100644 index 0000000..51da99d --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/SizeFileFilter.html @@ -0,0 +1,362 @@ + + + + + +SizeFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class SizeFileFilter

+
+
+ +
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      SizeFileFilter(long size) +
      Constructs a new size file filter for files equal to or + larger than a certain size.
      +
      SizeFileFilter(long size, + boolean acceptLarger) +
      Constructs a new size file filter for files based on a certain size + threshold.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SizeFileFilter

        +
        public SizeFileFilter(long size)
        +
        Constructs a new size file filter for files equal to or + larger than a certain size.
        +
        Parameters:
        size - the threshold size of the files
        +
        Throws:
        +
        IllegalArgumentException - if the size is negative
        +
      • +
      + + + +
        +
      • +

        SizeFileFilter

        +
        public SizeFileFilter(long size,
        +              boolean acceptLarger)
        +
        Constructs a new size file filter for files based on a certain size + threshold.
        +
        Parameters:
        size - the threshold size of the files
        acceptLarger - if true, files equal to or larger are accepted, + otherwise smaller ones (but not equal to)
        +
        Throws:
        +
        IllegalArgumentException - if the size is negative
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the size of the file is favorable. +

        + If size equals threshold and smaller files are required, + file IS NOT selected. + If size equals threshold and larger files are required, + file IS selected.

        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if the filename matches
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Provide a String representaion of this file filter.
        +
        +
        Overrides:
        +
        toString in class AbstractFileFilter
        +
        Returns:
        a String representaion
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/SuffixFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/SuffixFileFilter.html new file mode 100644 index 0000000..e13679e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/SuffixFileFilter.html @@ -0,0 +1,461 @@ + + + + + +SuffixFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class SuffixFileFilter

+
+
+ +
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      SuffixFileFilter(List<String> suffixes) +
      Constructs a new Suffix file filter for a list of suffixes.
      +
      SuffixFileFilter(List<String> suffixes, + IOCase caseSensitivity) +
      Constructs a new Suffix file filter for a list of suffixes + specifying case-sensitivity.
      +
      SuffixFileFilter(String suffix) +
      Constructs a new Suffix file filter for a single extension.
      +
      SuffixFileFilter(String[] suffixes) +
      Constructs a new Suffix file filter for an array of suffixs.
      +
      SuffixFileFilter(String[] suffixes, + IOCase caseSensitivity) +
      Constructs a new Suffix file filter for an array of suffixs + specifying case-sensitivity.
      +
      SuffixFileFilter(String suffix, + IOCase caseSensitivity) +
      Constructs a new Suffix file filter for a single extension + specifying case-sensitivity.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SuffixFileFilter

        +
        public SuffixFileFilter(String suffix)
        +
        Constructs a new Suffix file filter for a single extension.
        +
        Parameters:
        suffix - the suffix to allow, must not be null
        +
        Throws:
        +
        IllegalArgumentException - if the suffix is null
        +
      • +
      + + + +
        +
      • +

        SuffixFileFilter

        +
        public SuffixFileFilter(String suffix,
        +                IOCase caseSensitivity)
        +
        Constructs a new Suffix file filter for a single extension + specifying case-sensitivity.
        +
        Parameters:
        suffix - the suffix to allow, must not be null
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the suffix is null
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        SuffixFileFilter

        +
        public SuffixFileFilter(String[] suffixes)
        +
        Constructs a new Suffix file filter for an array of suffixs. +

        + The array is not cloned, so could be changed after constructing the + instance. This would be inadvisable however.

        +
        Parameters:
        suffixes - the suffixes to allow, must not be null
        +
        Throws:
        +
        IllegalArgumentException - if the suffix array is null
        +
      • +
      + + + +
        +
      • +

        SuffixFileFilter

        +
        public SuffixFileFilter(String[] suffixes,
        +                IOCase caseSensitivity)
        +
        Constructs a new Suffix file filter for an array of suffixs + specifying case-sensitivity.
        +
        Parameters:
        suffixes - the suffixes to allow, must not be null
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the suffix array is null
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        SuffixFileFilter

        +
        public SuffixFileFilter(List<String> suffixes)
        +
        Constructs a new Suffix file filter for a list of suffixes.
        +
        Parameters:
        suffixes - the suffixes to allow, must not be null
        +
        Throws:
        +
        IllegalArgumentException - if the suffix list is null
        +
        ClassCastException - if the list does not contain Strings
        +
      • +
      + + + +
        +
      • +

        SuffixFileFilter

        +
        public SuffixFileFilter(List<String> suffixes,
        +                IOCase caseSensitivity)
        +
        Constructs a new Suffix file filter for a list of suffixes + specifying case-sensitivity.
        +
        Parameters:
        suffixes - the suffixes to allow, must not be null
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the suffix list is null
        +
        ClassCastException - if the list does not contain Strings
        Since:
        +
        1.4
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the filename ends with the suffix.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File to check
        +
        Returns:
        true if the filename ends with one of our suffixes
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file,
        +             String name)
        +
        Checks to see if the filename ends with the suffix.
        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the File directory
        name - the filename
        +
        Returns:
        true if the filename ends with one of our suffixes
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Provide a String representaion of this file filter.
        +
        +
        Overrides:
        +
        toString in class AbstractFileFilter
        +
        Returns:
        a String representaion
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/TrueFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/TrueFileFilter.html new file mode 100644 index 0000000..cd19b18 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/TrueFileFilter.html @@ -0,0 +1,368 @@ + + + + + +TrueFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class TrueFileFilter

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        TRUE

        +
        public static final IOFileFilter TRUE
        +
        Singleton instance of true filter.
        +
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        INSTANCE

        +
        public static final IOFileFilter INSTANCE
        +
        Singleton instance of true filter. + Please use the identical TrueFileFilter.TRUE constant. + The new name is more JDK 1.5 friendly as it doesn't clash with other + values when using static imports.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TrueFileFilter

        +
        protected TrueFileFilter()
        +
        Restrictive constructor.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Returns true.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Parameters:
        file - the file to check (ignored)
        +
        Returns:
        true
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File dir,
        +             String name)
        +
        Returns true.
        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Parameters:
        dir - the directory to check (ignored)
        name - the filename (ignored)
        +
        Returns:
        true
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/WildcardFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/WildcardFileFilter.html new file mode 100644 index 0000000..3280902 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/WildcardFileFilter.html @@ -0,0 +1,456 @@ + + + + + +WildcardFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class WildcardFileFilter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FileFilter, FilenameFilter, Serializable, IOFileFilter
    +
    +
    +
    +
    public class WildcardFileFilter
    +extends AbstractFileFilter
    +implements Serializable
    +
    Filters files using the supplied wildcards. +

    + This filter selects files and directories based on one or more wildcards. + Testing is case-sensitive by default, but this can be configured. +

    + The wildcard matcher uses the characters '?' and '*' to represent a + single or multiple wildcard characters. + This is the same as often found on Dos/Unix command lines. + The check is case-sensitive by default. + See FilenameUtils.wildcardMatchOnSystem(java.lang.String, java.lang.String) for more information. +

    + For example: +

    + File dir = new File(".");
    + FileFilter fileFilter = new WildcardFileFilter("*test*.java~*~");
    + File[] files = dir.listFiles(fileFilter);
    + for (int i = 0; i < files.length; i++) {
    +   System.out.println(files[i]);
    + }
    + 
    +
    Since:
    +
    1.3
    +
    Version:
    +
    $Id: WildcardFileFilter.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      WildcardFileFilter(List<String> wildcards) +
      Construct a new case-sensitive wildcard filter for a list of wildcards.
      +
      WildcardFileFilter(List<String> wildcards, + IOCase caseSensitivity) +
      Construct a new wildcard filter for a list of wildcards specifying case-sensitivity.
      +
      WildcardFileFilter(String wildcard) +
      Construct a new case-sensitive wildcard filter for a single wildcard.
      +
      WildcardFileFilter(String[] wildcards) +
      Construct a new case-sensitive wildcard filter for an array of wildcards.
      +
      WildcardFileFilter(String[] wildcards, + IOCase caseSensitivity) +
      Construct a new wildcard filter for an array of wildcards specifying case-sensitivity.
      +
      WildcardFileFilter(String wildcard, + IOCase caseSensitivity) +
      Construct a new wildcard filter for a single wildcard specifying case-sensitivity.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        WildcardFileFilter

        +
        public WildcardFileFilter(String wildcard)
        +
        Construct a new case-sensitive wildcard filter for a single wildcard.
        +
        Parameters:
        wildcard - the wildcard to match
        +
        Throws:
        +
        IllegalArgumentException - if the pattern is null
        +
      • +
      + + + +
        +
      • +

        WildcardFileFilter

        +
        public WildcardFileFilter(String wildcard,
        +                  IOCase caseSensitivity)
        +
        Construct a new wildcard filter for a single wildcard specifying case-sensitivity.
        +
        Parameters:
        wildcard - the wildcard to match, not null
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the pattern is null
        +
      • +
      + + + +
        +
      • +

        WildcardFileFilter

        +
        public WildcardFileFilter(String[] wildcards)
        +
        Construct a new case-sensitive wildcard filter for an array of wildcards. +

        +
        Parameters:
        wildcards - the array of wildcards to match
        +
        Throws:
        +
        IllegalArgumentException - if the pattern array is null
        +
      • +
      + + + +
        +
      • +

        WildcardFileFilter

        +
        public WildcardFileFilter(String[] wildcards,
        +                  IOCase caseSensitivity)
        +
        Construct a new wildcard filter for an array of wildcards specifying case-sensitivity. +

        +
        Parameters:
        wildcards - the array of wildcards to match, not null
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the pattern array is null
        +
      • +
      + + + +
        +
      • +

        WildcardFileFilter

        +
        public WildcardFileFilter(List<String> wildcards)
        +
        Construct a new case-sensitive wildcard filter for a list of wildcards.
        +
        Parameters:
        wildcards - the list of wildcards to match, not null
        +
        Throws:
        +
        IllegalArgumentException - if the pattern list is null
        +
        ClassCastException - if the list does not contain Strings
        +
      • +
      + + + +
        +
      • +

        WildcardFileFilter

        +
        public WildcardFileFilter(List<String> wildcards,
        +                  IOCase caseSensitivity)
        +
        Construct a new wildcard filter for a list of wildcards specifying case-sensitivity.
        +
        Parameters:
        wildcards - the list of wildcards to match, not null
        caseSensitivity - how to handle case sensitivity, null means case-sensitive
        +
        Throws:
        +
        IllegalArgumentException - if the pattern list is null
        +
        ClassCastException - if the list does not contain Strings
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File dir,
        +             String name)
        +
        Checks to see if the filename matches one of the wildcards.
        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        dir - the file directory (ignored)
        name - the filename
        +
        Returns:
        true if the filename matches one of the wildcards
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Checks to see if the filename matches one of the wildcards.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the file to check
        +
        Returns:
        true if the filename matches one of the wildcards
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Provide a String representation of this file filter.
        +
        +
        Overrides:
        +
        toString in class AbstractFileFilter
        +
        Returns:
        a String representation
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/WildcardFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/WildcardFilter.html new file mode 100644 index 0000000..bdff64a --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/WildcardFilter.html @@ -0,0 +1,395 @@ + + + + + +WildcardFilter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.filefilter
+

Class WildcardFilter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FileFilter, FilenameFilter, Serializable, IOFileFilter
    +
    +
    +
    Deprecated.  +
    Use WilcardFileFilter. Deprecated as this class performs directory + filtering which it shouldn't do, but that can't be removed due to compatability.
    +
    +
    +
    @Deprecated
    +public class WildcardFilter
    +extends AbstractFileFilter
    +implements Serializable
    +
    Filters files using the supplied wildcards. +

    + This filter selects files, but not directories, based on one or more wildcards + and using case-sensitive comparison. +

    + The wildcard matcher uses the characters '?' and '*' to represent a + single or multiple wildcard characters. + This is the same as often found on Dos/Unix command lines. + The extension check is case-sensitive. + See FilenameUtils.wildcardMatch(String, String) for more information. +

    + For example: +

    + File dir = new File(".");
    + FileFilter fileFilter = new WildcardFilter("*test*.java~*~");
    + File[] files = dir.listFiles(fileFilter);
    + for (int i = 0; i < files.length; i++) {
    +   System.out.println(files[i]);
    + }
    + 
    +
    Since:
    +
    1.1
    +
    Version:
    +
    $Id: WildcardFilter.java 1642757 2014-12-01 21:09:30Z sebb $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      WildcardFilter(List<String> wildcards) +
      Deprecated. 
      +
      Construct a new case-sensitive wildcard filter for a list of wildcards.
      +
      WildcardFilter(String wildcard) +
      Deprecated. 
      +
      Construct a new case-sensitive wildcard filter for a single wildcard.
      +
      WildcardFilter(String[] wildcards) +
      Deprecated. 
      +
      Construct a new case-sensitive wildcard filter for an array of wildcards.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        WildcardFilter

        +
        public WildcardFilter(String wildcard)
        +
        Deprecated. 
        +
        Construct a new case-sensitive wildcard filter for a single wildcard.
        +
        Parameters:
        wildcard - the wildcard to match
        +
        Throws:
        +
        IllegalArgumentException - if the pattern is null
        +
      • +
      + + + +
        +
      • +

        WildcardFilter

        +
        public WildcardFilter(String[] wildcards)
        +
        Deprecated. 
        +
        Construct a new case-sensitive wildcard filter for an array of wildcards.
        +
        Parameters:
        wildcards - the array of wildcards to match
        +
        Throws:
        +
        IllegalArgumentException - if the pattern array is null
        +
      • +
      + + + +
        +
      • +

        WildcardFilter

        +
        public WildcardFilter(List<String> wildcards)
        +
        Deprecated. 
        +
        Construct a new case-sensitive wildcard filter for a list of wildcards.
        +
        Parameters:
        wildcards - the list of wildcards to match
        +
        Throws:
        +
        IllegalArgumentException - if the pattern list is null
        +
        ClassCastException - if the list does not contain Strings
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        accept

        +
        public boolean accept(File dir,
        +             String name)
        +
        Deprecated. 
        +
        Checks to see if the filename matches one of the wildcards.
        +
        +
        Specified by:
        +
        accept in interface FilenameFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        dir - the file directory
        name - the filename
        +
        Returns:
        true if the filename matches one of the wildcards
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public boolean accept(File file)
        +
        Deprecated. 
        +
        Checks to see if the filename matches one of the wildcards.
        +
        +
        Specified by:
        +
        accept in interface FileFilter
        +
        Specified by:
        +
        accept in interface IOFileFilter
        +
        Overrides:
        +
        accept in class AbstractFileFilter
        +
        Parameters:
        file - the file to check
        +
        Returns:
        true if the filename matches one of the wildcards
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/AbstractFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/AbstractFileFilter.html new file mode 100644 index 0000000..15aa021 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/AbstractFileFilter.html @@ -0,0 +1,276 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.AbstractFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.AbstractFileFilter

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/AgeFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/AgeFileFilter.html new file mode 100644 index 0000000..4742086 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/AgeFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.AgeFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.AgeFileFilter

+
+
No usage of org.apache.commons.io.filefilter.AgeFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/AndFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/AndFileFilter.html new file mode 100644 index 0000000..5ee7cde --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/AndFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.AndFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.AndFileFilter

+
+
No usage of org.apache.commons.io.filefilter.AndFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/CanReadFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/CanReadFileFilter.html new file mode 100644 index 0000000..ec47ee4 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/CanReadFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.CanReadFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.CanReadFileFilter

+
+
No usage of org.apache.commons.io.filefilter.CanReadFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/CanWriteFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/CanWriteFileFilter.html new file mode 100644 index 0000000..ef36bfd --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/CanWriteFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.CanWriteFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.CanWriteFileFilter

+
+
No usage of org.apache.commons.io.filefilter.CanWriteFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/ConditionalFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/ConditionalFileFilter.html new file mode 100644 index 0000000..49c07e3 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/ConditionalFileFilter.html @@ -0,0 +1,168 @@ + + + + + +Uses of Interface org.apache.commons.io.filefilter.ConditionalFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Interface
org.apache.commons.io.filefilter.ConditionalFileFilter

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/DelegateFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/DelegateFileFilter.html new file mode 100644 index 0000000..34e10b3 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/DelegateFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.DelegateFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.DelegateFileFilter

+
+
No usage of org.apache.commons.io.filefilter.DelegateFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/DirectoryFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/DirectoryFileFilter.html new file mode 100644 index 0000000..97f4c96 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/DirectoryFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.DirectoryFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.DirectoryFileFilter

+
+
No usage of org.apache.commons.io.filefilter.DirectoryFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/EmptyFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/EmptyFileFilter.html new file mode 100644 index 0000000..65b3712 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/EmptyFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.EmptyFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.EmptyFileFilter

+
+
No usage of org.apache.commons.io.filefilter.EmptyFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/FalseFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/FalseFileFilter.html new file mode 100644 index 0000000..f6135bb --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/FalseFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.FalseFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.FalseFileFilter

+
+
No usage of org.apache.commons.io.filefilter.FalseFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/FileFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/FileFileFilter.html new file mode 100644 index 0000000..cf62f10 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/FileFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.FileFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.FileFileFilter

+
+
No usage of org.apache.commons.io.filefilter.FileFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/FileFilterUtils.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/FileFilterUtils.html new file mode 100644 index 0000000..3f64fb7 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/FileFilterUtils.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.FileFilterUtils (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.FileFilterUtils

+
+
No usage of org.apache.commons.io.filefilter.FileFilterUtils
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/HiddenFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/HiddenFileFilter.html new file mode 100644 index 0000000..0c93531 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/HiddenFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.HiddenFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.HiddenFileFilter

+
+
No usage of org.apache.commons.io.filefilter.HiddenFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/IOFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/IOFileFilter.html new file mode 100644 index 0000000..290b7ef --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/IOFileFilter.html @@ -0,0 +1,989 @@ + + + + + +Uses of Interface org.apache.commons.io.filefilter.IOFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Interface
org.apache.commons.io.filefilter.IOFileFilter

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/MagicNumberFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/MagicNumberFileFilter.html new file mode 100644 index 0000000..6022fcd --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/MagicNumberFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.MagicNumberFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.MagicNumberFileFilter

+
+
No usage of org.apache.commons.io.filefilter.MagicNumberFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/NameFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/NameFileFilter.html new file mode 100644 index 0000000..a706e07 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/NameFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.NameFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.NameFileFilter

+
+
No usage of org.apache.commons.io.filefilter.NameFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/NotFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/NotFileFilter.html new file mode 100644 index 0000000..3992078 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/NotFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.NotFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.NotFileFilter

+
+
No usage of org.apache.commons.io.filefilter.NotFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/OrFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/OrFileFilter.html new file mode 100644 index 0000000..ab114b1 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/OrFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.OrFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.OrFileFilter

+
+
No usage of org.apache.commons.io.filefilter.OrFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/PrefixFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/PrefixFileFilter.html new file mode 100644 index 0000000..96abd5c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/PrefixFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.PrefixFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.PrefixFileFilter

+
+
No usage of org.apache.commons.io.filefilter.PrefixFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/RegexFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/RegexFileFilter.html new file mode 100644 index 0000000..0ef246f --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/RegexFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.RegexFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.RegexFileFilter

+
+
No usage of org.apache.commons.io.filefilter.RegexFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/SizeFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/SizeFileFilter.html new file mode 100644 index 0000000..4825ed4 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/SizeFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.SizeFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.SizeFileFilter

+
+
No usage of org.apache.commons.io.filefilter.SizeFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/SuffixFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/SuffixFileFilter.html new file mode 100644 index 0000000..9586e40 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/SuffixFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.SuffixFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.SuffixFileFilter

+
+
No usage of org.apache.commons.io.filefilter.SuffixFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/TrueFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/TrueFileFilter.html new file mode 100644 index 0000000..1c84f85 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/TrueFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.TrueFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.TrueFileFilter

+
+
No usage of org.apache.commons.io.filefilter.TrueFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/WildcardFileFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/WildcardFileFilter.html new file mode 100644 index 0000000..ba72c0d --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/WildcardFileFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.WildcardFileFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.WildcardFileFilter

+
+
No usage of org.apache.commons.io.filefilter.WildcardFileFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/WildcardFilter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/WildcardFilter.html new file mode 100644 index 0000000..6a83bfa --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/class-use/WildcardFilter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.filefilter.WildcardFilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.filefilter.WildcardFilter

+
+
No usage of org.apache.commons.io.filefilter.WildcardFilter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-frame.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-frame.html new file mode 100644 index 0000000..ebe7587 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-frame.html @@ -0,0 +1,45 @@ + + + + + +org.apache.commons.io.filefilter (Apache Commons IO 2.5 API) + + + +

org.apache.commons.io.filefilter

+ + + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-summary.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-summary.html new file mode 100644 index 0000000..6aed0eb --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-summary.html @@ -0,0 +1,428 @@ + + + + + +org.apache.commons.io.filefilter (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Package org.apache.commons.io.filefilter

+
+
This package defines an interface (IOFileFilter) that combines both +FileFilter and FilenameFilter.
+
+

See: Description

+
+
+
    +
  • + + + + + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    ConditionalFileFilter +
    Defines operations for conditional file filters.
    +
    IOFileFilter +
    An interface which brings the FileFilter and FilenameFilter + interfaces together.
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    AbstractFileFilter +
    An abstract class which implements the Java FileFilter and FilenameFilter + interfaces via the IOFileFilter interface.
    +
    AgeFileFilter +
    Filters files based on a cutoff time, can filter either newer + files or files equal to or older.
    +
    AndFileFilter +
    A FileFilter providing conditional AND logic across a list of + file filters.
    +
    CanReadFileFilter +
    This filter accepts Files that can be read.
    +
    CanWriteFileFilter +
    This filter accepts Files that can be written to.
    +
    DelegateFileFilter +
    This class turns a Java FileFilter or FilenameFilter into an IO FileFilter.
    +
    DirectoryFileFilter +
    This filter accepts Files that are directories.
    +
    EmptyFileFilter +
    This filter accepts files or directories that are empty.
    +
    FalseFileFilter +
    A file filter that always returns false.
    +
    FileFileFilter +
    This filter accepts Files that are files (not directories).
    +
    FileFilterUtils +
    Useful utilities for working with file filters.
    +
    HiddenFileFilter +
    This filter accepts Files that are hidden.
    +
    MagicNumberFileFilter +
    + File filter for matching files containing a "magic number".
    +
    NameFileFilter +
    Filters filenames for a certain name.
    +
    NotFileFilter +
    This filter produces a logical NOT of the filters specified.
    +
    OrFileFilter +
    A FileFilter providing conditional OR logic across a list of + file filters.
    +
    PrefixFileFilter +
    Filters filenames for a certain prefix.
    +
    RegexFileFilter +
    Filters files using supplied regular expression(s).
    +
    SizeFileFilter +
    Filters files based on size, can filter either smaller files or + files equal to or larger than a given threshold.
    +
    SuffixFileFilter +
    Filters files based on the suffix (what the filename ends with).
    +
    TrueFileFilter +
    A file filter that always returns true.
    +
    WildcardFileFilter +
    Filters files using the supplied wildcards.
    +
    WildcardFilterDeprecated +
    Use WilcardFileFilter.
    +
    +
  • +
+ + + +

Package org.apache.commons.io.filefilter Description

+

This package defines an interface (IOFileFilter) that combines both +FileFilter and FilenameFilter. Besides +that the package offers a series of ready-to-use implementations of the +IOFileFilter interface including implementation that allow you to combine +other such filters.

+

These filter can be used to list files or in FileDialog, +for example.

+ +

There are a number of 'primitive' filters:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DirectoryFilterOnly accept directories
PrefixFileFilterFilter based on a prefix
SuffixFileFilterFilter based on a suffix
NameFileFilterFilter based on a filename
WildcardFileFilterFilter based on wildcards
AgeFileFilterFilter based on last modified time of file
SizeFileFilterFilter based on file size
+ +

And there are five 'boolean' filters:

+ + + + + + + + + + + + + + + + + + + + + + + + + +
TrueFileFilterAccept all files
FalseFileFilterAccept no files
NotFileFilterApplies a logical NOT to an existing filter
AndFileFilterCombines two filters using a logical AND
OrFileFilterCombines two filter using a logical OR
+ +

These boolean FilenameFilters can be nested, to allow arbitrary expressions. +For example, here is how one could print all non-directory files in the +current directory, starting with "A", and ending in ".java" or ".class":

+ +
+  File dir = new File(".");
+  String[] files = dir.list( 
+    new AndFileFilter(
+      new AndFileFilter(
+        new PrefixFileFilter("A"),
+        new OrFileFilter(
+          new SuffixFileFilter(".class"),
+          new SuffixFileFilter(".java")
+        )
+      ),
+      new NotFileFilter(
+        new DirectoryFileFilter()
+      )
+    )
+  );
+  for ( int i=0; i<files.length; i++ ) {
+    System.out.println(files[i]);
+  }
+
+ +

This package also contains a utility class: +FileFilterUtils. It allows you to use all +file filters without having to put them in the import section. Here's how the +above example will look using FileFilterUtils:

+
+  File dir = new File(".");
+  String[] files = dir.list( 
+    FileFilterUtils.andFileFilter(
+      FileFilterUtils.andFileFilter(
+        FileFilterUtils.prefixFileFilter("A"),
+        FileFilterUtils.orFileFilter(
+          FileFilterUtils.suffixFileFilter(".class"),
+          FileFilterUtils.suffixFileFilter(".java")
+        )
+      ),
+      FileFilterUtils.notFileFilter(
+        FileFilterUtils.directoryFileFilter()
+      )
+    )
+  );
+  for ( int i=0; i<files.length; i++ ) {
+    System.out.println(files[i]);
+  }
+
+

There are a few other goodies in that class so please have a look at the +documentation in detail.

+
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-tree.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-tree.html new file mode 100644 index 0000000..5b33f33 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-tree.html @@ -0,0 +1,167 @@ + + + + + +org.apache.commons.io.filefilter Class Hierarchy (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For Package org.apache.commons.io.filefilter

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-use.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-use.html new file mode 100644 index 0000000..ab5e3cc --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/filefilter/package-use.html @@ -0,0 +1,191 @@ + + + + + +Uses of Package org.apache.commons.io.filefilter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Package
org.apache.commons.io.filefilter

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/AutoCloseInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/AutoCloseInputStream.html new file mode 100644 index 0000000..3bb23e2 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/AutoCloseInputStream.html @@ -0,0 +1,385 @@ + + + + + +AutoCloseInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class AutoCloseInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class AutoCloseInputStream
    +extends ProxyInputStream
    +
    Proxy stream that closes and discards the underlying stream as soon as the + end of input has been reached or when the stream is explicitly closed. + Not even a reference to the underlying stream is kept after it has been + closed, so any allocated in-memory buffers can be freed even if the + client application still keeps a reference to the proxy stream. +

    + This class is typically used to release any resources related to an open + stream as soon as possible even if the client application (by not explicitly + closing the stream when no longer needed) or the underlying stream (by not + releasing resources once the last byte has been read) do not do that.

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: AutoCloseInputStream.java 1586350 2014-04-10 15:57:20Z ggregory $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        AutoCloseInputStream

        +
        public AutoCloseInputStream(InputStream in)
        +
        Creates an automatically closing proxy for the given input stream.
        +
        Parameters:
        in - underlying input stream
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        close

        +
        public void close()
        +           throws IOException
        +
        Closes the underlying input stream and replaces the reference to it + with a ClosedInputStream instance. +

        + This method is automatically called by the read methods when the end + of input has been reached. +

        + Note that it is safe to call this method any number of times. The original + underlying input stream is closed and discarded only once when this + method is first called.

        +
        +
        Specified by:
        +
        close in interface Closeable
        +
        Specified by:
        +
        close in interface AutoCloseable
        +
        Overrides:
        +
        close in class ProxyInputStream
        +
        Throws:
        +
        IOException - if the underlying input stream can not be closed
        +
      • +
      + + + +
        +
      • +

        afterRead

        +
        protected void afterRead(int n)
        +                  throws IOException
        +
        Automatically closes the stream if the end of stream was reached.
        +
        +
        Overrides:
        +
        afterRead in class ProxyInputStream
        +
        Parameters:
        n - number of bytes read, or -1 if no more bytes are available
        +
        Throws:
        +
        IOException - if the stream could not be closed
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        finalize

        +
        protected void finalize()
        +                 throws Throwable
        +
        Ensures that the stream is closed before it gets garbage-collected. + As mentioned in close(), this is a no-op if the stream has + already been closed.
        +
        +
        Overrides:
        +
        finalize in class Object
        +
        Throws:
        +
        Throwable - if an error occurs
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BOMInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BOMInputStream.html new file mode 100644 index 0000000..920b09b --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BOMInputStream.html @@ -0,0 +1,626 @@ + + + + + +BOMInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class BOMInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class BOMInputStream
    +extends ProxyInputStream
    +
    This class is used to wrap a stream that includes an encoded ByteOrderMark as its first bytes. + + This class detects these bytes and, if required, can automatically skip them and return the subsequent byte as the + first byte in the stream. + + The ByteOrderMark implementation has the following pre-defined BOMs: + + + +

    Example 1 - Detect and exclude a UTF-8 BOM

    + +
    + BOMInputStream bomIn = new BOMInputStream(in);
    + if (bomIn.hasBOM()) {
    +     // has a UTF-8 BOM
    + }
    + 
    + +

    Example 2 - Detect a UTF-8 BOM (but don't exclude it)

    + +
    + boolean include = true;
    + BOMInputStream bomIn = new BOMInputStream(in, include);
    + if (bomIn.hasBOM()) {
    +     // has a UTF-8 BOM
    + }
    + 
    + +

    Example 3 - Detect Multiple BOMs

    + +
    + BOMInputStream bomIn = new BOMInputStream(in, 
    +   ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_16BE,
    +   ByteOrderMark.UTF_32LE, ByteOrderMark.UTF_32BE
    +   );
    + if (bomIn.hasBOM() == false) {
    +     // No BOM found
    + } else if (bomIn.hasBOM(ByteOrderMark.UTF_16LE)) {
    +     // has a UTF-16LE BOM
    + } else if (bomIn.hasBOM(ByteOrderMark.UTF_16BE)) {
    +     // has a UTF-16BE BOM
    + } else if (bomIn.hasBOM(ByteOrderMark.UTF_32LE)) {
    +     // has a UTF-32LE BOM
    + } else if (bomIn.hasBOM(ByteOrderMark.UTF_32BE)) {
    +     // has a UTF-32BE BOM
    + }
    + 
    +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: BOMInputStream.java 1686527 2015-06-20 06:31:39Z krosenvold $
    +
    See Also:
    ByteOrderMark, +Wikipedia - Byte Order Mark
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        BOMInputStream

        +
        public BOMInputStream(InputStream delegate)
        +
        Constructs a new BOM InputStream that excludes a ByteOrderMark.UTF_8 BOM.
        +
        Parameters:
        delegate - the InputStream to delegate to
        +
      • +
      + + + +
        +
      • +

        BOMInputStream

        +
        public BOMInputStream(InputStream delegate,
        +              boolean include)
        +
        Constructs a new BOM InputStream that detects a a ByteOrderMark.UTF_8 and optionally includes it.
        +
        Parameters:
        delegate - the InputStream to delegate to
        include - true to include the UTF-8 BOM or false to exclude it
        +
      • +
      + + + +
        +
      • +

        BOMInputStream

        +
        public BOMInputStream(InputStream delegate,
        +              ByteOrderMark... boms)
        +
        Constructs a new BOM InputStream that excludes the specified BOMs.
        +
        Parameters:
        delegate - the InputStream to delegate to
        boms - The BOMs to detect and exclude
        +
      • +
      + + + +
        +
      • +

        BOMInputStream

        +
        public BOMInputStream(InputStream delegate,
        +              boolean include,
        +              ByteOrderMark... boms)
        +
        Constructs a new BOM InputStream that detects the specified BOMs and optionally includes them.
        +
        Parameters:
        delegate - the InputStream to delegate to
        include - true to include the specified BOMs or false to exclude them
        boms - The BOMs to detect and optionally exclude
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        hasBOM

        +
        public boolean hasBOM()
        +               throws IOException
        +
        Indicates whether the stream contains one of the specified BOMs.
        +
        Returns:
        true if the stream has one of the specified BOMs, otherwise false if it does not
        +
        Throws:
        +
        IOException - if an error reading the first bytes of the stream occurs
        +
      • +
      + + + +
        +
      • +

        hasBOM

        +
        public boolean hasBOM(ByteOrderMark bom)
        +               throws IOException
        +
        Indicates whether the stream contains the specified BOM.
        +
        Parameters:
        bom - The BOM to check for
        +
        Returns:
        true if the stream has the specified BOM, otherwise false if it does not
        +
        Throws:
        +
        IllegalArgumentException - if the BOM is not one the stream is configured to detect
        +
        IOException - if an error reading the first bytes of the stream occurs
        +
      • +
      + + + +
        +
      • +

        getBOM

        +
        public ByteOrderMark getBOM()
        +                     throws IOException
        +
        Return the BOM (Byte Order Mark).
        +
        Returns:
        The BOM or null if none
        +
        Throws:
        +
        IOException - if an error reading the first bytes of the stream occurs
        +
      • +
      + + + + + + + +
        +
      • +

        read

        +
        public int read()
        +         throws IOException
        +
        Invokes the delegate's read() method, detecting and optionally skipping BOM.
        +
        +
        Overrides:
        +
        read in class ProxyInputStream
        +
        Returns:
        the byte read (excluding BOM) or -1 if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] buf,
        +       int off,
        +       int len)
        +         throws IOException
        +
        Invokes the delegate's read(byte[], int, int) method, detecting and optionally skipping BOM.
        +
        +
        Overrides:
        +
        read in class ProxyInputStream
        +
        Parameters:
        buf - the buffer to read the bytes into
        off - The start offset
        len - The number of bytes to read (excluding BOM)
        +
        Returns:
        the number of bytes read or -1 if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] buf)
        +         throws IOException
        +
        Invokes the delegate's read(byte[]) method, detecting and optionally skipping BOM.
        +
        +
        Overrides:
        +
        read in class ProxyInputStream
        +
        Parameters:
        buf - the buffer to read the bytes into
        +
        Returns:
        the number of bytes read (excluding BOM) or -1 if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        mark

        +
        public void mark(int readlimit)
        +
        Invokes the delegate's mark(int) method.
        +
        +
        Overrides:
        +
        mark in class ProxyInputStream
        +
        Parameters:
        readlimit - read ahead limit
        +
      • +
      + + + + + + + +
        +
      • +

        skip

        +
        public long skip(long n)
        +          throws IOException
        +
        Invokes the delegate's skip(long) method, detecting and optionallyskipping BOM.
        +
        +
        Overrides:
        +
        skip in class ProxyInputStream
        +
        Parameters:
        n - the number of bytes to skip
        +
        Returns:
        the number of bytes to skipped or -1 if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BoundedInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BoundedInputStream.html new file mode 100644 index 0000000..bf31361 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BoundedInputStream.html @@ -0,0 +1,567 @@ + + + + + +BoundedInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class BoundedInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class BoundedInputStream
    +extends InputStream
    +
    This is a stream that will only supply bytes up to a certain length - if its + position goes above that, it will stop. +

    + This is useful to wrap ServletInputStreams. The ServletInputStream will block + if you try to read content from it that isn't there, because it doesn't know + whether the content hasn't arrived yet or whether the content has finished. + So, one of these, initialized with the Content-length sent in the + ServletInputStream's header, will stop it blocking, providing it's been sent + with a correct content length.

    +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: BoundedInputStream.java 1586342 2014-04-10 15:36:29Z ggregory $
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      BoundedInputStream(InputStream in) +
      Creates a new BoundedInputStream that wraps the given input + stream and is unlimited.
      +
      BoundedInputStream(InputStream in, + long size) +
      Creates a new BoundedInputStream that wraps the given input + stream and limits it to a certain size.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      intavailable()
      voidclose() +
      Invokes the delegate's close() method + if isPropagateClose() is true.
      +
      booleanisPropagateClose() +
      Indicates whether the close() method + should propagate to the underling InputStream.
      +
      voidmark(int readlimit) +
      Invokes the delegate's mark(int) method.
      +
      booleanmarkSupported() +
      Invokes the delegate's markSupported() method.
      +
      intread() +
      Invokes the delegate's read() method if + the current position is less than the limit.
      +
      intread(byte[] b) +
      Invokes the delegate's read(byte[]) method.
      +
      intread(byte[] b, + int off, + int len) +
      Invokes the delegate's read(byte[], int, int) method.
      +
      voidreset() +
      Invokes the delegate's reset() method.
      +
      voidsetPropagateClose(boolean propagateClose) +
      Set whether the close() method + should propagate to the underling InputStream.
      +
      longskip(long n) +
      Invokes the delegate's skip(long) method.
      +
      StringtoString() +
      Invokes the delegate's toString() method.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        BoundedInputStream

        +
        public BoundedInputStream(InputStream in,
        +                  long size)
        +
        Creates a new BoundedInputStream that wraps the given input + stream and limits it to a certain size.
        +
        Parameters:
        in - The wrapped input stream
        size - The maximum number of bytes to return
        +
      • +
      + + + +
        +
      • +

        BoundedInputStream

        +
        public BoundedInputStream(InputStream in)
        +
        Creates a new BoundedInputStream that wraps the given input + stream and is unlimited.
        +
        Parameters:
        in - The wrapped input stream
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        read

        +
        public int read()
        +         throws IOException
        +
        Invokes the delegate's read() method if + the current position is less than the limit.
        +
        +
        Specified by:
        +
        read in class InputStream
        +
        Returns:
        the byte read or -1 if the end of stream or + the limit has been reached.
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] b)
        +         throws IOException
        +
        Invokes the delegate's read(byte[]) method.
        +
        +
        Overrides:
        +
        read in class InputStream
        +
        Parameters:
        b - the buffer to read the bytes into
        +
        Returns:
        the number of bytes read or -1 if the end of stream or + the limit has been reached.
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] b,
        +       int off,
        +       int len)
        +         throws IOException
        +
        Invokes the delegate's read(byte[], int, int) method.
        +
        +
        Overrides:
        +
        read in class InputStream
        +
        Parameters:
        b - the buffer to read the bytes into
        off - The start offset
        len - The number of bytes to read
        +
        Returns:
        the number of bytes read or -1 if the end of stream or + the limit has been reached.
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        skip

        +
        public long skip(long n)
        +          throws IOException
        +
        Invokes the delegate's skip(long) method.
        +
        +
        Overrides:
        +
        skip in class InputStream
        +
        Parameters:
        n - the number of bytes to skip
        +
        Returns:
        the actual number of bytes skipped
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Invokes the delegate's toString() method.
        +
        +
        Overrides:
        +
        toString in class Object
        +
        Returns:
        the delegate's toString()
        +
      • +
      + + + + + + + + + + + +
        +
      • +

        mark

        +
        public void mark(int readlimit)
        +
        Invokes the delegate's mark(int) method.
        +
        +
        Overrides:
        +
        mark in class InputStream
        +
        Parameters:
        readlimit - read ahead limit
        +
      • +
      + + + +
        +
      • +

        markSupported

        +
        public boolean markSupported()
        +
        Invokes the delegate's markSupported() method.
        +
        +
        Overrides:
        +
        markSupported in class InputStream
        +
        Returns:
        true if mark is supported, otherwise false
        +
      • +
      + + + +
        +
      • +

        isPropagateClose

        +
        public boolean isPropagateClose()
        +
        Indicates whether the close() method + should propagate to the underling InputStream.
        +
        Returns:
        true if calling close() + propagates to the close() method of the + underlying stream or false if it does not.
        +
      • +
      + + + +
        +
      • +

        setPropagateClose

        +
        public void setPropagateClose(boolean propagateClose)
        +
        Set whether the close() method + should propagate to the underling InputStream.
        +
        Parameters:
        propagateClose - true if calling + close() propagates to the close() + method of the underlying stream or + false if it does not.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BoundedReader.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BoundedReader.html new file mode 100644 index 0000000..8023f7c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BoundedReader.html @@ -0,0 +1,421 @@ + + + + + +BoundedReader (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class BoundedReader

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable, Readable
    +
    +
    +
    +
    public class BoundedReader
    +extends Reader
    +
    A reader that imposes a limit to the number of characters that can be read from + an underlying reader, returning eof when this limit is reached -regardless of state of + underlying reader. + +

    + One use case is to avoid overrunning the readAheadLimit supplied to + java.io.Reader#mark(int), since reading too many characters removes the + ability to do a successful reset. +

    +
    Since:
    +
    2.5
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      BoundedReader(Reader target, + int maxCharsFromTargetReader) +
      Constructs a bounded reader
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidclose() +
      Closes the target
      +
      voidmark(int readAheadLimit) +
      marks the target stream, @see java.io.Reader#mark(int).
      +
      intread() +
      Reads a single character, @see java.io.Reader#read()
      +
      intread(char[] cbuf, + int off, + int len) +
      Reads into an array, @see java.io.Reader#read(char[], int, int)
      +
      voidreset() +
      Resets the target to the latest mark, @see java.io.Reader#reset()
      +
      + + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        BoundedReader

        +
        public BoundedReader(Reader target,
        +             int maxCharsFromTargetReader)
        +              throws IOException
        +
        Constructs a bounded reader
        +
        Parameters:
        target - The target stream that will be used
        maxCharsFromTargetReader - The maximum number of characters that can be read from target
        +
        Throws:
        +
        IOException - if mark fails
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + + + + + +
        +
      • +

        reset

        +
        public void reset()
        +           throws IOException
        +
        Resets the target to the latest mark, @see java.io.Reader#reset()
        +
        +
        Overrides:
        +
        reset in class Reader
        +
        Throws:
        +
        IOException - If an I/O error occurs while calling the underlying reader's reset method
        +
      • +
      + + + +
        +
      • +

        mark

        +
        public void mark(int readAheadLimit)
        +          throws IOException
        +
        marks the target stream, @see java.io.Reader#mark(int).
        +
        +
        Overrides:
        +
        mark in class Reader
        +
        Parameters:
        readAheadLimit - The number of characters that can be read while + still retaining the ability to do #reset(). + Note that this parameter is not validated with respect to + maxCharsFromTargetReader. There is no way to pass + past maxCharsFromTargetReader, even if this value is + greater.
        +
        Throws:
        +
        IOException - If an I/O error occurs while calling the underlying reader's mark method
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read()
        +         throws IOException
        +
        Reads a single character, @see java.io.Reader#read()
        +
        +
        Overrides:
        +
        read in class Reader
        +
        Returns:
        -1 on eof or the character read
        +
        Throws:
        +
        IOException - If an I/O error occurs while calling the underlying reader's read method
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(char[] cbuf,
        +       int off,
        +       int len)
        +         throws IOException
        +
        Reads into an array, @see java.io.Reader#read(char[], int, int)
        +
        +
        Specified by:
        +
        read in class Reader
        +
        Parameters:
        cbuf - The buffer to fill
        off - The offset
        len - The number of chars to read
        +
        Returns:
        the number of chars read
        +
        Throws:
        +
        IOException - If an I/O error occurs while calling the underlying reader's read method
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BrokenInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BrokenInputStream.html new file mode 100644 index 0000000..efbd53b --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/BrokenInputStream.html @@ -0,0 +1,403 @@ + + + + + +BrokenInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class BrokenInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class BrokenInputStream
    +extends InputStream
    +
    Broken input stream. This stream always throws an IOException from + all the InputStream methods where the exception is declared. +

    + This class is mostly useful for testing error handling in code that uses an + input stream.

    +
    Since:
    +
    2.0
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        BrokenInputStream

        +
        public BrokenInputStream(IOException exception)
        +
        Creates a new stream that always throws the given exception.
        +
        Parameters:
        exception - the exception to be thrown
        +
      • +
      + + + +
        +
      • +

        BrokenInputStream

        +
        public BrokenInputStream()
        +
        Creates a new stream that always throws an IOException
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CharSequenceInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CharSequenceInputStream.html new file mode 100644 index 0000000..699e275 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CharSequenceInputStream.html @@ -0,0 +1,513 @@ + + + + + +CharSequenceInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class CharSequenceInputStream

+
+
+ +
+ +
+
+ +
+
+ +
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CharSequenceReader.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CharSequenceReader.html new file mode 100644 index 0000000..1ca466e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CharSequenceReader.html @@ -0,0 +1,464 @@ + + + + + +CharSequenceReader (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class CharSequenceReader

+
+
+ +
+ +
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      CharSequenceReader(CharSequence charSequence) +
      Construct a new instance with the specified character sequence.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidclose() +
      Close resets the file back to the start and removes any marked position.
      +
      voidmark(int readAheadLimit) +
      Mark the current position.
      +
      booleanmarkSupported() +
      Mark is supported (returns true).
      +
      intread() +
      Read a single character.
      +
      intread(char[] array, + int offset, + int length) +
      Read the sepcified number of characters into the array.
      +
      voidreset() +
      Reset the reader to the last marked position (or the beginning if + mark has not been called).
      +
      longskip(long n) +
      Skip the specified number of characters.
      +
      StringtoString() +
      Return a String representation of the underlying + character sequence.
      +
      + + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CharSequenceReader

        +
        public CharSequenceReader(CharSequence charSequence)
        +
        Construct a new instance with the specified character sequence.
        +
        Parameters:
        charSequence - The character sequence, may be null
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        close

        +
        public void close()
        +
        Close resets the file back to the start and removes any marked position.
        +
        +
        Specified by:
        +
        close in interface Closeable
        +
        Specified by:
        +
        close in interface AutoCloseable
        +
        Specified by:
        +
        close in class Reader
        +
        +
      • +
      + + + +
        +
      • +

        mark

        +
        public void mark(int readAheadLimit)
        +
        Mark the current position.
        +
        +
        Overrides:
        +
        mark in class Reader
        +
        Parameters:
        readAheadLimit - ignored
        +
      • +
      + + + +
        +
      • +

        markSupported

        +
        public boolean markSupported()
        +
        Mark is supported (returns true).
        +
        +
        Overrides:
        +
        markSupported in class Reader
        +
        Returns:
        true
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read()
        +
        Read a single character.
        +
        +
        Overrides:
        +
        read in class Reader
        +
        Returns:
        the next character from the character sequence + or -1 if the end has been reached.
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(char[] array,
        +       int offset,
        +       int length)
        +
        Read the sepcified number of characters into the array.
        +
        +
        Specified by:
        +
        read in class Reader
        +
        Parameters:
        array - The array to store the characters in
        offset - The starting position in the array to store
        length - The maximum number of characters to read
        +
        Returns:
        The number of characters read or -1 if there are + no more
        +
      • +
      + + + +
        +
      • +

        reset

        +
        public void reset()
        +
        Reset the reader to the last marked position (or the beginning if + mark has not been called).
        +
        +
        Overrides:
        +
        reset in class Reader
        +
        +
      • +
      + + + +
        +
      • +

        skip

        +
        public long skip(long n)
        +
        Skip the specified number of characters.
        +
        +
        Overrides:
        +
        skip in class Reader
        +
        Parameters:
        n - The number of characters to skip
        +
        Returns:
        The actual number of characters skipped
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Return a String representation of the underlying + character sequence.
        +
        +
        Overrides:
        +
        toString in class Object
        +
        Returns:
        The contents of the character sequence
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ClassLoaderObjectInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ClassLoaderObjectInputStream.html new file mode 100644 index 0000000..04e743e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ClassLoaderObjectInputStream.html @@ -0,0 +1,385 @@ + + + + + +ClassLoaderObjectInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class ClassLoaderObjectInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, DataInput, ObjectInput, ObjectStreamConstants, AutoCloseable
    +
    +
    +
    +
    public class ClassLoaderObjectInputStream
    +extends ObjectInputStream
    +
    A special ObjectInputStream that loads a class based on a specified + ClassLoader rather than the system default. +

    + This is useful in dynamic container environments.

    +
    Since:
    +
    1.1
    +
    Version:
    +
    $Id: ClassLoaderObjectInputStream.java 1471767 2013-04-24 23:24:19Z sebb $
    +
  • +
+
+
+ +
+
+ +
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CloseShieldInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CloseShieldInputStream.html new file mode 100644 index 0000000..e145eca --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CloseShieldInputStream.html @@ -0,0 +1,326 @@ + + + + + +CloseShieldInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class CloseShieldInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class CloseShieldInputStream
    +extends ProxyInputStream
    +
    Proxy stream that prevents the underlying input stream from being closed. +

    + This class is typically used in cases where an input stream needs to be + passed to a component that wants to explicitly close the stream even if + more input would still be available to other components.

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: CloseShieldInputStream.java 1415850 2012-11-30 20:51:39Z ggregory $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CloseShieldInputStream

        +
        public CloseShieldInputStream(InputStream in)
        +
        Creates a proxy that shields the given input stream from being + closed.
        +
        Parameters:
        in - underlying input stream
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ClosedInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ClosedInputStream.html new file mode 100644 index 0000000..3738993 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ClosedInputStream.html @@ -0,0 +1,328 @@ + + + + + +ClosedInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class ClosedInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class ClosedInputStream
    +extends InputStream
    +
    Closed input stream. This stream returns EOF to all attempts to read + something from the stream. +

    + Typically uses of this class include testing for corner cases in methods + that accept input streams and acting as a sentinel value instead of a + null input stream.

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: ClosedInputStream.java 1586350 2014-04-10 15:57:20Z ggregory $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        CLOSED_INPUT_STREAM

        +
        public static final ClosedInputStream CLOSED_INPUT_STREAM
        +
        A singleton.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ClosedInputStream

        +
        public ClosedInputStream()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        read

        +
        public int read()
        +
        Returns -1 to indicate that the stream is closed.
        +
        +
        Specified by:
        +
        read in class InputStream
        +
        Returns:
        always -1
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CountingInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CountingInputStream.html new file mode 100644 index 0000000..13f62ca --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/CountingInputStream.html @@ -0,0 +1,432 @@ + + + + + +CountingInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class CountingInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class CountingInputStream
    +extends ProxyInputStream
    +
    A decorating input stream that counts the number of bytes that have passed + through the stream so far. +

    + A typical use case would be during debugging, to ensure that data is being + read as expected.

    +
    Version:
    +
    $Id: CountingInputStream.java 1586350 2014-04-10 15:57:20Z ggregory $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CountingInputStream

        +
        public CountingInputStream(InputStream in)
        +
        Constructs a new CountingInputStream.
        +
        Parameters:
        in - the InputStream to delegate to
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        skip

        +
        public long skip(long length)
        +          throws IOException
        +
        Skips the stream over the specified number of bytes, adding the skipped + amount to the count.
        +
        +
        Overrides:
        +
        skip in class ProxyInputStream
        +
        Parameters:
        length - the number of bytes to skip
        +
        Returns:
        the actual number of bytes skipped
        +
        Throws:
        +
        IOException - if an I/O error occurs
        See Also:
        InputStream.skip(long)
        +
      • +
      + + + +
        +
      • +

        afterRead

        +
        protected void afterRead(int n)
        +
        Adds the number of read bytes to the count.
        +
        +
        Overrides:
        +
        afterRead in class ProxyInputStream
        +
        Parameters:
        n - number of bytes read, or -1 if no more bytes are available
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        getCount

        +
        public int getCount()
        +
        The number of bytes that have passed through this stream. +

        + NOTE: From v1.3 this method throws an ArithmeticException if the + count is greater than can be expressed by an int. + See getByteCount() for a method using a long.

        +
        Returns:
        the number of bytes accumulated
        +
        Throws:
        +
        ArithmeticException - if the byte count is too large
        +
      • +
      + + + +
        +
      • +

        resetCount

        +
        public int resetCount()
        +
        Set the byte count back to 0. +

        + NOTE: From v1.3 this method throws an ArithmeticException if the + count is greater than can be expressed by an int. + See resetByteCount() for a method using a long.

        +
        Returns:
        the count previous to resetting
        +
        Throws:
        +
        ArithmeticException - if the byte count is too large
        +
      • +
      + + + +
        +
      • +

        getByteCount

        +
        public long getByteCount()
        +
        The number of bytes that have passed through this stream. +

        + NOTE: This method is an alternative for getCount() + and was added because that method returns an integer which will + result in incorrect count for files over 2GB.

        +
        Returns:
        the number of bytes accumulated
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        resetByteCount

        +
        public long resetByteCount()
        +
        Set the byte count back to 0. +

        + NOTE: This method is an alternative for resetCount() + and was added because that method returns an integer which will + result in incorrect count for files over 2GB.

        +
        Returns:
        the count previous to resetting
        Since:
        +
        1.3
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/DemuxInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/DemuxInputStream.html new file mode 100644 index 0000000..1f9f799 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/DemuxInputStream.html @@ -0,0 +1,330 @@ + + + + + +DemuxInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class DemuxInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class DemuxInputStream
    +extends InputStream
    +
    Data written to this stream is forwarded to a stream that has been associated + with this thread.
    +
    Version:
    +
    $Id: DemuxInputStream.java 1586350 2014-04-10 15:57:20Z ggregory $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DemuxInputStream

        +
        public DemuxInputStream()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        bindStream

        +
        public InputStream bindStream(InputStream input)
        +
        Bind the specified stream to the current thread.
        +
        Parameters:
        input - the stream to bind
        +
        Returns:
        the InputStream that was previously active
        +
      • +
      + + + + + + + +
        +
      • +

        read

        +
        public int read()
        +         throws IOException
        +
        Read byte from stream associated with current thread.
        +
        +
        Specified by:
        +
        read in class InputStream
        +
        Returns:
        the byte read from stream
        +
        Throws:
        +
        IOException - if an error occurs
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/NullInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/NullInputStream.html new file mode 100644 index 0000000..4c25328 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/NullInputStream.html @@ -0,0 +1,631 @@ + + + + + +NullInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class NullInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class NullInputStream
    +extends InputStream
    +
    A functional, light weight InputStream that emulates + a stream of a specified size. +

    + This implementation provides a light weight + object for testing with an InputStream + where the contents don't matter. +

    + One use case would be for testing the handling of + large InputStream as it can emulate that + scenario without the overhead of actually processing + large numbers of bytes - significantly speeding up + test execution times. +

    + This implementation returns zero from the method that + reads a byte and leaves the array unchanged in the read + methods that are passed a byte array. + If alternative data is required the processByte() and + processBytes() methods can be implemented to generate + data, for example: + +

    +  public class TestInputStream extends NullInputStream {
    +      public TestInputStream(int size) {
    +          super(size);
    +      }
    +      protected int processByte() {
    +          return ... // return required value here
    +      }
    +      protected void processBytes(byte[] bytes, int offset, int length) {
    +          for (int i = offset; i < length; i++) {
    +              bytes[i] = ... // set array value here
    +          }
    +      }
    +  }
    + 
    +
    Since:
    +
    1.3
    +
    Version:
    +
    $Id: NullInputStream.java 1586350 2014-04-10 15:57:20Z ggregory $
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      NullInputStream(long size) +
      Create an InputStream that emulates a specified size + which supports marking and does not throw EOFException.
      +
      NullInputStream(long size, + boolean markSupported, + boolean throwEofException) +
      Create an InputStream that emulates a specified + size with option settings.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      intavailable() +
      Return the number of bytes that can be read.
      +
      voidclose() +
      Close this input stream - resets the internal state to + the initial values.
      +
      longgetPosition() +
      Return the current position.
      +
      longgetSize() +
      Return the size this InputStream emulates.
      +
      voidmark(int readlimit) +
      Mark the current position.
      +
      booleanmarkSupported() +
      Indicates whether mark is supported.
      +
      protected intprocessByte() +
      Return a byte value for the read() method.
      +
      protected voidprocessBytes(byte[] bytes, + int offset, + int length) +
      Process the bytes for the read(byte[], offset, length) + method.
      +
      intread() +
      Read a byte.
      +
      intread(byte[] bytes) +
      Read some bytes into the specified array.
      +
      intread(byte[] bytes, + int offset, + int length) +
      Read the specified number bytes into an array.
      +
      voidreset() +
      Reset the stream to the point when mark was last called.
      +
      longskip(long numberOfBytes) +
      Skip a specified number of bytes.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NullInputStream

        +
        public NullInputStream(long size)
        +
        Create an InputStream that emulates a specified size + which supports marking and does not throw EOFException.
        +
        Parameters:
        size - The size of the input stream to emulate.
        +
      • +
      + + + +
        +
      • +

        NullInputStream

        +
        public NullInputStream(long size,
        +               boolean markSupported,
        +               boolean throwEofException)
        +
        Create an InputStream that emulates a specified + size with option settings.
        +
        Parameters:
        size - The size of the input stream to emulate.
        markSupported - Whether this instance will support + the mark() functionality.
        throwEofException - Whether this implementation + will throw an EOFException or return -1 when the + end of file is reached.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getPosition

        +
        public long getPosition()
        +
        Return the current position.
        +
        Returns:
        the current position.
        +
      • +
      + + + +
        +
      • +

        getSize

        +
        public long getSize()
        +
        Return the size this InputStream emulates.
        +
        Returns:
        The size of the input stream to emulate.
        +
      • +
      + + + +
        +
      • +

        available

        +
        public int available()
        +
        Return the number of bytes that can be read.
        +
        +
        Overrides:
        +
        available in class InputStream
        +
        Returns:
        The number of bytes that can be read.
        +
      • +
      + + + + + + + +
        +
      • +

        mark

        +
        public void mark(int readlimit)
        +
        Mark the current position.
        +
        +
        Overrides:
        +
        mark in class InputStream
        +
        Parameters:
        readlimit - The number of bytes before this marked position + is invalid.
        +
        Throws:
        +
        UnsupportedOperationException - if mark is not supported.
        +
      • +
      + + + +
        +
      • +

        markSupported

        +
        public boolean markSupported()
        +
        Indicates whether mark is supported.
        +
        +
        Overrides:
        +
        markSupported in class InputStream
        +
        Returns:
        Whether mark is supported or not.
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read()
        +         throws IOException
        +
        Read a byte.
        +
        +
        Specified by:
        +
        read in class InputStream
        +
        Returns:
        Either The byte value returned by processByte() + or -1 if the end of file has been reached and + throwEofException is set to false.
        +
        Throws:
        +
        EOFException - if the end of file is reached and + throwEofException is set to true.
        +
        IOException - if trying to read past the end of file.
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] bytes)
        +         throws IOException
        +
        Read some bytes into the specified array.
        +
        +
        Overrides:
        +
        read in class InputStream
        +
        Parameters:
        bytes - The byte array to read into
        +
        Returns:
        The number of bytes read or -1 + if the end of file has been reached and + throwEofException is set to false.
        +
        Throws:
        +
        EOFException - if the end of file is reached and + throwEofException is set to true.
        +
        IOException - if trying to read past the end of file.
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] bytes,
        +       int offset,
        +       int length)
        +         throws IOException
        +
        Read the specified number bytes into an array.
        +
        +
        Overrides:
        +
        read in class InputStream
        +
        Parameters:
        bytes - The byte array to read into.
        offset - The offset to start reading bytes into.
        length - The number of bytes to read.
        +
        Returns:
        The number of bytes read or -1 + if the end of file has been reached and + throwEofException is set to false.
        +
        Throws:
        +
        EOFException - if the end of file is reached and + throwEofException is set to true.
        +
        IOException - if trying to read past the end of file.
        +
      • +
      + + + +
        +
      • +

        reset

        +
        public void reset()
        +           throws IOException
        +
        Reset the stream to the point when mark was last called.
        +
        +
        Overrides:
        +
        reset in class InputStream
        +
        Throws:
        +
        UnsupportedOperationException - if mark is not supported.
        +
        IOException - If no position has been marked + or the read limit has been exceed since the last position was + marked.
        +
      • +
      + + + +
        +
      • +

        skip

        +
        public long skip(long numberOfBytes)
        +          throws IOException
        +
        Skip a specified number of bytes.
        +
        +
        Overrides:
        +
        skip in class InputStream
        +
        Parameters:
        numberOfBytes - The number of bytes to skip.
        +
        Returns:
        The number of bytes skipped or -1 + if the end of file has been reached and + throwEofException is set to false.
        +
        Throws:
        +
        EOFException - if the end of file is reached and + throwEofException is set to true.
        +
        IOException - if trying to read past the end of file.
        +
      • +
      + + + +
        +
      • +

        processByte

        +
        protected int processByte()
        +
        Return a byte value for the read() method. +

        + This implementation returns zero.

        +
        Returns:
        This implementation always returns zero.
        +
      • +
      + + + +
        +
      • +

        processBytes

        +
        protected void processBytes(byte[] bytes,
        +                int offset,
        +                int length)
        +
        Process the bytes for the read(byte[], offset, length) + method. +

        + This implementation leaves the byte array unchanged.

        +
        Parameters:
        bytes - The byte array
        offset - The offset to start at.
        length - The number of bytes.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/NullReader.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/NullReader.html new file mode 100644 index 0000000..940ecee --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/NullReader.html @@ -0,0 +1,633 @@ + + + + + +NullReader (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class NullReader

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable, Readable
    +
    +
    +
    +
    public class NullReader
    +extends Reader
    +
    A functional, light weight Reader that emulates + a reader of a specified size. +

    + This implementation provides a light weight + object for testing with an Reader + where the contents don't matter. +

    + One use case would be for testing the handling of + large Reader as it can emulate that + scenario without the overhead of actually processing + large numbers of characters - significantly speeding up + test execution times. +

    + This implementation returns a space from the method that + reads a character and leaves the array unchanged in the read + methods that are passed a character array. + If alternative data is required the processChar() and + processChars() methods can be implemented to generate + data, for example: + +

    +  public class TestReader extends NullReader {
    +      public TestReader(int size) {
    +          super(size);
    +      }
    +      protected char processChar() {
    +          return ... // return required value here
    +      }
    +      protected void processChars(char[] chars, int offset, int length) {
    +          for (int i = offset; i < length; i++) {
    +              chars[i] = ... // set array value here
    +          }
    +      }
    +  }
    + 
    +
    Since:
    +
    1.3
    +
    Version:
    +
    $Id: NullReader.java 1586350 2014-04-10 15:57:20Z ggregory $
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      NullReader(long size) +
      Create a Reader that emulates a specified size + which supports marking and does not throw EOFException.
      +
      NullReader(long size, + boolean markSupported, + boolean throwEofException) +
      Create a Reader that emulates a specified + size with option settings.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidclose() +
      Close this Reader - resets the internal state to + the initial values.
      +
      longgetPosition() +
      Return the current position.
      +
      longgetSize() +
      Return the size this Reader emulates.
      +
      voidmark(int readlimit) +
      Mark the current position.
      +
      booleanmarkSupported() +
      Indicates whether mark is supported.
      +
      protected intprocessChar() +
      Return a character value for the read() method.
      +
      protected voidprocessChars(char[] chars, + int offset, + int length) +
      Process the characters for the read(char[], offset, length) + method.
      +
      intread() +
      Read a character.
      +
      intread(char[] chars) +
      Read some characters into the specified array.
      +
      intread(char[] chars, + int offset, + int length) +
      Read the specified number characters into an array.
      +
      voidreset() +
      Reset the stream to the point when mark was last called.
      +
      longskip(long numberOfChars) +
      Skip a specified number of characters.
      +
      + + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NullReader

        +
        public NullReader(long size)
        +
        Create a Reader that emulates a specified size + which supports marking and does not throw EOFException.
        +
        Parameters:
        size - The size of the reader to emulate.
        +
      • +
      + + + +
        +
      • +

        NullReader

        +
        public NullReader(long size,
        +          boolean markSupported,
        +          boolean throwEofException)
        +
        Create a Reader that emulates a specified + size with option settings.
        +
        Parameters:
        size - The size of the reader to emulate.
        markSupported - Whether this instance will support + the mark() functionality.
        throwEofException - Whether this implementation + will throw an EOFException or return -1 when the + end of file is reached.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getPosition

        +
        public long getPosition()
        +
        Return the current position.
        +
        Returns:
        the current position.
        +
      • +
      + + + +
        +
      • +

        getSize

        +
        public long getSize()
        +
        Return the size this Reader emulates.
        +
        Returns:
        The size of the reader to emulate.
        +
      • +
      + + + + + + + +
        +
      • +

        mark

        +
        public void mark(int readlimit)
        +
        Mark the current position.
        +
        +
        Overrides:
        +
        mark in class Reader
        +
        Parameters:
        readlimit - The number of characters before this marked position + is invalid.
        +
        Throws:
        +
        UnsupportedOperationException - if mark is not supported.
        +
      • +
      + + + +
        +
      • +

        markSupported

        +
        public boolean markSupported()
        +
        Indicates whether mark is supported.
        +
        +
        Overrides:
        +
        markSupported in class Reader
        +
        Returns:
        Whether mark is supported or not.
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read()
        +         throws IOException
        +
        Read a character.
        +
        +
        Overrides:
        +
        read in class Reader
        +
        Returns:
        Either The character value returned by processChar() + or -1 if the end of file has been reached and + throwEofException is set to false.
        +
        Throws:
        +
        EOFException - if the end of file is reached and + throwEofException is set to true.
        +
        IOException - if trying to read past the end of file.
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(char[] chars)
        +         throws IOException
        +
        Read some characters into the specified array.
        +
        +
        Overrides:
        +
        read in class Reader
        +
        Parameters:
        chars - The character array to read into
        +
        Returns:
        The number of characters read or -1 + if the end of file has been reached and + throwEofException is set to false.
        +
        Throws:
        +
        EOFException - if the end of file is reached and + throwEofException is set to true.
        +
        IOException - if trying to read past the end of file.
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(char[] chars,
        +       int offset,
        +       int length)
        +         throws IOException
        +
        Read the specified number characters into an array.
        +
        +
        Specified by:
        +
        read in class Reader
        +
        Parameters:
        chars - The character array to read into.
        offset - The offset to start reading characters into.
        length - The number of characters to read.
        +
        Returns:
        The number of characters read or -1 + if the end of file has been reached and + throwEofException is set to false.
        +
        Throws:
        +
        EOFException - if the end of file is reached and + throwEofException is set to true.
        +
        IOException - if trying to read past the end of file.
        +
      • +
      + + + +
        +
      • +

        reset

        +
        public void reset()
        +           throws IOException
        +
        Reset the stream to the point when mark was last called.
        +
        +
        Overrides:
        +
        reset in class Reader
        +
        Throws:
        +
        UnsupportedOperationException - if mark is not supported.
        +
        IOException - If no position has been marked + or the read limit has been exceed since the last position was + marked.
        +
      • +
      + + + +
        +
      • +

        skip

        +
        public long skip(long numberOfChars)
        +          throws IOException
        +
        Skip a specified number of characters.
        +
        +
        Overrides:
        +
        skip in class Reader
        +
        Parameters:
        numberOfChars - The number of characters to skip.
        +
        Returns:
        The number of characters skipped or -1 + if the end of file has been reached and + throwEofException is set to false.
        +
        Throws:
        +
        EOFException - if the end of file is reached and + throwEofException is set to true.
        +
        IOException - if trying to read past the end of file.
        +
      • +
      + + + +
        +
      • +

        processChar

        +
        protected int processChar()
        +
        Return a character value for the read() method. +

        + This implementation returns zero.

        +
        Returns:
        This implementation always returns zero.
        +
      • +
      + + + +
        +
      • +

        processChars

        +
        protected void processChars(char[] chars,
        +                int offset,
        +                int length)
        +
        Process the characters for the read(char[], offset, length) + method. +

        + This implementation leaves the character array unchanged.

        +
        Parameters:
        chars - The character array
        offset - The offset to start at.
        length - The number of characters.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ProxyInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ProxyInputStream.html new file mode 100644 index 0000000..f1bd83b --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ProxyInputStream.html @@ -0,0 +1,590 @@ + + + + + +ProxyInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class ProxyInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    Direct Known Subclasses:
    +
    AutoCloseInputStream, BOMInputStream, CloseShieldInputStream, CountingInputStream, SwappedDataInputStream, TaggedInputStream, TeeInputStream
    +
    +
    +
    +
    public abstract class ProxyInputStream
    +extends FilterInputStream
    +
    A Proxy stream which acts as expected, that is it passes the method + calls on to the proxied stream and doesn't change which methods are + being called. +

    + It is an alternative base class to FilterInputStream + to increase reusability, because FilterInputStream changes the + methods being called, such as read(byte[]) to read(byte[], int, int). +

    + See the protected methods for ways in which a subclass can easily decorate + a stream with custom pre-, post- or error processing functionality.

    +
    Version:
    +
    $Id: ProxyInputStream.java 1603493 2014-06-18 15:46:07Z ggregory $
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      ProxyInputStream(InputStream proxy) +
      Constructs a new ProxyInputStream.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      protected voidafterRead(int n) +
      Invoked by the read methods after the proxied call has returned + successfully.
      +
      intavailable() +
      Invokes the delegate's available() method.
      +
      protected voidbeforeRead(int n) +
      Invoked by the read methods before the call is proxied.
      +
      voidclose() +
      Invokes the delegate's close() method.
      +
      protected voidhandleIOException(IOException e) +
      Handle any IOExceptions thrown.
      +
      voidmark(int readlimit) +
      Invokes the delegate's mark(int) method.
      +
      booleanmarkSupported() +
      Invokes the delegate's markSupported() method.
      +
      intread() +
      Invokes the delegate's read() method.
      +
      intread(byte[] bts) +
      Invokes the delegate's read(byte[]) method.
      +
      intread(byte[] bts, + int off, + int len) +
      Invokes the delegate's read(byte[], int, int) method.
      +
      voidreset() +
      Invokes the delegate's reset() method.
      +
      longskip(long ln) +
      Invokes the delegate's skip(long) method.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ProxyInputStream

        +
        public ProxyInputStream(InputStream proxy)
        +
        Constructs a new ProxyInputStream.
        +
        Parameters:
        proxy - the InputStream to delegate to
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        read

        +
        public int read()
        +         throws IOException
        +
        Invokes the delegate's read() method.
        +
        +
        Overrides:
        +
        read in class FilterInputStream
        +
        Returns:
        the byte read or -1 if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] bts)
        +         throws IOException
        +
        Invokes the delegate's read(byte[]) method.
        +
        +
        Overrides:
        +
        read in class FilterInputStream
        +
        Parameters:
        bts - the buffer to read the bytes into
        +
        Returns:
        the number of bytes read or EOF if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] bts,
        +       int off,
        +       int len)
        +         throws IOException
        +
        Invokes the delegate's read(byte[], int, int) method.
        +
        +
        Overrides:
        +
        read in class FilterInputStream
        +
        Parameters:
        bts - the buffer to read the bytes into
        off - The start offset
        len - The number of bytes to read
        +
        Returns:
        the number of bytes read or -1 if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        skip

        +
        public long skip(long ln)
        +          throws IOException
        +
        Invokes the delegate's skip(long) method.
        +
        +
        Overrides:
        +
        skip in class FilterInputStream
        +
        Parameters:
        ln - the number of bytes to skip
        +
        Returns:
        the actual number of bytes skipped
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        available

        +
        public int available()
        +              throws IOException
        +
        Invokes the delegate's available() method.
        +
        +
        Overrides:
        +
        available in class FilterInputStream
        +
        Returns:
        the number of available bytes
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + + + + +
        +
      • +

        mark

        +
        public void mark(int readlimit)
        +
        Invokes the delegate's mark(int) method.
        +
        +
        Overrides:
        +
        mark in class FilterInputStream
        +
        Parameters:
        readlimit - read ahead limit
        +
      • +
      + + + + + + + +
        +
      • +

        markSupported

        +
        public boolean markSupported()
        +
        Invokes the delegate's markSupported() method.
        +
        +
        Overrides:
        +
        markSupported in class FilterInputStream
        +
        Returns:
        true if mark is supported, otherwise false
        +
      • +
      + + + +
        +
      • +

        beforeRead

        +
        protected void beforeRead(int n)
        +                   throws IOException
        +
        Invoked by the read methods before the call is proxied. The number + of bytes that the caller wanted to read (1 for the read() + method, buffer length for read(byte[]), etc.) is given as + an argument. +

        + Subclasses can override this method to add common pre-processing + functionality without having to override all the read methods. + The default implementation does nothing. +

        + Note this method is not called from skip(long) or + reset(). You need to explicitly override those methods if + you want to add pre-processing steps also to them.

        +
        Parameters:
        n - number of bytes that the caller asked to be read
        +
        Throws:
        +
        IOException - if the pre-processing fails
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        afterRead

        +
        protected void afterRead(int n)
        +                  throws IOException
        +
        Invoked by the read methods after the proxied call has returned + successfully. The number of bytes returned to the caller (or -1 if + the end of stream was reached) is given as an argument. +

        + Subclasses can override this method to add common post-processing + functionality without having to override all the read methods. + The default implementation does nothing. +

        + Note this method is not called from skip(long) or + reset(). You need to explicitly override those methods if + you want to add post-processing steps also to them.

        +
        Parameters:
        n - number of bytes read, or -1 if the end of stream was reached
        +
        Throws:
        +
        IOException - if the post-processing fails
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        handleIOException

        +
        protected void handleIOException(IOException e)
        +                          throws IOException
        +
        Handle any IOExceptions thrown. +

        + This method provides a point to implement custom exception + handling. The default behaviour is to re-throw the exception.

        +
        Parameters:
        e - The IOException thrown
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.0
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ProxyReader.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ProxyReader.html new file mode 100644 index 0000000..2d7fc06 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ProxyReader.html @@ -0,0 +1,620 @@ + + + + + +ProxyReader (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class ProxyReader

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable, Readable
    +
    +
    +
    +
    public abstract class ProxyReader
    +extends FilterReader
    +
    A Proxy stream which acts as expected, that is it passes the method + calls on to the proxied stream and doesn't change which methods are + being called. +

    + It is an alternative base class to FilterReader + to increase reusability, because FilterReader changes the + methods being called, such as read(char[]) to read(char[], int, int).

    +
    Version:
    +
    $Id: ProxyReader.java 1586350 2014-04-10 15:57:20Z ggregory $
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      ProxyReader(Reader proxy) +
      Constructs a new ProxyReader.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      protected voidafterRead(int n) +
      Invoked by the read methods after the proxied call has returned + successfully.
      +
      protected voidbeforeRead(int n) +
      Invoked by the read methods before the call is proxied.
      +
      voidclose() +
      Invokes the delegate's close() method.
      +
      protected voidhandleIOException(IOException e) +
      Handle any IOExceptions thrown.
      +
      voidmark(int idx) +
      Invokes the delegate's mark(int) method.
      +
      booleanmarkSupported() +
      Invokes the delegate's markSupported() method.
      +
      intread() +
      Invokes the delegate's read() method.
      +
      intread(char[] chr) +
      Invokes the delegate's read(char[]) method.
      +
      intread(char[] chr, + int st, + int len) +
      Invokes the delegate's read(char[], int, int) method.
      +
      intread(CharBuffer target) +
      Invokes the delegate's read(CharBuffer) method.
      +
      booleanready() +
      Invokes the delegate's ready() method.
      +
      voidreset() +
      Invokes the delegate's reset() method.
      +
      longskip(long ln) +
      Invokes the delegate's skip(long) method.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ProxyReader

        +
        public ProxyReader(Reader proxy)
        +
        Constructs a new ProxyReader.
        +
        Parameters:
        proxy - the Reader to delegate to
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        read

        +
        public int read()
        +         throws IOException
        +
        Invokes the delegate's read() method.
        +
        +
        Overrides:
        +
        read in class FilterReader
        +
        Returns:
        the character read or -1 if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(char[] chr)
        +         throws IOException
        +
        Invokes the delegate's read(char[]) method.
        +
        +
        Overrides:
        +
        read in class Reader
        +
        Parameters:
        chr - the buffer to read the characters into
        +
        Returns:
        the number of characters read or -1 if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(char[] chr,
        +       int st,
        +       int len)
        +         throws IOException
        +
        Invokes the delegate's read(char[], int, int) method.
        +
        +
        Overrides:
        +
        read in class FilterReader
        +
        Parameters:
        chr - the buffer to read the characters into
        st - The start offset
        len - The number of bytes to read
        +
        Returns:
        the number of characters read or -1 if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(CharBuffer target)
        +         throws IOException
        +
        Invokes the delegate's read(CharBuffer) method.
        +
        +
        Specified by:
        +
        read in interface Readable
        +
        Overrides:
        +
        read in class Reader
        +
        Parameters:
        target - the char buffer to read the characters into
        +
        Returns:
        the number of characters read or -1 if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        skip

        +
        public long skip(long ln)
        +          throws IOException
        +
        Invokes the delegate's skip(long) method.
        +
        +
        Overrides:
        +
        skip in class FilterReader
        +
        Parameters:
        ln - the number of bytes to skip
        +
        Returns:
        the number of bytes to skipped or EOF if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        ready

        +
        public boolean ready()
        +              throws IOException
        +
        Invokes the delegate's ready() method.
        +
        +
        Overrides:
        +
        ready in class FilterReader
        +
        Returns:
        true if the stream is ready to be read
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + + + + +
        +
      • +

        mark

        +
        public void mark(int idx)
        +          throws IOException
        +
        Invokes the delegate's mark(int) method.
        +
        +
        Overrides:
        +
        mark in class FilterReader
        +
        Parameters:
        idx - read ahead limit
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + + + + +
        +
      • +

        markSupported

        +
        public boolean markSupported()
        +
        Invokes the delegate's markSupported() method.
        +
        +
        Overrides:
        +
        markSupported in class FilterReader
        +
        Returns:
        true if mark is supported, otherwise false
        +
      • +
      + + + +
        +
      • +

        beforeRead

        +
        protected void beforeRead(int n)
        +                   throws IOException
        +
        Invoked by the read methods before the call is proxied. The number + of chars that the caller wanted to read (1 for the read() + method, buffer length for read(char[]), etc.) is given as + an argument. +

        + Subclasses can override this method to add common pre-processing + functionality without having to override all the read methods. + The default implementation does nothing. +

        + Note this method is not called from skip(long) or + reset(). You need to explicitly override those methods if + you want to add pre-processing steps also to them.

        +
        Parameters:
        n - number of chars that the caller asked to be read
        +
        Throws:
        +
        IOException - if the pre-processing fails
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        afterRead

        +
        protected void afterRead(int n)
        +                  throws IOException
        +
        Invoked by the read methods after the proxied call has returned + successfully. The number of chars returned to the caller (or -1 if + the end of stream was reached) is given as an argument. +

        + Subclasses can override this method to add common post-processing + functionality without having to override all the read methods. + The default implementation does nothing. +

        + Note this method is not called from skip(long) or + reset(). You need to explicitly override those methods if + you want to add post-processing steps also to them.

        +
        Parameters:
        n - number of chars read, or -1 if the end of stream was reached
        +
        Throws:
        +
        IOException - if the post-processing fails
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        handleIOException

        +
        protected void handleIOException(IOException e)
        +                          throws IOException
        +
        Handle any IOExceptions thrown. +

        + This method provides a point to implement custom exception + handling. The default behaviour is to re-throw the exception.

        +
        Parameters:
        e - The IOException thrown
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.0
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ReaderInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ReaderInputStream.html new file mode 100644 index 0000000..871c725 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ReaderInputStream.html @@ -0,0 +1,538 @@ + + + + + +ReaderInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class ReaderInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class ReaderInputStream
    +extends InputStream
    +
    InputStream implementation that reads a character stream from a Reader + and transforms it to a byte stream using a specified charset encoding. The stream + is transformed using a CharsetEncoder object, guaranteeing that all charset + encodings supported by the JRE are handled correctly. In particular for charsets such as + UTF-16, the implementation ensures that one and only one byte order marker + is produced. +

    + Since in general it is not possible to predict the number of characters to be read from the + Reader to satisfy a read request on the ReaderInputStream, all reads from + the Reader are buffered. There is therefore no well defined correlation + between the current position of the Reader and that of the ReaderInputStream. + This also implies that in general there is no need to wrap the underlying Reader + in a BufferedReader. +

    + ReaderInputStream implements the inverse transformation of InputStreamReader; + in the following example, reading from in2 would return the same byte + sequence as reading from in (provided that the initial byte sequence is legal + with respect to the charset encoding): +

    + InputStream in = ...
    + Charset cs = ...
    + InputStreamReader reader = new InputStreamReader(in, cs);
    + ReaderInputStream in2 = new ReaderInputStream(reader, cs);
    + ReaderInputStream implements the same transformation as OutputStreamWriter, + except that the control flow is reversed: both classes transform a character stream + into a byte stream, but OutputStreamWriter pushes data to the underlying stream, + while ReaderInputStream pulls it from the underlying stream. +

    + Note that while there are use cases where there is no alternative to using + this class, very often the need to use this class is an indication of a flaw + in the design of the code. This class is typically used in situations where an existing + API only accepts an InputStream, but where the most natural way to produce the data + is as a character stream, i.e. by providing a Reader instance. An example of a situation + where this problem may appear is when implementing the DataSource + interface from the Java Activation Framework. +

    + Given the fact that the Reader class doesn't provide any way to predict whether the next + read operation will block or not, it is not possible to provide a meaningful + implementation of the InputStream.available() method. A call to this method + will always return 0. Also, this class doesn't support InputStream.mark(int). +

    + Instances of ReaderInputStream are not thread safe.

    +
    Since:
    +
    2.0
    +
    See Also:
    WriterOutputStream
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + + + + + +
        +
      • +

        ReaderInputStream

        +
        public ReaderInputStream(Reader reader,
        +                 CharsetEncoder encoder,
        +                 int bufferSize)
        +
        Construct a new ReaderInputStream.
        +
        Parameters:
        reader - the target Reader
        encoder - the charset encoder
        bufferSize - the size of the input buffer in number of characters
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        ReaderInputStream

        +
        public ReaderInputStream(Reader reader,
        +                 Charset charset,
        +                 int bufferSize)
        +
        Construct a new ReaderInputStream.
        +
        Parameters:
        reader - the target Reader
        charset - the charset encoding
        bufferSize - the size of the input buffer in number of characters
        +
      • +
      + + + +
        +
      • +

        ReaderInputStream

        +
        public ReaderInputStream(Reader reader,
        +                 Charset charset)
        +
        Construct a new ReaderInputStream with a default input buffer size of + 1024 characters.
        +
        Parameters:
        reader - the target Reader
        charset - the charset encoding
        +
      • +
      + + + +
        +
      • +

        ReaderInputStream

        +
        public ReaderInputStream(Reader reader,
        +                 String charsetName,
        +                 int bufferSize)
        +
        Construct a new ReaderInputStream.
        +
        Parameters:
        reader - the target Reader
        charsetName - the name of the charset encoding
        bufferSize - the size of the input buffer in number of characters
        +
      • +
      + + + +
        +
      • +

        ReaderInputStream

        +
        public ReaderInputStream(Reader reader,
        +                 String charsetName)
        +
        Construct a new ReaderInputStream with a default input buffer size of + 1024 characters.
        +
        Parameters:
        reader - the target Reader
        charsetName - the name of the charset encoding
        +
      • +
      + + + + +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        read

        +
        public int read(byte[] b,
        +       int off,
        +       int len)
        +         throws IOException
        +
        Read the specified number of bytes into an array.
        +
        +
        Overrides:
        +
        read in class InputStream
        +
        Parameters:
        b - the byte array to read into
        off - the offset to start reading bytes into
        len - the number of bytes to read
        +
        Returns:
        the number of bytes read or -1 + if the end of the stream has been reached
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] b)
        +         throws IOException
        +
        Read the specified number of bytes into an array.
        +
        +
        Overrides:
        +
        read in class InputStream
        +
        Parameters:
        b - the byte array to read into
        +
        Returns:
        the number of bytes read or -1 + if the end of the stream has been reached
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read()
        +         throws IOException
        +
        Read a single byte.
        +
        +
        Specified by:
        +
        read in class InputStream
        +
        Returns:
        either the byte read or -1 if the end of the stream + has been reached
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ReversedLinesFileReader.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ReversedLinesFileReader.html new file mode 100644 index 0000000..10fdaac --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/ReversedLinesFileReader.html @@ -0,0 +1,383 @@ + + + + + +ReversedLinesFileReader (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class ReversedLinesFileReader

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.input.ReversedLinesFileReader
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class ReversedLinesFileReader
    +extends Object
    +implements Closeable
    +
    Reads lines in a file reversely (similar to a BufferedReader, but starting at + the last line). Useful for e.g. searching in log files.
    +
    Since:
    +
    2.2
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + + + + + +
        +
      • +

        ReversedLinesFileReader

        +
        public ReversedLinesFileReader(File file,
        +                       Charset charset)
        +                        throws IOException
        +
        Creates a ReversedLinesFileReader with default block size of 4KB and the + specified encoding.
        +
        Parameters:
        file - the file to be read
        charset - the encoding to use
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        ReversedLinesFileReader

        +
        public ReversedLinesFileReader(File file,
        +                       int blockSize,
        +                       Charset encoding)
        +                        throws IOException
        +
        Creates a ReversedLinesFileReader with the given block size and encoding.
        +
        Parameters:
        file - the file to be read
        blockSize - size of the internal buffer (for ideal performance this should + match with the block size of the underlying file system).
        encoding - the encoding of the file
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        ReversedLinesFileReader

        +
        public ReversedLinesFileReader(File file,
        +                       int blockSize,
        +                       String encoding)
        +                        throws IOException
        +
        Creates a ReversedLinesFileReader with the given block size and encoding.
        +
        Parameters:
        file - the file to be read
        blockSize - size of the internal buffer (for ideal performance this should + match with the block size of the underlying file system).
        encoding - the encoding of the file
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
        UnsupportedCharsetException - thrown instead of UnsupportedEncodingException in + version 2.2 if the encoding is not supported.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        readLine

        +
        public String readLine()
        +                throws IOException
        +
        Returns the lines of the file from bottom to top.
        +
        Returns:
        the next line or null if the start of the file is reached
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/SwappedDataInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/SwappedDataInputStream.html new file mode 100644 index 0000000..07e6107 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/SwappedDataInputStream.html @@ -0,0 +1,676 @@ + + + + + +SwappedDataInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class SwappedDataInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, DataInput, AutoCloseable
    +
    +
    +
    +
    public class SwappedDataInputStream
    +extends ProxyInputStream
    +implements DataInput
    +
    DataInput for systems relying on little endian data formats. + When read, values will be changed from little endian to big + endian formats for internal usage. +

    + Origin of code: Avalon Excalibur (IO)

    +
    Version:
    +
    CVS $Revision: 1302050 $
    +
  • +
+
+
+ +
+
+ +
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TaggedInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TaggedInputStream.html new file mode 100644 index 0000000..df43bf1 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TaggedInputStream.html @@ -0,0 +1,390 @@ + + + + + +TaggedInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class TaggedInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class TaggedInputStream
    +extends ProxyInputStream
    +
    An input stream decorator that tags potential exceptions so that the + stream that caused the exception can easily be identified. This is + done by using the TaggedIOException class to wrap all thrown + IOExceptions. See below for an example of using this class. +
    + TaggedInputStream stream = new TaggedInputStream(...);
    + try {
    +     // Processing that may throw an IOException either from this stream
    +     // or from some other IO activity like temporary files, etc.
    +     processStream(stream);
    + } catch (IOException e) {
    +     if (stream.isCauseOf(e)) {
    +         // The exception was caused by this stream.
    +         // Use e.getCause() to get the original exception.
    +     } else {
    +         // The exception was caused by something else.
    +     }
    + }
    + 
    +

    + Alternatively, the throwIfCauseOf(Throwable) method can be + used to let higher levels of code handle the exception caused by this + stream while other processing errors are being taken care of at this + lower level. +

    + TaggedInputStream stream = new TaggedInputStream(...);
    + try {
    +     processStream(stream);
    + } catch (IOException e) {
    +     stream.throwIfCauseOf(e);
    +     // ... or process the exception that was caused by something else
    + }
    + 
    +
    Since:
    +
    2.0
    +
    See Also:
    TaggedIOException
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TaggedInputStream

        +
        public TaggedInputStream(InputStream proxy)
        +
        Creates a tagging decorator for the given input stream.
        +
        Parameters:
        proxy - input stream to be decorated
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        isCauseOf

        +
        public boolean isCauseOf(Throwable exception)
        +
        Tests if the given exception was caused by this stream.
        +
        Parameters:
        exception - an exception
        +
        Returns:
        true if the exception was thrown by this stream, + false otherwise
        +
      • +
      + + + +
        +
      • +

        throwIfCauseOf

        +
        public void throwIfCauseOf(Throwable throwable)
        +                    throws IOException
        +
        Re-throws the original exception thrown by this stream. This method + first checks whether the given exception is a TaggedIOException + wrapper created by this decorator, and then unwraps and throws the + original wrapped exception. Returns normally if the exception was + not thrown by this stream.
        +
        Parameters:
        throwable - an exception
        +
        Throws:
        +
        IOException - original exception, if any, thrown by this stream
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/Tailer.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/Tailer.html new file mode 100644 index 0000000..1b4d8de --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/Tailer.html @@ -0,0 +1,753 @@ + + + + + +Tailer (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class Tailer

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Runnable
    +
    +
    +
    +
    public class Tailer
    +extends Object
    +implements Runnable
    +
    Simple implementation of the unix "tail -f" functionality. + +

    1. Create a TailerListener implementation

    +

    + First you need to create a TailerListener implementation + (TailerListenerAdapter is provided for convenience so that you don't have to + implement every method). +

    + +

    For example:

    +
    +  public class MyTailerListener extends TailerListenerAdapter {
    +      public void handle(String line) {
    +          System.out.println(line);
    +      }
    +  }
    + +

    2. Using a Tailer

    + +

    + You can create and use a Tailer in one of three ways: +

    + + +

    + An example of each of these is shown below. +

    + +

    2.1 Using the static helper method

    + +
    +      TailerListener listener = new MyTailerListener();
    +      Tailer tailer = Tailer.create(file, listener, delay);
    + +

    2.2 Using an Executor

    + +
    +      TailerListener listener = new MyTailerListener();
    +      Tailer tailer = new Tailer(file, listener, delay);
    +
    +      // stupid executor impl. for demo purposes
    +      Executor executor = new Executor() {
    +          public void execute(Runnable command) {
    +              command.run();
    +           }
    +      };
    +
    +      executor.execute(tailer);
    + 
    + + +

    2.3 Using a Thread

    +
    +      TailerListener listener = new MyTailerListener();
    +      Tailer tailer = new Tailer(file, listener, delay);
    +      Thread thread = new Thread(tailer);
    +      thread.setDaemon(true); // optional
    +      thread.start();
    + +

    3. Stopping a Tailer

    +

    Remember to stop the tailer when you have done with it:

    +
    +      tailer.stop();
    + 
    + +

    4. Interrupting a Tailer

    +

    You can interrupt the thread a tailer is running on by calling Thread.interrupt().

    +
    +      thread.interrupt();
    + 
    +

    If you interrupt a tailer, the tailer listener is called with the InterruptedException.

    + +

    The file is read using the default charset; this can be overriden if necessary

    +
    Since:
    +
    2.0, 2.5 Updated behavior and documentation for Thread.interrupt()
    +
    Version:
    +
    $Id: Tailer.java 1714076 2015-11-12 16:06:41Z krosenvold $
    +
    See Also:
    TailerListener, +TailerListenerAdapter
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      Tailer(File file, + Charset cset, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen, + int bufSize) +
      Creates a Tailer for the given file, with a specified buffer size.
      +
      Tailer(File file, + TailerListener listener) +
      Creates a Tailer for the given file, starting from the beginning, with the default delay of 1.0s.
      +
      Tailer(File file, + TailerListener listener, + long delayMillis) +
      Creates a Tailer for the given file, starting from the beginning.
      +
      Tailer(File file, + TailerListener listener, + long delayMillis, + boolean end) +
      Creates a Tailer for the given file, with a delay other than the default 1.0s.
      +
      Tailer(File file, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen) +
      Creates a Tailer for the given file, with a delay other than the default 1.0s.
      +
      Tailer(File file, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen, + int bufSize) +
      Creates a Tailer for the given file, with a specified buffer size.
      +
      Tailer(File file, + TailerListener listener, + long delayMillis, + boolean end, + int bufSize) +
      Creates a Tailer for the given file, with a specified buffer size.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      static Tailercreate(File file, + Charset charset, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen, + int bufSize) +
      Creates and starts a Tailer for the given file.
      +
      static Tailercreate(File file, + TailerListener listener) +
      Creates and starts a Tailer for the given file, starting at the beginning of the file + with the default delay of 1.0s
      +
      static Tailercreate(File file, + TailerListener listener, + long delayMillis) +
      Creates and starts a Tailer for the given file, starting at the beginning of the file
      +
      static Tailercreate(File file, + TailerListener listener, + long delayMillis, + boolean end) +
      Creates and starts a Tailer for the given file with default buffer size.
      +
      static Tailercreate(File file, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen) +
      Creates and starts a Tailer for the given file with default buffer size.
      +
      static Tailercreate(File file, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen, + int bufSize) +
      Creates and starts a Tailer for the given file.
      +
      static Tailercreate(File file, + TailerListener listener, + long delayMillis, + boolean end, + int bufSize) +
      Creates and starts a Tailer for the given file.
      +
      longgetDelay() +
      Return the delay in milliseconds.
      +
      FilegetFile() +
      Return the file.
      +
      protected booleangetRun() +
      Gets whether to keep on running.
      +
      voidrun() +
      Follows changes in the file, calling the TailerListener's handle method for each new line.
      +
      voidstop() +
      Allows the tailer to complete its current loop and return.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        Tailer

        +
        public Tailer(File file,
        +      TailerListener listener)
        +
        Creates a Tailer for the given file, starting from the beginning, with the default delay of 1.0s.
        +
        Parameters:
        file - The file to follow.
        listener - the TailerListener to use.
        +
      • +
      + + + +
        +
      • +

        Tailer

        +
        public Tailer(File file,
        +      TailerListener listener,
        +      long delayMillis)
        +
        Creates a Tailer for the given file, starting from the beginning.
        +
        Parameters:
        file - the file to follow.
        listener - the TailerListener to use.
        delayMillis - the delay between checks of the file for new content in milliseconds.
        +
      • +
      + + + +
        +
      • +

        Tailer

        +
        public Tailer(File file,
        +      TailerListener listener,
        +      long delayMillis,
        +      boolean end)
        +
        Creates a Tailer for the given file, with a delay other than the default 1.0s.
        +
        Parameters:
        file - the file to follow.
        listener - the TailerListener to use.
        delayMillis - the delay between checks of the file for new content in milliseconds.
        end - Set to true to tail from the end of the file, false to tail from the beginning of the file.
        +
      • +
      + + + +
        +
      • +

        Tailer

        +
        public Tailer(File file,
        +      TailerListener listener,
        +      long delayMillis,
        +      boolean end,
        +      boolean reOpen)
        +
        Creates a Tailer for the given file, with a delay other than the default 1.0s.
        +
        Parameters:
        file - the file to follow.
        listener - the TailerListener to use.
        delayMillis - the delay between checks of the file for new content in milliseconds.
        end - Set to true to tail from the end of the file, false to tail from the beginning of the file.
        reOpen - if true, close and reopen the file between reading chunks
        +
      • +
      + + + +
        +
      • +

        Tailer

        +
        public Tailer(File file,
        +      TailerListener listener,
        +      long delayMillis,
        +      boolean end,
        +      int bufSize)
        +
        Creates a Tailer for the given file, with a specified buffer size.
        +
        Parameters:
        file - the file to follow.
        listener - the TailerListener to use.
        delayMillis - the delay between checks of the file for new content in milliseconds.
        end - Set to true to tail from the end of the file, false to tail from the beginning of the file.
        bufSize - Buffer size
        +
      • +
      + + + +
        +
      • +

        Tailer

        +
        public Tailer(File file,
        +      TailerListener listener,
        +      long delayMillis,
        +      boolean end,
        +      boolean reOpen,
        +      int bufSize)
        +
        Creates a Tailer for the given file, with a specified buffer size.
        +
        Parameters:
        file - the file to follow.
        listener - the TailerListener to use.
        delayMillis - the delay between checks of the file for new content in milliseconds.
        end - Set to true to tail from the end of the file, false to tail from the beginning of the file.
        reOpen - if true, close and reopen the file between reading chunks
        bufSize - Buffer size
        +
      • +
      + + + +
        +
      • +

        Tailer

        +
        public Tailer(File file,
        +      Charset cset,
        +      TailerListener listener,
        +      long delayMillis,
        +      boolean end,
        +      boolean reOpen,
        +      int bufSize)
        +
        Creates a Tailer for the given file, with a specified buffer size.
        +
        Parameters:
        file - the file to follow.
        cset - the Charset to be used for reading the file
        listener - the TailerListener to use.
        delayMillis - the delay between checks of the file for new content in milliseconds.
        end - Set to true to tail from the end of the file, false to tail from the beginning of the file.
        reOpen - if true, close and reopen the file between reading chunks
        bufSize - Buffer size
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        create

        +
        public static Tailer create(File file,
        +            TailerListener listener,
        +            long delayMillis,
        +            boolean end,
        +            int bufSize)
        +
        Creates and starts a Tailer for the given file.
        +
        Parameters:
        file - the file to follow.
        listener - the TailerListener to use.
        delayMillis - the delay between checks of the file for new content in milliseconds.
        end - Set to true to tail from the end of the file, false to tail from the beginning of the file.
        bufSize - buffer size.
        +
        Returns:
        The new tailer
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static Tailer create(File file,
        +            TailerListener listener,
        +            long delayMillis,
        +            boolean end,
        +            boolean reOpen,
        +            int bufSize)
        +
        Creates and starts a Tailer for the given file.
        +
        Parameters:
        file - the file to follow.
        listener - the TailerListener to use.
        delayMillis - the delay between checks of the file for new content in milliseconds.
        end - Set to true to tail from the end of the file, false to tail from the beginning of the file.
        reOpen - whether to close/reopen the file between chunks
        bufSize - buffer size.
        +
        Returns:
        The new tailer
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static Tailer create(File file,
        +            Charset charset,
        +            TailerListener listener,
        +            long delayMillis,
        +            boolean end,
        +            boolean reOpen,
        +            int bufSize)
        +
        Creates and starts a Tailer for the given file.
        +
        Parameters:
        file - the file to follow.
        charset - the character set to use for reading the file
        listener - the TailerListener to use.
        delayMillis - the delay between checks of the file for new content in milliseconds.
        end - Set to true to tail from the end of the file, false to tail from the beginning of the file.
        reOpen - whether to close/reopen the file between chunks
        bufSize - buffer size.
        +
        Returns:
        The new tailer
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static Tailer create(File file,
        +            TailerListener listener,
        +            long delayMillis,
        +            boolean end)
        +
        Creates and starts a Tailer for the given file with default buffer size.
        +
        Parameters:
        file - the file to follow.
        listener - the TailerListener to use.
        delayMillis - the delay between checks of the file for new content in milliseconds.
        end - Set to true to tail from the end of the file, false to tail from the beginning of the file.
        +
        Returns:
        The new tailer
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static Tailer create(File file,
        +            TailerListener listener,
        +            long delayMillis,
        +            boolean end,
        +            boolean reOpen)
        +
        Creates and starts a Tailer for the given file with default buffer size.
        +
        Parameters:
        file - the file to follow.
        listener - the TailerListener to use.
        delayMillis - the delay between checks of the file for new content in milliseconds.
        end - Set to true to tail from the end of the file, false to tail from the beginning of the file.
        reOpen - whether to close/reopen the file between chunks
        +
        Returns:
        The new tailer
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static Tailer create(File file,
        +            TailerListener listener,
        +            long delayMillis)
        +
        Creates and starts a Tailer for the given file, starting at the beginning of the file
        +
        Parameters:
        file - the file to follow.
        listener - the TailerListener to use.
        delayMillis - the delay between checks of the file for new content in milliseconds.
        +
        Returns:
        The new tailer
        +
      • +
      + + + +
        +
      • +

        create

        +
        public static Tailer create(File file,
        +            TailerListener listener)
        +
        Creates and starts a Tailer for the given file, starting at the beginning of the file + with the default delay of 1.0s
        +
        Parameters:
        file - the file to follow.
        listener - the TailerListener to use.
        +
        Returns:
        The new tailer
        +
      • +
      + + + +
        +
      • +

        getFile

        +
        public File getFile()
        +
        Return the file.
        +
        Returns:
        the file
        +
      • +
      + + + +
        +
      • +

        getRun

        +
        protected boolean getRun()
        +
        Gets whether to keep on running.
        +
        Returns:
        whether to keep on running.
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        getDelay

        +
        public long getDelay()
        +
        Return the delay in milliseconds.
        +
        Returns:
        the delay in milliseconds.
        +
      • +
      + + + +
        +
      • +

        run

        +
        public void run()
        +
        Follows changes in the file, calling the TailerListener's handle method for each new line.
        +
        +
        Specified by:
        +
        run in interface Runnable
        +
        +
      • +
      + + + +
        +
      • +

        stop

        +
        public void stop()
        +
        Allows the tailer to complete its current loop and return.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TailerListener.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TailerListener.html new file mode 100644 index 0000000..423cd86 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TailerListener.html @@ -0,0 +1,298 @@ + + + + + +TailerListener (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Interface TailerListener

+
+
+
+
    +
  • +
    +
    All Known Implementing Classes:
    +
    TailerListenerAdapter
    +
    +
    +
    +
    public interface TailerListener
    +
    Listener for events from a Tailer.
    +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: TailerListener.java 1714076 2015-11-12 16:06:41Z krosenvold $
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      voidfileNotFound() +
      This method is called if the tailed file is not found.
      +
      voidfileRotated() +
      Called if a file rotation is detected.
      +
      voidhandle(Exception ex) +
      Handles an Exception .
      +
      voidhandle(String line) +
      Handles a line from a Tailer.
      +
      voidinit(Tailer tailer) +
      The tailer will call this method during construction, + giving the listener a method of stopping the tailer.
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        init

        +
        void init(Tailer tailer)
        +
        The tailer will call this method during construction, + giving the listener a method of stopping the tailer.
        +
        Parameters:
        tailer - the tailer.
        +
      • +
      + + + +
        +
      • +

        fileNotFound

        +
        void fileNotFound()
        +
        This method is called if the tailed file is not found. +

        + Note: this is called from the tailer thread.

        +
      • +
      + + + +
        +
      • +

        fileRotated

        +
        void fileRotated()
        +
        Called if a file rotation is detected. + + This method is called before the file is reopened, and fileNotFound may + be called if the new file has not yet been created. +

        + Note: this is called from the tailer thread.

        +
      • +
      + + + +
        +
      • +

        handle

        +
        void handle(String line)
        +
        Handles a line from a Tailer. +

        + Note: this is called from the tailer thread.

        +
        Parameters:
        line - the line.
        +
      • +
      + + + +
        +
      • +

        handle

        +
        void handle(Exception ex)
        +
        Handles an Exception . +

        + Note: this is called from the tailer thread.

        +
        Parameters:
        ex - the exception.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TailerListenerAdapter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TailerListenerAdapter.html new file mode 100644 index 0000000..f8870b5 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TailerListenerAdapter.html @@ -0,0 +1,381 @@ + + + + + +TailerListenerAdapter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class TailerListenerAdapter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    TailerListener
    +
    +
    +
    +
    public class TailerListenerAdapter
    +extends Object
    +implements TailerListener
    + +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: TailerListenerAdapter.java 1714076 2015-11-12 16:06:41Z krosenvold $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TailerListenerAdapter

        +
        public TailerListenerAdapter()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        init

        +
        public void init(Tailer tailer)
        +
        The tailer will call this method during construction, + giving the listener a method of stopping the tailer.
        +
        +
        Specified by:
        +
        init in interface TailerListener
        +
        Parameters:
        tailer - the tailer.
        +
      • +
      + + + +
        +
      • +

        fileNotFound

        +
        public void fileNotFound()
        +
        This method is called if the tailed file is not found.
        +
        +
        Specified by:
        +
        fileNotFound in interface TailerListener
        +
        +
      • +
      + + + +
        +
      • +

        fileRotated

        +
        public void fileRotated()
        +
        Called if a file rotation is detected. + + This method is called before the file is reopened, and fileNotFound may + be called if the new file has not yet been created.
        +
        +
        Specified by:
        +
        fileRotated in interface TailerListener
        +
        +
      • +
      + + + +
        +
      • +

        handle

        +
        public void handle(String line)
        +
        Handles a line from a Tailer.
        +
        +
        Specified by:
        +
        handle in interface TailerListener
        +
        Parameters:
        line - the line.
        +
      • +
      + + + +
        +
      • +

        handle

        +
        public void handle(Exception ex)
        +
        Handles an Exception .
        +
        +
        Specified by:
        +
        handle in interface TailerListener
        +
        Parameters:
        ex - the exception.
        +
      • +
      + + + +
        +
      • +

        endOfFileReached

        +
        public void endOfFileReached()
        +
        Called each time the Tailer reaches the end of the file. + + Note: this is called from the tailer thread. + + Note: a future version of commons-io will pull this method up to the TailerListener interface, + for now clients must subclass this class to use this feature.
        +
        Since:
        +
        2.5
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TeeInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TeeInputStream.html new file mode 100644 index 0000000..7636451 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/TeeInputStream.html @@ -0,0 +1,441 @@ + + + + + +TeeInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class TeeInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class TeeInputStream
    +extends ProxyInputStream
    +
    InputStream proxy that transparently writes a copy of all bytes read + from the proxied stream to a given OutputStream. Using ProxyInputStream.skip(long) + or ProxyInputStream.mark(int)/ProxyInputStream.reset() on the stream will result on some + bytes from the input stream being skipped or duplicated in the output + stream. +

    + The proxied input stream is closed when the close() method is + called on this proxy. It is configurable whether the associated output + stream will also closed.

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: TeeInputStream.java 1586350 2014-04-10 15:57:20Z ggregory $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TeeInputStream

        +
        public TeeInputStream(InputStream input,
        +              OutputStream branch)
        +
        Creates a TeeInputStream that proxies the given InputStream + and copies all read bytes to the given OutputStream. The given + output stream will not be closed when this stream gets closed.
        +
        Parameters:
        input - input stream to be proxied
        branch - output stream that will receive a copy of all bytes read
        +
      • +
      + + + +
        +
      • +

        TeeInputStream

        +
        public TeeInputStream(InputStream input,
        +              OutputStream branch,
        +              boolean closeBranch)
        +
        Creates a TeeInputStream that proxies the given InputStream + and copies all read bytes to the given OutputStream. The given + output stream will be closed when this stream gets closed if the + closeBranch parameter is true.
        +
        Parameters:
        input - input stream to be proxied
        branch - output stream that will receive a copy of all bytes read
        closeBranch - flag for closing also the output stream when this + stream is closed
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        close

        +
        public void close()
        +           throws IOException
        +
        Closes the proxied input stream and, if so configured, the associated + output stream. An exception thrown from one stream will not prevent + closing of the other stream.
        +
        +
        Specified by:
        +
        close in interface Closeable
        +
        Specified by:
        +
        close in interface AutoCloseable
        +
        Overrides:
        +
        close in class ProxyInputStream
        +
        Throws:
        +
        IOException - if either of the streams could not be closed
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read()
        +         throws IOException
        +
        Reads a single byte from the proxied input stream and writes it to + the associated output stream.
        +
        +
        Overrides:
        +
        read in class ProxyInputStream
        +
        Returns:
        next byte from the stream, or -1 if the stream has ended
        +
        Throws:
        +
        IOException - if the stream could not be read (or written)
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] bts,
        +       int st,
        +       int end)
        +         throws IOException
        +
        Reads bytes from the proxied input stream and writes the read bytes + to the associated output stream.
        +
        +
        Overrides:
        +
        read in class ProxyInputStream
        +
        Parameters:
        bts - byte buffer
        st - start offset within the buffer
        end - maximum number of bytes to read
        +
        Returns:
        number of bytes read, or -1 if the stream has ended
        +
        Throws:
        +
        IOException - if the stream could not be read (or written)
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] bts)
        +         throws IOException
        +
        Reads bytes from the proxied input stream and writes the read bytes + to the associated output stream.
        +
        +
        Overrides:
        +
        read in class ProxyInputStream
        +
        Parameters:
        bts - byte buffer
        +
        Returns:
        number of bytes read, or -1 if the stream has ended
        +
        Throws:
        +
        IOException - if the stream could not be read (or written)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/UnixLineEndingInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/UnixLineEndingInputStream.html new file mode 100644 index 0000000..4ee3827 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/UnixLineEndingInputStream.html @@ -0,0 +1,330 @@ + + + + + +UnixLineEndingInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class UnixLineEndingInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class UnixLineEndingInputStream
    +extends InputStream
    +
    A filtering input stream that ensures the content will have unix-style line endings, LF.
    +
    Since:
    +
    2.5
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        UnixLineEndingInputStream

        +
        public UnixLineEndingInputStream(InputStream in,
        +                         boolean ensureLineFeedAtEndOfFile)
        +
        Create an input stream that filters another stream
        +
        Parameters:
        in - The input stream to wrap
        ensureLineFeedAtEndOfFile - true to ensure that the file ends with LF
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/WindowsLineEndingInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/WindowsLineEndingInputStream.html new file mode 100644 index 0000000..ddcc045 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/WindowsLineEndingInputStream.html @@ -0,0 +1,330 @@ + + + + + +WindowsLineEndingInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class WindowsLineEndingInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public class WindowsLineEndingInputStream
    +extends InputStream
    +
    A filtering input stream that ensures the content will have windows line endings, CRLF.
    +
    Since:
    +
    2.5
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        WindowsLineEndingInputStream

        +
        public WindowsLineEndingInputStream(InputStream in,
        +                            boolean ensureLineFeedAtEndOfFile)
        +
        Create an input stream that filters another stream
        +
        Parameters:
        in - The input stream to wrap
        ensureLineFeedAtEndOfFile - true to ensure that the file ends with CRLF
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/XmlStreamReader.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/XmlStreamReader.html new file mode 100644 index 0000000..91684ff --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/XmlStreamReader.html @@ -0,0 +1,737 @@ + + + + + +XmlStreamReader (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class XmlStreamReader

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable, Readable
    +
    +
    +
    +
    public class XmlStreamReader
    +extends Reader
    +
    Character stream that handles all the necessary Voodo to figure out the + charset encoding of the XML document within the stream. +

    + IMPORTANT: This class is not related in any way to the org.xml.sax.XMLReader. + This one IS a character stream. +

    + All this has to be done without consuming characters from the stream, if not + the XML parser will not recognized the document as a valid XML. This is not + 100% true, but it's close enough (UTF-8 BOM is not handled by all parsers + right now, XmlStreamReader handles it and things work in all parsers). +

    + The XmlStreamReader class handles the charset encoding of XML documents in + Files, raw streams and HTTP streams by offering a wide set of constructors. +

    + By default the charset encoding detection is lenient, the constructor with + the lenient flag can be used for an script (following HTTP MIME and XML + specifications). All this is nicely explained by Mark Pilgrim in his blog, + Determining the character encoding of a feed. +

    + Originally developed for ROME under + Apache License 2.0.

    +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: XmlStreamReader.java 1686747 2015-06-21 18:44:49Z krosenvold $
    +
    See Also:
    XmlStreamWriter
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        ENCODING_PATTERN

        +
        public static final Pattern ENCODING_PATTERN
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        XmlStreamReader

        +
        public XmlStreamReader(File file)
        +                throws IOException
        +
        Creates a Reader for a File. +

        + It looks for the UTF-8 BOM first, if none sniffs the XML prolog charset, + if this is also missing defaults to UTF-8. +

        + It does a lenient charset encoding detection, check the constructor with + the lenient parameter for details.

        +
        Parameters:
        file - File to create a Reader from.
        +
        Throws:
        +
        IOException - thrown if there is a problem reading the file.
        +
      • +
      + + + +
        +
      • +

        XmlStreamReader

        +
        public XmlStreamReader(InputStream is)
        +                throws IOException
        +
        Creates a Reader for a raw InputStream. +

        + It follows the same logic used for files. +

        + It does a lenient charset encoding detection, check the constructor with + the lenient parameter for details.

        +
        Parameters:
        is - InputStream to create a Reader from.
        +
        Throws:
        +
        IOException - thrown if there is a problem reading the stream.
        +
      • +
      + + + +
        +
      • +

        XmlStreamReader

        +
        public XmlStreamReader(InputStream is,
        +               boolean lenient)
        +                throws IOException
        +
        Creates a Reader for a raw InputStream. +

        + It follows the same logic used for files. +

        + If lenient detection is indicated and the detection above fails as per + specifications it then attempts the following: +

        + If the content type was 'text/html' it replaces it with 'text/xml' and + tries the detection again. +

        + Else if the XML prolog had a charset encoding that encoding is used. +

        + Else if the content type had a charset encoding that encoding is used. +

        + Else 'UTF-8' is used. +

        + If lenient detection is indicated an XmlStreamReaderException is never + thrown.

        +
        Parameters:
        is - InputStream to create a Reader from.
        lenient - indicates if the charset encoding detection should be + relaxed.
        +
        Throws:
        +
        IOException - thrown if there is a problem reading the stream.
        +
        XmlStreamReaderException - thrown if the charset encoding could not + be determined according to the specs.
        +
      • +
      + + + +
        +
      • +

        XmlStreamReader

        +
        public XmlStreamReader(InputStream is,
        +               boolean lenient,
        +               String defaultEncoding)
        +                throws IOException
        +
        Creates a Reader for a raw InputStream. +

        + It follows the same logic used for files. +

        + If lenient detection is indicated and the detection above fails as per + specifications it then attempts the following: +

        + If the content type was 'text/html' it replaces it with 'text/xml' and + tries the detection again. +

        + Else if the XML prolog had a charset encoding that encoding is used. +

        + Else if the content type had a charset encoding that encoding is used. +

        + Else 'UTF-8' is used. +

        + If lenient detection is indicated an XmlStreamReaderException is never + thrown.

        +
        Parameters:
        is - InputStream to create a Reader from.
        lenient - indicates if the charset encoding detection should be + relaxed.
        defaultEncoding - The default encoding
        +
        Throws:
        +
        IOException - thrown if there is a problem reading the stream.
        +
        XmlStreamReaderException - thrown if the charset encoding could not + be determined according to the specs.
        +
      • +
      + + + +
        +
      • +

        XmlStreamReader

        +
        public XmlStreamReader(URL url)
        +                throws IOException
        +
        Creates a Reader using the InputStream of a URL. +

        + If the URL is not of type HTTP and there is not 'content-type' header in + the fetched data it uses the same logic used for Files. +

        + If the URL is a HTTP Url or there is a 'content-type' header in the + fetched data it uses the same logic used for an InputStream with + content-type. +

        + It does a lenient charset encoding detection, check the constructor with + the lenient parameter for details.

        +
        Parameters:
        url - URL to create a Reader from.
        +
        Throws:
        +
        IOException - thrown if there is a problem reading the stream of + the URL.
        +
      • +
      + + + +
        +
      • +

        XmlStreamReader

        +
        public XmlStreamReader(URLConnection conn,
        +               String defaultEncoding)
        +                throws IOException
        +
        Creates a Reader using the InputStream of a URLConnection. +

        + If the URLConnection is not of type HttpURLConnection and there is not + 'content-type' header in the fetched data it uses the same logic used for + files. +

        + If the URLConnection is a HTTP Url or there is a 'content-type' header in + the fetched data it uses the same logic used for an InputStream with + content-type. +

        + It does a lenient charset encoding detection, check the constructor with + the lenient parameter for details.

        +
        Parameters:
        conn - URLConnection to create a Reader from.
        defaultEncoding - The default encoding
        +
        Throws:
        +
        IOException - thrown if there is a problem reading the stream of + the URLConnection.
        +
      • +
      + + + +
        +
      • +

        XmlStreamReader

        +
        public XmlStreamReader(InputStream is,
        +               String httpContentType)
        +                throws IOException
        +
        Creates a Reader using an InputStream an the associated content-type + header. +

        + First it checks if the stream has BOM. If there is not BOM checks the + content-type encoding. If there is not content-type encoding checks the + XML prolog encoding. If there is not XML prolog encoding uses the default + encoding mandated by the content-type MIME type. +

        + It does a lenient charset encoding detection, check the constructor with + the lenient parameter for details.

        +
        Parameters:
        is - InputStream to create the reader from.
        httpContentType - content-type header to use for the resolution of + the charset encoding.
        +
        Throws:
        +
        IOException - thrown if there is a problem reading the file.
        +
      • +
      + + + +
        +
      • +

        XmlStreamReader

        +
        public XmlStreamReader(InputStream is,
        +               String httpContentType,
        +               boolean lenient,
        +               String defaultEncoding)
        +                throws IOException
        +
        Creates a Reader using an InputStream an the associated content-type + header. This constructor is lenient regarding the encoding detection. +

        + First it checks if the stream has BOM. If there is not BOM checks the + content-type encoding. If there is not content-type encoding checks the + XML prolog encoding. If there is not XML prolog encoding uses the default + encoding mandated by the content-type MIME type. +

        + If lenient detection is indicated and the detection above fails as per + specifications it then attempts the following: +

        + If the content type was 'text/html' it replaces it with 'text/xml' and + tries the detection again. +

        + Else if the XML prolog had a charset encoding that encoding is used. +

        + Else if the content type had a charset encoding that encoding is used. +

        + Else 'UTF-8' is used. +

        + If lenient detection is indicated an XmlStreamReaderException is never + thrown.

        +
        Parameters:
        is - InputStream to create the reader from.
        httpContentType - content-type header to use for the resolution of + the charset encoding.
        lenient - indicates if the charset encoding detection should be + relaxed.
        defaultEncoding - The default encoding
        +
        Throws:
        +
        IOException - thrown if there is a problem reading the file.
        +
        XmlStreamReaderException - thrown if the charset encoding could not + be determined according to the specs.
        +
      • +
      + + + +
        +
      • +

        XmlStreamReader

        +
        public XmlStreamReader(InputStream is,
        +               String httpContentType,
        +               boolean lenient)
        +                throws IOException
        +
        Creates a Reader using an InputStream an the associated content-type + header. This constructor is lenient regarding the encoding detection. +

        + First it checks if the stream has BOM. If there is not BOM checks the + content-type encoding. If there is not content-type encoding checks the + XML prolog encoding. If there is not XML prolog encoding uses the default + encoding mandated by the content-type MIME type. +

        + If lenient detection is indicated and the detection above fails as per + specifications it then attempts the following: +

        + If the content type was 'text/html' it replaces it with 'text/xml' and + tries the detection again. +

        + Else if the XML prolog had a charset encoding that encoding is used. +

        + Else if the content type had a charset encoding that encoding is used. +

        + Else 'UTF-8' is used. +

        + If lenient detection is indicated an XmlStreamReaderException is never + thrown.

        +
        Parameters:
        is - InputStream to create the reader from.
        httpContentType - content-type header to use for the resolution of + the charset encoding.
        lenient - indicates if the charset encoding detection should be + relaxed.
        +
        Throws:
        +
        IOException - thrown if there is a problem reading the file.
        +
        XmlStreamReaderException - thrown if the charset encoding could not + be determined according to the specs.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getDefaultEncoding

        +
        public String getDefaultEncoding()
        +
        Returns the default encoding to use if none is set in HTTP content-type, + XML prolog and the rules based on content-type are not adequate. +

        + If it is NULL the content-type based rules are used.

        +
        Returns:
        the default encoding to use.
        +
      • +
      + + + +
        +
      • +

        getEncoding

        +
        public String getEncoding()
        +
        Returns the charset encoding of the XmlStreamReader.
        +
        Returns:
        charset encoding.
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(char[] buf,
        +       int offset,
        +       int len)
        +         throws IOException
        +
        Invokes the underlying reader's read(char[], int, int) method.
        +
        +
        Specified by:
        +
        read in class Reader
        +
        Parameters:
        buf - the buffer to read the characters into
        offset - The start offset
        len - The number of bytes to read
        +
        Returns:
        the number of characters read or -1 if the end of stream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/XmlStreamReaderException.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/XmlStreamReaderException.html new file mode 100644 index 0000000..8a84bcf --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/XmlStreamReaderException.html @@ -0,0 +1,418 @@ + + + + + +XmlStreamReaderException (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.input
+

Class XmlStreamReaderException

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable
    +
    +
    +
    +
    public class XmlStreamReaderException
    +extends IOException
    +
    The XmlStreamReaderException is thrown by the XmlStreamReader constructors if + the charset encoding can not be determined according to the XML 1.0 + specification and RFC 3023. +

    + The exception returns the unconsumed InputStream to allow the application to + do an alternate processing with the stream. Note that the original + InputStream given to the XmlStreamReader cannot be used as that one has been + already read.

    +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: XmlStreamReaderException.java 1415850 2012-11-30 20:51:39Z ggregory $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        XmlStreamReaderException

        +
        public XmlStreamReaderException(String msg,
        +                        String bomEnc,
        +                        String xmlGuessEnc,
        +                        String xmlEnc)
        +
        Creates an exception instance if the charset encoding could not be + determined. +

        + Instances of this exception are thrown by the XmlStreamReader.

        +
        Parameters:
        msg - message describing the reason for the exception.
        bomEnc - BOM encoding.
        xmlGuessEnc - XML guess encoding.
        xmlEnc - XML prolog encoding.
        +
      • +
      + + + +
        +
      • +

        XmlStreamReaderException

        +
        public XmlStreamReaderException(String msg,
        +                        String ctMime,
        +                        String ctEnc,
        +                        String bomEnc,
        +                        String xmlGuessEnc,
        +                        String xmlEnc)
        +
        Creates an exception instance if the charset encoding could not be + determined. +

        + Instances of this exception are thrown by the XmlStreamReader.

        +
        Parameters:
        msg - message describing the reason for the exception.
        ctMime - MIME type in the content-type.
        ctEnc - encoding in the content-type.
        bomEnc - BOM encoding.
        xmlGuessEnc - XML guess encoding.
        xmlEnc - XML prolog encoding.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getBomEncoding

        +
        public String getBomEncoding()
        +
        Returns the BOM encoding found in the InputStream.
        +
        Returns:
        the BOM encoding, null if none.
        +
      • +
      + + + +
        +
      • +

        getXmlGuessEncoding

        +
        public String getXmlGuessEncoding()
        +
        Returns the encoding guess based on the first bytes of the InputStream.
        +
        Returns:
        the encoding guess, null if it couldn't be guessed.
        +
      • +
      + + + +
        +
      • +

        getXmlEncoding

        +
        public String getXmlEncoding()
        +
        Returns the encoding found in the XML prolog of the InputStream.
        +
        Returns:
        the encoding of the XML prolog, null if none.
        +
      • +
      + + + +
        +
      • +

        getContentTypeMime

        +
        public String getContentTypeMime()
        +
        Returns the MIME type in the content-type used to attempt determining the + encoding.
        +
        Returns:
        the MIME type in the content-type, null if there was not + content-type or the encoding detection did not involve HTTP.
        +
      • +
      + + + +
        +
      • +

        getContentTypeEncoding

        +
        public String getContentTypeEncoding()
        +
        Returns the encoding in the content-type used to attempt determining the + encoding.
        +
        Returns:
        the encoding in the content-type, null if there was not + content-type, no encoding in it or the encoding detection did not + involve HTTP.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/AutoCloseInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/AutoCloseInputStream.html new file mode 100644 index 0000000..b016cf3 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/AutoCloseInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.AutoCloseInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.AutoCloseInputStream

+
+
No usage of org.apache.commons.io.input.AutoCloseInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BOMInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BOMInputStream.html new file mode 100644 index 0000000..1949674 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BOMInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.BOMInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.BOMInputStream

+
+
No usage of org.apache.commons.io.input.BOMInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BoundedInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BoundedInputStream.html new file mode 100644 index 0000000..c4e320b --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BoundedInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.BoundedInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.BoundedInputStream

+
+
No usage of org.apache.commons.io.input.BoundedInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BoundedReader.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BoundedReader.html new file mode 100644 index 0000000..da066ba --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BoundedReader.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.BoundedReader (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.BoundedReader

+
+
No usage of org.apache.commons.io.input.BoundedReader
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BrokenInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BrokenInputStream.html new file mode 100644 index 0000000..f0a604d --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/BrokenInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.BrokenInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.BrokenInputStream

+
+
No usage of org.apache.commons.io.input.BrokenInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CharSequenceInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CharSequenceInputStream.html new file mode 100644 index 0000000..695da93 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CharSequenceInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.CharSequenceInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.CharSequenceInputStream

+
+
No usage of org.apache.commons.io.input.CharSequenceInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CharSequenceReader.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CharSequenceReader.html new file mode 100644 index 0000000..6ee51e2 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CharSequenceReader.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.CharSequenceReader (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.CharSequenceReader

+
+
No usage of org.apache.commons.io.input.CharSequenceReader
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ClassLoaderObjectInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ClassLoaderObjectInputStream.html new file mode 100644 index 0000000..e97bbdc --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ClassLoaderObjectInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.ClassLoaderObjectInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.ClassLoaderObjectInputStream

+
+
No usage of org.apache.commons.io.input.ClassLoaderObjectInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CloseShieldInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CloseShieldInputStream.html new file mode 100644 index 0000000..714ed5e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CloseShieldInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.CloseShieldInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.CloseShieldInputStream

+
+
No usage of org.apache.commons.io.input.CloseShieldInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ClosedInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ClosedInputStream.html new file mode 100644 index 0000000..e41bb63 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ClosedInputStream.html @@ -0,0 +1,161 @@ + + + + + +Uses of Class org.apache.commons.io.input.ClosedInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.ClosedInputStream

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CountingInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CountingInputStream.html new file mode 100644 index 0000000..1832ba6 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/CountingInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.CountingInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.CountingInputStream

+
+
No usage of org.apache.commons.io.input.CountingInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/DemuxInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/DemuxInputStream.html new file mode 100644 index 0000000..e2bd27e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/DemuxInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.DemuxInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.DemuxInputStream

+
+
No usage of org.apache.commons.io.input.DemuxInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/NullInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/NullInputStream.html new file mode 100644 index 0000000..9769b48 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/NullInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.NullInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.NullInputStream

+
+
No usage of org.apache.commons.io.input.NullInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/NullReader.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/NullReader.html new file mode 100644 index 0000000..eeefa45 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/NullReader.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.NullReader (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.NullReader

+
+
No usage of org.apache.commons.io.input.NullReader
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ProxyInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ProxyInputStream.html new file mode 100644 index 0000000..83fc91a --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ProxyInputStream.html @@ -0,0 +1,201 @@ + + + + + +Uses of Class org.apache.commons.io.input.ProxyInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.ProxyInputStream

+
+
+
    +
  • + + + + + + + + + + + + +
    Packages that use ProxyInputStream 
    PackageDescription
    org.apache.commons.io.input +
    +This package provides implementations of input classes, such as +InputStream and Reader.
    +
    +
  • +
  • +
      +
    • + + +

      Uses of ProxyInputStream in org.apache.commons.io.input

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Subclasses of ProxyInputStream in org.apache.commons.io.input 
      Modifier and TypeClass and Description
      class AutoCloseInputStream +
      Proxy stream that closes and discards the underlying stream as soon as the + end of input has been reached or when the stream is explicitly closed.
      +
      class BOMInputStream +
      This class is used to wrap a stream that includes an encoded ByteOrderMark as its first bytes.
      +
      class CloseShieldInputStream +
      Proxy stream that prevents the underlying input stream from being closed.
      +
      class CountingInputStream +
      A decorating input stream that counts the number of bytes that have passed + through the stream so far.
      +
      class SwappedDataInputStream +
      DataInput for systems relying on little endian data formats.
      +
      class TaggedInputStream +
      An input stream decorator that tags potential exceptions so that the + stream that caused the exception can easily be identified.
      +
      class TeeInputStream +
      InputStream proxy that transparently writes a copy of all bytes read + from the proxied stream to a given OutputStream.
      +
      +
    • +
    +
  • +
+
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ProxyReader.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ProxyReader.html new file mode 100644 index 0000000..c4ec21d --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ProxyReader.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.ProxyReader (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.ProxyReader

+
+
No usage of org.apache.commons.io.input.ProxyReader
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ReaderInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ReaderInputStream.html new file mode 100644 index 0000000..4564bba --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ReaderInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.ReaderInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.ReaderInputStream

+
+
No usage of org.apache.commons.io.input.ReaderInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ReversedLinesFileReader.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ReversedLinesFileReader.html new file mode 100644 index 0000000..1f637c2 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/ReversedLinesFileReader.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.ReversedLinesFileReader (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.ReversedLinesFileReader

+
+
No usage of org.apache.commons.io.input.ReversedLinesFileReader
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/SwappedDataInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/SwappedDataInputStream.html new file mode 100644 index 0000000..c2b54b4 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/SwappedDataInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.SwappedDataInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.SwappedDataInputStream

+
+
No usage of org.apache.commons.io.input.SwappedDataInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TaggedInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TaggedInputStream.html new file mode 100644 index 0000000..07a7ee0 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TaggedInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.TaggedInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.TaggedInputStream

+
+
No usage of org.apache.commons.io.input.TaggedInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/Tailer.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/Tailer.html new file mode 100644 index 0000000..4bcb65d --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/Tailer.html @@ -0,0 +1,246 @@ + + + + + +Uses of Class org.apache.commons.io.input.Tailer (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.Tailer

+
+
+
    +
  • + + + + + + + + + + + + +
    Packages that use Tailer 
    PackageDescription
    org.apache.commons.io.input +
    +This package provides implementations of input classes, such as +InputStream and Reader.
    +
    +
  • +
  • +
      +
    • + + +

      Uses of Tailer in org.apache.commons.io.input

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods in org.apache.commons.io.input that return Tailer 
      Modifier and TypeMethod and Description
      static TailerTailer.create(File file, + Charset charset, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen, + int bufSize) +
      Creates and starts a Tailer for the given file.
      +
      static TailerTailer.create(File file, + TailerListener listener) +
      Creates and starts a Tailer for the given file, starting at the beginning of the file + with the default delay of 1.0s
      +
      static TailerTailer.create(File file, + TailerListener listener, + long delayMillis) +
      Creates and starts a Tailer for the given file, starting at the beginning of the file
      +
      static TailerTailer.create(File file, + TailerListener listener, + long delayMillis, + boolean end) +
      Creates and starts a Tailer for the given file with default buffer size.
      +
      static TailerTailer.create(File file, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen) +
      Creates and starts a Tailer for the given file with default buffer size.
      +
      static TailerTailer.create(File file, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen, + int bufSize) +
      Creates and starts a Tailer for the given file.
      +
      static TailerTailer.create(File file, + TailerListener listener, + long delayMillis, + boolean end, + int bufSize) +
      Creates and starts a Tailer for the given file.
      +
      + + + + + + + + + + + + + + + + +
      Methods in org.apache.commons.io.input with parameters of type Tailer 
      Modifier and TypeMethod and Description
      voidTailerListenerAdapter.init(Tailer tailer) +
      The tailer will call this method during construction, + giving the listener a method of stopping the tailer.
      +
      voidTailerListener.init(Tailer tailer) +
      The tailer will call this method during construction, + giving the listener a method of stopping the tailer.
      +
      +
    • +
    +
  • +
+
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TailerListener.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TailerListener.html new file mode 100644 index 0000000..864e12b --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TailerListener.html @@ -0,0 +1,306 @@ + + + + + +Uses of Interface org.apache.commons.io.input.TailerListener (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Interface
org.apache.commons.io.input.TailerListener

+
+
+
    +
  • + + + + + + + + + + + + +
    Packages that use TailerListener 
    PackageDescription
    org.apache.commons.io.input +
    +This package provides implementations of input classes, such as +InputStream and Reader.
    +
    +
  • +
  • +
      +
    • + + +

      Uses of TailerListener in org.apache.commons.io.input

      + + + + + + + + + + + + +
      Classes in org.apache.commons.io.input that implement TailerListener 
      Modifier and TypeClass and Description
      class TailerListenerAdapter + +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods in org.apache.commons.io.input with parameters of type TailerListener 
      Modifier and TypeMethod and Description
      static TailerTailer.create(File file, + Charset charset, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen, + int bufSize) +
      Creates and starts a Tailer for the given file.
      +
      static TailerTailer.create(File file, + TailerListener listener) +
      Creates and starts a Tailer for the given file, starting at the beginning of the file + with the default delay of 1.0s
      +
      static TailerTailer.create(File file, + TailerListener listener, + long delayMillis) +
      Creates and starts a Tailer for the given file, starting at the beginning of the file
      +
      static TailerTailer.create(File file, + TailerListener listener, + long delayMillis, + boolean end) +
      Creates and starts a Tailer for the given file with default buffer size.
      +
      static TailerTailer.create(File file, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen) +
      Creates and starts a Tailer for the given file with default buffer size.
      +
      static TailerTailer.create(File file, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen, + int bufSize) +
      Creates and starts a Tailer for the given file.
      +
      static TailerTailer.create(File file, + TailerListener listener, + long delayMillis, + boolean end, + int bufSize) +
      Creates and starts a Tailer for the given file.
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Constructors in org.apache.commons.io.input with parameters of type TailerListener 
      Constructor and Description
      Tailer(File file, + Charset cset, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen, + int bufSize) +
      Creates a Tailer for the given file, with a specified buffer size.
      +
      Tailer(File file, + TailerListener listener) +
      Creates a Tailer for the given file, starting from the beginning, with the default delay of 1.0s.
      +
      Tailer(File file, + TailerListener listener, + long delayMillis) +
      Creates a Tailer for the given file, starting from the beginning.
      +
      Tailer(File file, + TailerListener listener, + long delayMillis, + boolean end) +
      Creates a Tailer for the given file, with a delay other than the default 1.0s.
      +
      Tailer(File file, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen) +
      Creates a Tailer for the given file, with a delay other than the default 1.0s.
      +
      Tailer(File file, + TailerListener listener, + long delayMillis, + boolean end, + boolean reOpen, + int bufSize) +
      Creates a Tailer for the given file, with a specified buffer size.
      +
      Tailer(File file, + TailerListener listener, + long delayMillis, + boolean end, + int bufSize) +
      Creates a Tailer for the given file, with a specified buffer size.
      +
      +
    • +
    +
  • +
+
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TailerListenerAdapter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TailerListenerAdapter.html new file mode 100644 index 0000000..587c27c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TailerListenerAdapter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.TailerListenerAdapter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.TailerListenerAdapter

+
+
No usage of org.apache.commons.io.input.TailerListenerAdapter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TeeInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TeeInputStream.html new file mode 100644 index 0000000..3c7fb81 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/TeeInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.TeeInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.TeeInputStream

+
+
No usage of org.apache.commons.io.input.TeeInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/UnixLineEndingInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/UnixLineEndingInputStream.html new file mode 100644 index 0000000..5b591bc --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/UnixLineEndingInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.UnixLineEndingInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.UnixLineEndingInputStream

+
+
No usage of org.apache.commons.io.input.UnixLineEndingInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/WindowsLineEndingInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/WindowsLineEndingInputStream.html new file mode 100644 index 0000000..8b3def0 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/WindowsLineEndingInputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.WindowsLineEndingInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.WindowsLineEndingInputStream

+
+
No usage of org.apache.commons.io.input.WindowsLineEndingInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/XmlStreamReader.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/XmlStreamReader.html new file mode 100644 index 0000000..6ef1ea2 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/XmlStreamReader.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.XmlStreamReader (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.XmlStreamReader

+
+
No usage of org.apache.commons.io.input.XmlStreamReader
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/XmlStreamReaderException.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/XmlStreamReaderException.html new file mode 100644 index 0000000..b9221a9 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/class-use/XmlStreamReaderException.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.input.XmlStreamReaderException (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.input.XmlStreamReaderException

+
+
No usage of org.apache.commons.io.input.XmlStreamReaderException
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-frame.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-frame.html new file mode 100644 index 0000000..2f1c20c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-frame.html @@ -0,0 +1,51 @@ + + + + + +org.apache.commons.io.input (Apache Commons IO 2.5 API) + + + +

org.apache.commons.io.input

+ + + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-summary.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-summary.html new file mode 100644 index 0000000..fd50c6e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-summary.html @@ -0,0 +1,355 @@ + + + + + +org.apache.commons.io.input (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Package org.apache.commons.io.input

+
+
+This package provides implementations of input classes, such as +InputStream and Reader.
+
+

See: Description

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    TailerListener +
    Listener for events from a Tailer.
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    AutoCloseInputStream +
    Proxy stream that closes and discards the underlying stream as soon as the + end of input has been reached or when the stream is explicitly closed.
    +
    BOMInputStream +
    This class is used to wrap a stream that includes an encoded ByteOrderMark as its first bytes.
    +
    BoundedInputStream +
    This is a stream that will only supply bytes up to a certain length - if its + position goes above that, it will stop.
    +
    BoundedReader +
    A reader that imposes a limit to the number of characters that can be read from + an underlying reader, returning eof when this limit is reached -regardless of state of + underlying reader.
    +
    BrokenInputStream +
    Broken input stream.
    +
    CharSequenceInputStream +
    InputStream implementation that can read from String, StringBuffer, + StringBuilder or CharBuffer.
    +
    CharSequenceReader +
    Reader implementation that can read from String, StringBuffer, + StringBuilder or CharBuffer.
    +
    ClassLoaderObjectInputStream +
    A special ObjectInputStream that loads a class based on a specified + ClassLoader rather than the system default.
    +
    ClosedInputStream +
    Closed input stream.
    +
    CloseShieldInputStream +
    Proxy stream that prevents the underlying input stream from being closed.
    +
    CountingInputStream +
    A decorating input stream that counts the number of bytes that have passed + through the stream so far.
    +
    DemuxInputStream +
    Data written to this stream is forwarded to a stream that has been associated + with this thread.
    +
    NullInputStream +
    A functional, light weight InputStream that emulates + a stream of a specified size.
    +
    NullReader +
    A functional, light weight Reader that emulates + a reader of a specified size.
    +
    ProxyInputStream +
    A Proxy stream which acts as expected, that is it passes the method + calls on to the proxied stream and doesn't change which methods are + being called.
    +
    ProxyReader +
    A Proxy stream which acts as expected, that is it passes the method + calls on to the proxied stream and doesn't change which methods are + being called.
    +
    ReaderInputStream +
    InputStream implementation that reads a character stream from a Reader + and transforms it to a byte stream using a specified charset encoding.
    +
    ReversedLinesFileReader +
    Reads lines in a file reversely (similar to a BufferedReader, but starting at + the last line).
    +
    SwappedDataInputStream +
    DataInput for systems relying on little endian data formats.
    +
    TaggedInputStream +
    An input stream decorator that tags potential exceptions so that the + stream that caused the exception can easily be identified.
    +
    Tailer +
    Simple implementation of the unix "tail -f" functionality.
    +
    TailerListenerAdapter + +
    TeeInputStream +
    InputStream proxy that transparently writes a copy of all bytes read + from the proxied stream to a given OutputStream.
    +
    UnixLineEndingInputStream +
    A filtering input stream that ensures the content will have unix-style line endings, LF.
    +
    WindowsLineEndingInputStream +
    A filtering input stream that ensures the content will have windows line endings, CRLF.
    +
    XmlStreamReader +
    Character stream that handles all the necessary Voodo to figure out the + charset encoding of the XML document within the stream.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Exception Summary 
    ExceptionDescription
    XmlStreamReaderException +
    The XmlStreamReaderException is thrown by the XmlStreamReader constructors if + the charset encoding can not be determined according to the XML 1.0 + specification and RFC 3023.
    +
    +
  • +
+ + + +

Package org.apache.commons.io.input Description

+

+This package provides implementations of input classes, such as +InputStream and Reader. +

+
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-tree.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-tree.html new file mode 100644 index 0000000..f30857f --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-tree.html @@ -0,0 +1,193 @@ + + + + + +org.apache.commons.io.input Class Hierarchy (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For Package org.apache.commons.io.input

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-use.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-use.html new file mode 100644 index 0000000..f182f2a --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/input/package-use.html @@ -0,0 +1,171 @@ + + + + + +Uses of Package org.apache.commons.io.input (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Package
org.apache.commons.io.input

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationListener.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationListener.html new file mode 100644 index 0000000..bef1978 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationListener.html @@ -0,0 +1,341 @@ + + + + + +FileAlterationListener (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.monitor
+

Interface FileAlterationListener

+
+
+
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        onStart

        +
        void onStart(FileAlterationObserver observer)
        +
        File system observer started checking event.
        +
        Parameters:
        observer - The file system observer
        +
      • +
      + + + +
        +
      • +

        onDirectoryCreate

        +
        void onDirectoryCreate(File directory)
        +
        Directory created Event.
        +
        Parameters:
        directory - The directory created
        +
      • +
      + + + +
        +
      • +

        onDirectoryChange

        +
        void onDirectoryChange(File directory)
        +
        Directory changed Event.
        +
        Parameters:
        directory - The directory changed
        +
      • +
      + + + +
        +
      • +

        onDirectoryDelete

        +
        void onDirectoryDelete(File directory)
        +
        Directory deleted Event.
        +
        Parameters:
        directory - The directory deleted
        +
      • +
      + + + +
        +
      • +

        onFileCreate

        +
        void onFileCreate(File file)
        +
        File created Event.
        +
        Parameters:
        file - The file created
        +
      • +
      + + + +
        +
      • +

        onFileChange

        +
        void onFileChange(File file)
        +
        File changed Event.
        +
        Parameters:
        file - The file changed
        +
      • +
      + + + +
        +
      • +

        onFileDelete

        +
        void onFileDelete(File file)
        +
        File deleted Event.
        +
        Parameters:
        file - The file deleted
        +
      • +
      + + + +
        +
      • +

        onStop

        +
        void onStop(FileAlterationObserver observer)
        +
        File system observer finished checking event.
        +
        Parameters:
        observer - The file system observer
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationListenerAdaptor.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationListenerAdaptor.html new file mode 100644 index 0000000..694406d --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationListenerAdaptor.html @@ -0,0 +1,414 @@ + + + + + +FileAlterationListenerAdaptor (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.monitor
+

Class FileAlterationListenerAdaptor

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.monitor.FileAlterationListenerAdaptor
    • +
    +
  • +
+
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileAlterationListenerAdaptor

        +
        public FileAlterationListenerAdaptor()
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationMonitor.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationMonitor.html new file mode 100644 index 0000000..3b5d022 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationMonitor.html @@ -0,0 +1,461 @@ + + + + + +FileAlterationMonitor (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.monitor
+

Class FileAlterationMonitor

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.monitor.FileAlterationMonitor
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Runnable
    +
    +
    +
    +
    public final class FileAlterationMonitor
    +extends Object
    +implements Runnable
    +
    A runnable that spawns a monitoring thread triggering any + registered FileAlterationObserver at a specified interval.
    +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: FileAlterationMonitor.java 1415850 2012-11-30 20:51:39Z ggregory $
    +
    See Also:
    FileAlterationObserver
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileAlterationMonitor

        +
        public FileAlterationMonitor()
        +
        Construct a monitor with a default interval of 10 seconds.
        +
      • +
      + + + +
        +
      • +

        FileAlterationMonitor

        +
        public FileAlterationMonitor(long interval)
        +
        Construct a monitor with the specified interval.
        +
        Parameters:
        interval - The amount of time in miliseconds to wait between + checks of the file system
        +
      • +
      + + + +
        +
      • +

        FileAlterationMonitor

        +
        public FileAlterationMonitor(long interval,
        +                     FileAlterationObserver... observers)
        +
        Construct a monitor with the specified interval and set of observers.
        +
        Parameters:
        interval - The amount of time in miliseconds to wait between + checks of the file system
        observers - The set of observers to add to the monitor.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getInterval

        +
        public long getInterval()
        +
        Return the interval.
        +
        Returns:
        the interval
        +
      • +
      + + + +
        +
      • +

        setThreadFactory

        +
        public void setThreadFactory(ThreadFactory threadFactory)
        +
        Set the thread factory.
        +
        Parameters:
        threadFactory - the thread factory
        +
      • +
      + + + +
        +
      • +

        addObserver

        +
        public void addObserver(FileAlterationObserver observer)
        +
        Add a file system observer to this monitor.
        +
        Parameters:
        observer - The file system observer to add
        +
      • +
      + + + +
        +
      • +

        removeObserver

        +
        public void removeObserver(FileAlterationObserver observer)
        +
        Remove a file system observer from this monitor.
        +
        Parameters:
        observer - The file system observer to remove
        +
      • +
      + + + + + + + +
        +
      • +

        start

        +
        public void start()
        +           throws Exception
        +
        Start monitoring.
        +
        Throws:
        +
        Exception - if an error occurs initializing the observer
        +
      • +
      + + + +
        +
      • +

        stop

        +
        public void stop()
        +          throws Exception
        +
        Stop monitoring.
        +
        Throws:
        +
        Exception - if an error occurs initializing the observer
        +
      • +
      + + + +
        +
      • +

        stop

        +
        public void stop(long stopInterval)
        +          throws Exception
        +
        Stop monitoring.
        +
        Parameters:
        stopInterval - the amount of time in milliseconds to wait for the thread to finish. + A value of zero will wait until the thread is finished (see Thread.join(long)).
        +
        Throws:
        +
        Exception - if an error occurs initializing the observer
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        run

        +
        public void run()
        +
        Run.
        +
        +
        Specified by:
        +
        run in interface Runnable
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationObserver.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationObserver.html new file mode 100644 index 0000000..322bf15 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileAlterationObserver.html @@ -0,0 +1,629 @@ + + + + + +FileAlterationObserver (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.monitor
+

Class FileAlterationObserver

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.io.monitor.FileAlterationObserver
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable
    +
    +
    +
    +
    public class FileAlterationObserver
    +extends Object
    +implements Serializable
    +
    FileAlterationObserver represents the state of files below a root directory, + checking the filesystem and notifying listeners of create, change or + delete events. +

    + To use this implementation: +

    + +

    Basic Usage

    + Create a FileAlterationObserver for the directory and register the listeners: +
    +      File directory = new File(new File("."), "src");
    +      FileAlterationObserver observer = new FileAlterationObserver(directory);
    +      observer.addListener(...);
    +      observer.addListener(...);
    + 
    + To manually observe a directory, initialize the observer and invoked the + checkAndNotify() method as required: +
    +      // intialize
    +      observer.init();
    +      ...
    +      // invoke as required
    +      observer.checkAndNotify();
    +      ...
    +      observer.checkAndNotify();
    +      ...
    +      // finished
    +      observer.finish();
    + 
    + Alternatively, register the oberver(s) with a FileAlterationMonitor, + which creates a new thread, invoking the observer at the specified interval: +
    +      long interval = ...
    +      FileAlterationMonitor monitor = new FileAlterationMonitor(interval);
    +      monitor.addObserver(observer);
    +      monitor.start();
    +      ...
    +      monitor.stop();
    + 
    + +

    File Filters

    + This implementation can monitor portions of the file system + by using FileFilters to observe only the files and/or directories + that are of interest. This makes it more efficient and reduces the + noise from unwanted file system events. +

    + Commons IO has a good range of + useful, ready made + File Filter + implementations for this purpose. +

    + For example, to only observe 1) visible directories and 2) files with a ".java" suffix + in a root directory called "src" you could set up a FileAlterationObserver in the following + way: +

    +      // Create a FileFilter
    +      IOFileFilter directories = FileFilterUtils.and(
    +                                      FileFilterUtils.directoryFileFilter(),
    +                                      HiddenFileFilter.VISIBLE);
    +      IOFileFilter files       = FileFilterUtils.and(
    +                                      FileFilterUtils.fileFileFilter(),
    +                                      FileFilterUtils.suffixFileFilter(".java"));
    +      IOFileFilter filter = FileFilterUtils.or(directories, files);
    +
    +      // Create the File system observer and register File Listeners
    +      FileAlterationObserver observer = new FileAlterationObserver(new File("src"), filter);
    +      observer.addListener(...);
    +      observer.addListener(...);
    + 
    + +

    FileEntry

    + FileEntry represents the state of a file or directory, capturing + File attributes at a point in time. Custom implementations of + FileEntry can be used to capture additional properties that the + basic implementation does not support. The FileEntry.refresh(File) + method is used to determine if a file or directory has changed since the last + check and stores the current state of the File's properties.
    +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: FileAlterationObserver.java 1686747 2015-06-21 18:44:49Z krosenvold $
    +
    See Also:
    FileAlterationListener, +FileAlterationMonitor, +Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileAlterationObserver

        +
        public FileAlterationObserver(String directoryName)
        +
        Construct an observer for the specified directory.
        +
        Parameters:
        directoryName - the name of the directory to observe
        +
      • +
      + + + +
        +
      • +

        FileAlterationObserver

        +
        public FileAlterationObserver(String directoryName,
        +                      FileFilter fileFilter)
        +
        Construct an observer for the specified directory and file filter.
        +
        Parameters:
        directoryName - the name of the directory to observe
        fileFilter - The file filter or null if none
        +
      • +
      + + + +
        +
      • +

        FileAlterationObserver

        +
        public FileAlterationObserver(String directoryName,
        +                      FileFilter fileFilter,
        +                      IOCase caseSensitivity)
        +
        Construct an observer for the specified directory, file filter and + file comparator.
        +
        Parameters:
        directoryName - the name of the directory to observe
        fileFilter - The file filter or null if none
        caseSensitivity - what case sensitivity to use comparing file names, null means system sensitive
        +
      • +
      + + + +
        +
      • +

        FileAlterationObserver

        +
        public FileAlterationObserver(File directory)
        +
        Construct an observer for the specified directory.
        +
        Parameters:
        directory - the directory to observe
        +
      • +
      + + + +
        +
      • +

        FileAlterationObserver

        +
        public FileAlterationObserver(File directory,
        +                      FileFilter fileFilter)
        +
        Construct an observer for the specified directory and file filter.
        +
        Parameters:
        directory - the directory to observe
        fileFilter - The file filter or null if none
        +
      • +
      + + + +
        +
      • +

        FileAlterationObserver

        +
        public FileAlterationObserver(File directory,
        +                      FileFilter fileFilter,
        +                      IOCase caseSensitivity)
        +
        Construct an observer for the specified directory, file filter and + file comparator.
        +
        Parameters:
        directory - the directory to observe
        fileFilter - The file filter or null if none
        caseSensitivity - what case sensitivity to use comparing file names, null means system sensitive
        +
      • +
      + + + +
        +
      • +

        FileAlterationObserver

        +
        protected FileAlterationObserver(FileEntry rootEntry,
        +                      FileFilter fileFilter,
        +                      IOCase caseSensitivity)
        +
        Construct an observer for the specified directory, file filter and + file comparator.
        +
        Parameters:
        rootEntry - the root directory to observe
        fileFilter - The file filter or null if none
        caseSensitivity - what case sensitivity to use comparing file names, null means system sensitive
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getDirectory

        +
        public File getDirectory()
        +
        Return the directory being observed.
        +
        Returns:
        the directory being observed
        +
      • +
      + + + +
        +
      • +

        getFileFilter

        +
        public FileFilter getFileFilter()
        +
        Return the fileFilter.
        +
        Returns:
        the fileFilter
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        addListener

        +
        public void addListener(FileAlterationListener listener)
        +
        Add a file system listener.
        +
        Parameters:
        listener - The file system listener
        +
      • +
      + + + +
        +
      • +

        removeListener

        +
        public void removeListener(FileAlterationListener listener)
        +
        Remove a file system listener.
        +
        Parameters:
        listener - The file system listener
        +
      • +
      + + + +
        +
      • +

        getListeners

        +
        public Iterable<FileAlterationListener> getListeners()
        +
        Returns the set of registered file system listeners.
        +
        Returns:
        The file system listeners
        +
      • +
      + + + +
        +
      • +

        initialize

        +
        public void initialize()
        +                throws Exception
        +
        Initialize the observer.
        +
        Throws:
        +
        Exception - if an error occurs
        +
      • +
      + + + +
        +
      • +

        destroy

        +
        public void destroy()
        +             throws Exception
        +
        Final processing.
        +
        Throws:
        +
        Exception - if an error occurs
        +
      • +
      + + + +
        +
      • +

        checkAndNotify

        +
        public void checkAndNotify()
        +
        Check whether the file and its chlidren have been created, modified or deleted.
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Provide a String representation of this observer.
        +
        +
        Overrides:
        +
        toString in class Object
        +
        Returns:
        a String representation of this observer
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileEntry.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileEntry.html new file mode 100644 index 0000000..d51dbca --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/FileEntry.html @@ -0,0 +1,604 @@ + + + + + +FileEntry (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.monitor
+

Class FileEntry

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileEntry

        +
        public FileEntry(File file)
        +
        Construct a new monitor for a specified File.
        +
        Parameters:
        file - The file being monitored
        +
      • +
      + + + +
        +
      • +

        FileEntry

        +
        public FileEntry(FileEntry parent,
        +         File file)
        +
        Construct a new monitor for a specified File.
        +
        Parameters:
        parent - The parent
        file - The file being monitored
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        refresh

        +
        public boolean refresh(File file)
        +
        Refresh the attributes from the File, indicating + whether the file has changed. +

        + This implementation refreshes the name, exists, + directory, lastModified and length + properties. +

        + The exists, directory, lastModified + and length properties are compared for changes

        +
        Parameters:
        file - the file instance to compare to
        +
        Returns:
        true if the file has changed, otherwise false
        +
      • +
      + + + +
        +
      • +

        newChildInstance

        +
        public FileEntry newChildInstance(File file)
        +
        Create a new child instance. +

        + Custom implementations should override this method to return + a new instance of the appropriate type.

        +
        Parameters:
        file - The child file
        +
        Returns:
        a new child instance
        +
      • +
      + + + +
        +
      • +

        getParent

        +
        public FileEntry getParent()
        +
        Return the parent entry.
        +
        Returns:
        the parent entry
        +
      • +
      + + + +
        +
      • +

        getLevel

        +
        public int getLevel()
        +
        Return the level
        +
        Returns:
        the level
        +
      • +
      + + + +
        +
      • +

        getChildren

        +
        public FileEntry[] getChildren()
        +
        Return the directory's files.
        +
        Returns:
        This directory's files or an empty + array if the file is not a directory or the + directory is empty
        +
      • +
      + + + +
        +
      • +

        setChildren

        +
        public void setChildren(FileEntry[] children)
        +
        Set the directory's files.
        +
        Parameters:
        children - This directory's files, may be null
        +
      • +
      + + + +
        +
      • +

        getFile

        +
        public File getFile()
        +
        Return the file being monitored.
        +
        Returns:
        the file being monitored
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public String getName()
        +
        Return the file name.
        +
        Returns:
        the file name
        +
      • +
      + + + +
        +
      • +

        setName

        +
        public void setName(String name)
        +
        Set the file name.
        +
        Parameters:
        name - the file name
        +
      • +
      + + + +
        +
      • +

        getLastModified

        +
        public long getLastModified()
        +
        Return the last modified time from the last time it + was checked.
        +
        Returns:
        the last modified time
        +
      • +
      + + + +
        +
      • +

        setLastModified

        +
        public void setLastModified(long lastModified)
        +
        Return the last modified time from the last time it + was checked.
        +
        Parameters:
        lastModified - The last modified time
        +
      • +
      + + + +
        +
      • +

        getLength

        +
        public long getLength()
        +
        Return the length.
        +
        Returns:
        the length
        +
      • +
      + + + +
        +
      • +

        setLength

        +
        public void setLength(long length)
        +
        Set the length.
        +
        Parameters:
        length - the length
        +
      • +
      + + + +
        +
      • +

        isExists

        +
        public boolean isExists()
        +
        Indicate whether the file existed the last time it + was checked.
        +
        Returns:
        whether the file existed
        +
      • +
      + + + +
        +
      • +

        setExists

        +
        public void setExists(boolean exists)
        +
        Set whether the file existed the last time it + was checked.
        +
        Parameters:
        exists - whether the file exists or not
        +
      • +
      + + + +
        +
      • +

        isDirectory

        +
        public boolean isDirectory()
        +
        Indicate whether the file is a directory or not.
        +
        Returns:
        whether the file is a directory or not
        +
      • +
      + + + +
        +
      • +

        setDirectory

        +
        public void setDirectory(boolean directory)
        +
        Set whether the file is a directory or not.
        +
        Parameters:
        directory - whether the file is a directory or not
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationListener.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationListener.html new file mode 100644 index 0000000..eb113da --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationListener.html @@ -0,0 +1,197 @@ + + + + + +Uses of Interface org.apache.commons.io.monitor.FileAlterationListener (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Interface
org.apache.commons.io.monitor.FileAlterationListener

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationListenerAdaptor.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationListenerAdaptor.html new file mode 100644 index 0000000..99b5936 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationListenerAdaptor.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.monitor.FileAlterationListenerAdaptor (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.monitor.FileAlterationListenerAdaptor

+
+
No usage of org.apache.commons.io.monitor.FileAlterationListenerAdaptor
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationMonitor.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationMonitor.html new file mode 100644 index 0000000..1f9f648 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationMonitor.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.monitor.FileAlterationMonitor (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.monitor.FileAlterationMonitor

+
+
No usage of org.apache.commons.io.monitor.FileAlterationMonitor
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationObserver.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationObserver.html new file mode 100644 index 0000000..3690a47 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileAlterationObserver.html @@ -0,0 +1,221 @@ + + + + + +Uses of Class org.apache.commons.io.monitor.FileAlterationObserver (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.monitor.FileAlterationObserver

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileEntry.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileEntry.html new file mode 100644 index 0000000..b2e4c5c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/class-use/FileEntry.html @@ -0,0 +1,210 @@ + + + + + +Uses of Class org.apache.commons.io.monitor.FileEntry (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.monitor.FileEntry

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-frame.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-frame.html new file mode 100644 index 0000000..a08385c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-frame.html @@ -0,0 +1,25 @@ + + + + + +org.apache.commons.io.monitor (Apache Commons IO 2.5 API) + + + +

org.apache.commons.io.monitor

+ + + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-summary.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-summary.html new file mode 100644 index 0000000..ffb2f83 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-summary.html @@ -0,0 +1,187 @@ + + + + + +org.apache.commons.io.monitor (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Package org.apache.commons.io.monitor

+
+
+This package provides a component for monitoring file system events +(directory and file create, update and delete events).
+
+

See: Description

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    FileAlterationListener +
    A listener that receives events of file system modifications.
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    FileAlterationListenerAdaptor +
    Convenience FileAlterationListener implementation that does nothing.
    +
    FileAlterationMonitor +
    A runnable that spawns a monitoring thread triggering any + registered FileAlterationObserver at a specified interval.
    +
    FileAlterationObserver +
    FileAlterationObserver represents the state of files below a root directory, + checking the filesystem and notifying listeners of create, change or + delete events.
    +
    FileEntry +
    The state of a file or directory, capturing the following File attributes at a point in time.
    +
    +
  • +
+ + + +

Package org.apache.commons.io.monitor Description

+

+This package provides a component for monitoring file system events +(directory and file create, update and delete events). +

+
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-tree.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-tree.html new file mode 100644 index 0000000..52f5132 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-tree.html @@ -0,0 +1,135 @@ + + + + + +org.apache.commons.io.monitor Class Hierarchy (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For Package org.apache.commons.io.monitor

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-use.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-use.html new file mode 100644 index 0000000..e4c5f69 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/monitor/package-use.html @@ -0,0 +1,166 @@ + + + + + +Uses of Package org.apache.commons.io.monitor (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Package
org.apache.commons.io.monitor

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/AppendableOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/AppendableOutputStream.html new file mode 100644 index 0000000..125cf46 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/AppendableOutputStream.html @@ -0,0 +1,315 @@ + + + + + +AppendableOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class AppendableOutputStream<T extends Appendable>

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + + + +
        +
      • +

        AppendableOutputStream

        +
        public AppendableOutputStream(T appendable)
        +
        Construct a new instance with the specified appendable.
        +
        Parameters:
        appendable - the appendable to write to
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        write

        +
        public void write(int b)
        +           throws IOException
        +
        Write a character to the underlying appendable.
        +
        +
        Specified by:
        +
        write in class OutputStream
        +
        Parameters:
        b - the character to write
        +
        Throws:
        +
        IOException - upon error
        +
      • +
      + + + +
        +
      • +

        getAppendable

        +
        public T getAppendable()
        +
        Return the target appendable.
        +
        Returns:
        the target appendable
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/BrokenOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/BrokenOutputStream.html new file mode 100644 index 0000000..0478f9c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/BrokenOutputStream.html @@ -0,0 +1,358 @@ + + + + + +BrokenOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class BrokenOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    +
    public class BrokenOutputStream
    +extends OutputStream
    +
    Broken output stream. This stream always throws an IOException from + all OutputStream methods. +

    + This class is mostly useful for testing error handling in code that uses an + output stream.

    +
    Since:
    +
    2.0
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        BrokenOutputStream

        +
        public BrokenOutputStream(IOException exception)
        +
        Creates a new stream that always throws the given exception.
        +
        Parameters:
        exception - the exception to be thrown
        +
      • +
      + + + +
        +
      • +

        BrokenOutputStream

        +
        public BrokenOutputStream()
        +
        Creates a new stream that always throws an IOException
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ByteArrayOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ByteArrayOutputStream.html new file mode 100644 index 0000000..b8e2ef6 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ByteArrayOutputStream.html @@ -0,0 +1,640 @@ + + + + + +ByteArrayOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class ByteArrayOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    +
    public class ByteArrayOutputStream
    +extends OutputStream
    +
    This class implements an output stream in which the data is + written into a byte array. The buffer automatically grows as data + is written to it. +

    + The data can be retrieved using toByteArray() and + toString(). +

    + Closing a ByteArrayOutputStream has no effect. The methods in + this class can be called after the stream has been closed without + generating an IOException. +

    + This is an alternative implementation of the ByteArrayOutputStream + class. The original implementation only allocates 32 bytes at the beginning. + As this class is designed for heavy duty it starts at 1024 bytes. In contrast + to the original it doesn't reallocate the whole memory block but allocates + additional buffers. This way no buffers need to be garbage collected and + the contents don't have to be copied to the new buffer. This class is + designed to behave exactly like the original. The only exception is the + deprecated toString(int) method that has been ignored.

    +
    Version:
    +
    $Id: ByteArrayOutputStream.java 1612034 2014-07-20 06:35:19Z ggregory $
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      ByteArrayOutputStream() +
      Creates a new byte array output stream.
      +
      ByteArrayOutputStream(int size) +
      Creates a new byte array output stream, with a buffer capacity of + the specified size, in bytes.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ByteArrayOutputStream

        +
        public ByteArrayOutputStream()
        +
        Creates a new byte array output stream. The buffer capacity is + initially 1024 bytes, though its size increases if necessary.
        +
      • +
      + + + +
        +
      • +

        ByteArrayOutputStream

        +
        public ByteArrayOutputStream(int size)
        +
        Creates a new byte array output stream, with a buffer capacity of + the specified size, in bytes.
        +
        Parameters:
        size - the initial size
        +
        Throws:
        +
        IllegalArgumentException - if size is negative
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        write

        +
        public void write(byte[] b,
        +         int off,
        +         int len)
        +
        Write the bytes to byte array.
        +
        +
        Overrides:
        +
        write in class OutputStream
        +
        Parameters:
        b - the bytes to write
        off - The start offset
        len - The number of bytes to write
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(int b)
        +
        Write a byte to byte array.
        +
        +
        Specified by:
        +
        write in class OutputStream
        +
        Parameters:
        b - the byte to write
        +
      • +
      + + + +
        +
      • +

        write

        +
        public int write(InputStream in)
        +          throws IOException
        +
        Writes the entire contents of the specified input stream to this + byte stream. Bytes from the input stream are read directly into the + internal buffers of this streams.
        +
        Parameters:
        in - the input stream to read from
        +
        Returns:
        total number of bytes read from the input stream + (and written to this stream)
        +
        Throws:
        +
        IOException - if an I/O error occurs while reading the input stream
        Since:
        +
        1.4
        +
      • +
      + + + +
        +
      • +

        size

        +
        public int size()
        +
        Return the current size of the byte array.
        +
        Returns:
        the current size of the byte array
        +
      • +
      + + + +
        +
      • +

        close

        +
        public void close()
        +           throws IOException
        +
        Closing a ByteArrayOutputStream has no effect. The methods in + this class can be called after the stream has been closed without + generating an IOException.
        +
        +
        Specified by:
        +
        close in interface Closeable
        +
        Specified by:
        +
        close in interface AutoCloseable
        +
        Overrides:
        +
        close in class OutputStream
        +
        Throws:
        +
        IOException - never (this method should not declare this exception + but it has to now due to backwards compatibility)
        +
      • +
      + + + + + + + + + + + +
        +
      • +

        toBufferedInputStream

        +
        public static InputStream toBufferedInputStream(InputStream input)
        +                                         throws IOException
        +
        Fetches entire contents of an InputStream and represent + same data as result InputStream. +

        + This method is useful where, +

          +
        • Source InputStream is slow.
        • +
        • It has network resources associated, so we cannot keep it open for + long time.
        • +
        • It has network timeout associated.
        • +
        + It can be used in favor of toByteArray(), since it + avoids unnecessary allocation and copy of byte[].
        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.
        +
        Parameters:
        input - Stream to be fully buffered.
        +
        Returns:
        A fully buffered stream.
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        toBufferedInputStream

        +
        public static InputStream toBufferedInputStream(InputStream input,
        +                                int size)
        +                                         throws IOException
        +
        Fetches entire contents of an InputStream and represent + same data as result InputStream. +

        + This method is useful where, +

          +
        • Source InputStream is slow.
        • +
        • It has network resources associated, so we cannot keep it open for + long time.
        • +
        • It has network timeout associated.
        • +
        + It can be used in favor of toByteArray(), since it + avoids unnecessary allocation and copy of byte[].
        + This method buffers the input internally, so there is no need to use a + BufferedInputStream.
        +
        Parameters:
        input - Stream to be fully buffered.
        size - the initial buffer size
        +
        Returns:
        A fully buffered stream.
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        toInputStream

        +
        public InputStream toInputStream()
        +
        Gets the current contents of this byte stream as a Input Stream. The + returned stream is backed by buffers of this stream, + avoiding memory allocation and copy, thus saving space and time.
        +
        Returns:
        the current contents of this output stream.
        Since:
        +
        2.5
        +
        See Also:
        ByteArrayOutputStream.toByteArray(), +reset()
        +
      • +
      + + + +
        +
      • +

        toByteArray

        +
        public byte[] toByteArray()
        +
        Gets the curent contents of this byte stream as a byte array. + The result is independent of this stream.
        +
        Returns:
        the current contents of this output stream, as a byte array
        See Also:
        ByteArrayOutputStream.toByteArray()
        +
      • +
      + + + + + + + + + + + +
        +
      • +

        toString

        +
        public String toString(Charset charset)
        +
        Gets the curent contents of this byte stream as a string + using the specified encoding.
        +
        Parameters:
        charset - the character encoding
        +
        Returns:
        the string converted from the byte array
        Since:
        +
        2.5
        +
        See Also:
        ByteArrayOutputStream.toString(String)
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ChunkedOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ChunkedOutputStream.html new file mode 100644 index 0000000..fa6f13c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ChunkedOutputStream.html @@ -0,0 +1,335 @@ + + + + + +ChunkedOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class ChunkedOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    +
    public class ChunkedOutputStream
    +extends FilterOutputStream
    +
    OutputStream which breaks larger output blocks into chunks. + Native code may need to copy the input array; if the write buffer + is very large this can cause OOME.
    +
    Since:
    +
    2.5
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ChunkedOutputStream

        +
        public ChunkedOutputStream(OutputStream stream,
        +                   int chunkSize)
        +
        Creates a new stream that uses the specified chunk size.
        +
        Parameters:
        stream - the stream to wrap
        chunkSize - the chunk size to use; must be a positive number.
        +
        Throws:
        +
        IllegalArgumentException - if the chunk size is <= 0
        +
      • +
      + + + +
        +
      • +

        ChunkedOutputStream

        +
        public ChunkedOutputStream(OutputStream stream)
        +
        Creates a new stream that uses a chunk size of DEFAULT_CHUNK_SIZE.
        +
        Parameters:
        stream - the stream to wrap
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        write

        +
        public void write(byte[] data,
        +         int srcOffset,
        +         int length)
        +           throws IOException
        +
        Writes the data buffer in chunks to the underlying stream
        +
        +
        Overrides:
        +
        write in class FilterOutputStream
        +
        Parameters:
        data - the data to write
        srcOffset - the offset
        length - the length of data to write
        +
        Throws:
        +
        IOException - if an I/O error occurs.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ChunkedWriter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ChunkedWriter.html new file mode 100644 index 0000000..c2683fc --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ChunkedWriter.html @@ -0,0 +1,349 @@ + + + + + +ChunkedWriter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class ChunkedWriter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, Appendable, AutoCloseable
    +
    +
    +
    +
    public class ChunkedWriter
    +extends FilterWriter
    +
    Writer which breaks larger output blocks into chunks. + Native code may need to copy the input array; if the write buffer + is very large this can cause OOME.
    +
    Since:
    +
    2.5
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ChunkedWriter

        +
        public ChunkedWriter(Writer writer,
        +             int chunkSize)
        +
        Creates a new writer that uses the specified chunk size.
        +
        Parameters:
        writer - the writer to wrap
        chunkSize - the chunk size to use; must be a positive number.
        +
        Throws:
        +
        IllegalArgumentException - if the chunk size is <= 0
        +
      • +
      + + + +
        +
      • +

        ChunkedWriter

        +
        public ChunkedWriter(Writer writer)
        +
        Creates a new writer that uses a chunk size of DEFAULT_CHUNK_SIZE
        +
        Parameters:
        writer - the writer to wrap
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        write

        +
        public void write(char[] data,
        +         int srcOffset,
        +         int length)
        +           throws IOException
        +
        writes the data buffer in chunks to the underlying writer
        +
        +
        Overrides:
        +
        write in class FilterWriter
        +
        Parameters:
        data - The data
        srcOffset - the offset
        length - the number of bytes to write
        +
        Throws:
        +
        IOException - upon error
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/CloseShieldOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/CloseShieldOutputStream.html new file mode 100644 index 0000000..02d6fb2 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/CloseShieldOutputStream.html @@ -0,0 +1,327 @@ + + + + + +CloseShieldOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class CloseShieldOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    +
    public class CloseShieldOutputStream
    +extends ProxyOutputStream
    +
    Proxy stream that prevents the underlying output stream from being closed. +

    + This class is typically used in cases where an output stream needs to be + passed to a component that wants to explicitly close the stream even if + other components would still use the stream for output. +

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: CloseShieldOutputStream.java 1674710 2015-04-20 00:25:55Z ggregory $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CloseShieldOutputStream

        +
        public CloseShieldOutputStream(OutputStream out)
        +
        Creates a proxy that shields the given output stream from being + closed.
        +
        Parameters:
        out - underlying output stream
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ClosedOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ClosedOutputStream.html new file mode 100644 index 0000000..57966f9 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ClosedOutputStream.html @@ -0,0 +1,331 @@ + + + + + +ClosedOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class ClosedOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    +
    public class ClosedOutputStream
    +extends OutputStream
    +
    Closed output stream. This stream throws an exception on all attempts to + write something to the stream. +

    + Typically uses of this class include testing for corner cases in methods + that accept an output stream and acting as a sentinel value instead of + a null output stream.

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: ClosedOutputStream.java 1471767 2013-04-24 23:24:19Z sebb $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        CLOSED_OUTPUT_STREAM

        +
        public static final ClosedOutputStream CLOSED_OUTPUT_STREAM
        +
        A singleton.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ClosedOutputStream

        +
        public ClosedOutputStream()
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/CountingOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/CountingOutputStream.html new file mode 100644 index 0000000..0620f56 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/CountingOutputStream.html @@ -0,0 +1,406 @@ + + + + + +CountingOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class CountingOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    +
    public class CountingOutputStream
    +extends ProxyOutputStream
    +
    A decorating output stream that counts the number of bytes that have passed + through the stream so far. +

    + A typical use case would be during debugging, to ensure that data is being + written as expected.

    +
    Version:
    +
    $Id: CountingOutputStream.java 1415850 2012-11-30 20:51:39Z ggregory $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        CountingOutputStream

        +
        public CountingOutputStream(OutputStream out)
        +
        Constructs a new CountingOutputStream.
        +
        Parameters:
        out - the OutputStream to write to
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        beforeWrite

        +
        protected void beforeWrite(int n)
        +
        Updates the count with the number of bytes that are being written.
        +
        +
        Overrides:
        +
        beforeWrite in class ProxyOutputStream
        +
        Parameters:
        n - number of bytes to be written to the stream
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        getCount

        +
        public int getCount()
        +
        The number of bytes that have passed through this stream. +

        + NOTE: From v1.3 this method throws an ArithmeticException if the + count is greater than can be expressed by an int. + See getByteCount() for a method using a long.

        +
        Returns:
        the number of bytes accumulated
        +
        Throws:
        +
        ArithmeticException - if the byte count is too large
        +
      • +
      + + + +
        +
      • +

        resetCount

        +
        public int resetCount()
        +
        Set the byte count back to 0. +

        + NOTE: From v1.3 this method throws an ArithmeticException if the + count is greater than can be expressed by an int. + See resetByteCount() for a method using a long.

        +
        Returns:
        the count previous to resetting
        +
        Throws:
        +
        ArithmeticException - if the byte count is too large
        +
      • +
      + + + +
        +
      • +

        getByteCount

        +
        public long getByteCount()
        +
        The number of bytes that have passed through this stream. +

        + NOTE: This method is an alternative for getCount(). + It was added because that method returns an integer which will + result in incorrect count for files over 2GB.

        +
        Returns:
        the number of bytes accumulated
        Since:
        +
        1.3
        +
      • +
      + + + +
        +
      • +

        resetByteCount

        +
        public long resetByteCount()
        +
        Set the byte count back to 0. +

        + NOTE: This method is an alternative for resetCount(). + It was added because that method returns an integer which will + result in incorrect count for files over 2GB.

        +
        Returns:
        the count previous to resetting
        Since:
        +
        1.3
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/DeferredFileOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/DeferredFileOutputStream.html new file mode 100644 index 0000000..af26916 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/DeferredFileOutputStream.html @@ -0,0 +1,474 @@ + + + + + +DeferredFileOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class DeferredFileOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    +
    public class DeferredFileOutputStream
    +extends ThresholdingOutputStream
    +
    An output stream which will retain data in memory until a specified + threshold is reached, and only then commit it to disk. If the stream is + closed before the threshold is reached, the data will not be written to + disk at all. +

    + This class originated in FileUpload processing. In this use case, you do + not know in advance the size of the file being uploaded. If the file is small + you want to store it in memory (for speed), but if the file is large you want + to store it to file (to avoid memory issues).

    +
    Version:
    +
    $Id: DeferredFileOutputStream.java 1686747 2015-06-21 18:44:49Z krosenvold $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DeferredFileOutputStream

        +
        public DeferredFileOutputStream(int threshold,
        +                        File outputFile)
        +
        Constructs an instance of this class which will trigger an event at the + specified threshold, and save data to a file beyond that point.
        +
        Parameters:
        threshold - The number of bytes at which to trigger an event.
        outputFile - The file to which data is saved beyond the threshold.
        +
      • +
      + + + +
        +
      • +

        DeferredFileOutputStream

        +
        public DeferredFileOutputStream(int threshold,
        +                        String prefix,
        +                        String suffix,
        +                        File directory)
        +
        Constructs an instance of this class which will trigger an event at the + specified threshold, and save data to a temporary file beyond that point.
        +
        Parameters:
        threshold - The number of bytes at which to trigger an event.
        prefix - Prefix to use for the temporary file.
        suffix - Suffix to use for the temporary file.
        directory - Temporary file directory.
        Since:
        +
        1.4
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getStream

        +
        protected OutputStream getStream()
        +                          throws IOException
        +
        Returns the current output stream. This may be memory based or disk + based, depending on the current state with respect to the threshold.
        +
        +
        Specified by:
        +
        getStream in class ThresholdingOutputStream
        +
        Returns:
        The underlying output stream.
        +
        Throws:
        +
        IOException - if an error occurs.
        +
      • +
      + + + +
        +
      • +

        thresholdReached

        +
        protected void thresholdReached()
        +                         throws IOException
        +
        Switches the underlying output stream from a memory based stream to one + that is backed by disk. This is the point at which we realise that too + much data is being written to keep in memory, so we elect to switch to + disk-based storage.
        +
        +
        Specified by:
        +
        thresholdReached in class ThresholdingOutputStream
        +
        Throws:
        +
        IOException - if an error occurs.
        +
      • +
      + + + +
        +
      • +

        isInMemory

        +
        public boolean isInMemory()
        +
        Determines whether or not the data for this output stream has been + retained in memory.
        +
        Returns:
        true if the data is available in memory; + false otherwise.
        +
      • +
      + + + +
        +
      • +

        getData

        +
        public byte[] getData()
        +
        Returns the data for this output stream as an array of bytes, assuming + that the data has been retained in memory. If the data was written to + disk, this method returns null.
        +
        Returns:
        The data for this output stream, or null if no such + data is available.
        +
      • +
      + + + +
        +
      • +

        getFile

        +
        public File getFile()
        +
        Returns either the output file specified in the constructor or + the temporary file created or null. +

        + If the constructor specifying the file is used then it returns that + same output file, even when threshold has not been reached. +

        + If constructor specifying a temporary file prefix/suffix is used + then the temporary file created once the threshold is reached is returned + If the threshold was not reached then null is returned.

        +
        Returns:
        The file for this output stream, or null if no such + file exists.
        +
      • +
      + + + + + + + +
        +
      • +

        writeTo

        +
        public void writeTo(OutputStream out)
        +             throws IOException
        +
        Writes the data from this output stream to the specified output stream, + after it has been closed.
        +
        Parameters:
        out - output stream to write to.
        +
        Throws:
        +
        IOException - if this stream is not yet closed or an error occurs.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/DemuxOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/DemuxOutputStream.html new file mode 100644 index 0000000..0408e7a --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/DemuxOutputStream.html @@ -0,0 +1,353 @@ + + + + + +DemuxOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class DemuxOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    +
    public class DemuxOutputStream
    +extends OutputStream
    +
    Forwards data to a stream that has been associated with this thread.
    +
    Version:
    +
    $Id: DemuxOutputStream.java 1737901 2016-04-06 00:23:36Z ggregory $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DemuxOutputStream

        +
        public DemuxOutputStream()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        bindStream

        +
        public OutputStream bindStream(OutputStream output)
        +
        Binds the specified stream to the current thread.
        +
        Parameters:
        output - the stream to bind
        +
        Returns:
        the OutputStream that was previously active
        +
      • +
      + + + + + + + + + + + +
        +
      • +

        write

        +
        public void write(int ch)
        +           throws IOException
        +
        Writes byte to stream associated with current thread.
        +
        +
        Specified by:
        +
        write in class OutputStream
        +
        Parameters:
        ch - the byte to write to stream
        +
        Throws:
        +
        IOException - if an error occurs
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/FileWriterWithEncoding.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/FileWriterWithEncoding.html new file mode 100644 index 0000000..2391262 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/FileWriterWithEncoding.html @@ -0,0 +1,728 @@ + + + + + +FileWriterWithEncoding (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class FileWriterWithEncoding

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, Appendable, AutoCloseable
    +
    +
    +
    +
    public class FileWriterWithEncoding
    +extends Writer
    +
    Writer of files that allows the encoding to be set. +

    + This class provides a simple alternative to FileWriter + that allows an encoding to be set. Unfortunately, it cannot subclass + FileWriter. +

    + By default, the file will be overwritten, but this may be changed to append. +

    + The encoding must be specified using either the name of the Charset, + the Charset, or a CharsetEncoder. If the default encoding + is required then use the FileWriter directly, rather than + this implementation. +

    +
    Since:
    +
    1.4
    +
    Version:
    +
    $Id: FileWriterWithEncoding.java 1686747 2015-06-21 18:44:49Z krosenvold $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileWriterWithEncoding

        +
        public FileWriterWithEncoding(String filename,
        +                      String encoding)
        +                       throws IOException
        +
        Constructs a FileWriterWithEncoding with a file encoding.
        +
        Parameters:
        filename - the name of the file to write to, not null
        encoding - the encoding to use, not null
        +
        Throws:
        +
        NullPointerException - if the file name or encoding is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        FileWriterWithEncoding

        +
        public FileWriterWithEncoding(String filename,
        +                      String encoding,
        +                      boolean append)
        +                       throws IOException
        +
        Constructs a FileWriterWithEncoding with a file encoding.
        +
        Parameters:
        filename - the name of the file to write to, not null
        encoding - the encoding to use, not null
        append - true if content should be appended, false to overwrite
        +
        Throws:
        +
        NullPointerException - if the file name or encoding is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        FileWriterWithEncoding

        +
        public FileWriterWithEncoding(String filename,
        +                      Charset encoding)
        +                       throws IOException
        +
        Constructs a FileWriterWithEncoding with a file encoding.
        +
        Parameters:
        filename - the name of the file to write to, not null
        encoding - the encoding to use, not null
        +
        Throws:
        +
        NullPointerException - if the file name or encoding is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        FileWriterWithEncoding

        +
        public FileWriterWithEncoding(String filename,
        +                      Charset encoding,
        +                      boolean append)
        +                       throws IOException
        +
        Constructs a FileWriterWithEncoding with a file encoding.
        +
        Parameters:
        filename - the name of the file to write to, not null
        encoding - the encoding to use, not null
        append - true if content should be appended, false to overwrite
        +
        Throws:
        +
        NullPointerException - if the file name or encoding is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        FileWriterWithEncoding

        +
        public FileWriterWithEncoding(String filename,
        +                      CharsetEncoder encoding)
        +                       throws IOException
        +
        Constructs a FileWriterWithEncoding with a file encoding.
        +
        Parameters:
        filename - the name of the file to write to, not null
        encoding - the encoding to use, not null
        +
        Throws:
        +
        NullPointerException - if the file name or encoding is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        FileWriterWithEncoding

        +
        public FileWriterWithEncoding(String filename,
        +                      CharsetEncoder encoding,
        +                      boolean append)
        +                       throws IOException
        +
        Constructs a FileWriterWithEncoding with a file encoding.
        +
        Parameters:
        filename - the name of the file to write to, not null
        encoding - the encoding to use, not null
        append - true if content should be appended, false to overwrite
        +
        Throws:
        +
        NullPointerException - if the file name or encoding is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        FileWriterWithEncoding

        +
        public FileWriterWithEncoding(File file,
        +                      String encoding)
        +                       throws IOException
        +
        Constructs a FileWriterWithEncoding with a file encoding.
        +
        Parameters:
        file - the file to write to, not null
        encoding - the encoding to use, not null
        +
        Throws:
        +
        NullPointerException - if the file or encoding is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        FileWriterWithEncoding

        +
        public FileWriterWithEncoding(File file,
        +                      String encoding,
        +                      boolean append)
        +                       throws IOException
        +
        Constructs a FileWriterWithEncoding with a file encoding.
        +
        Parameters:
        file - the file to write to, not null
        encoding - the encoding to use, not null
        append - true if content should be appended, false to overwrite
        +
        Throws:
        +
        NullPointerException - if the file or encoding is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        FileWriterWithEncoding

        +
        public FileWriterWithEncoding(File file,
        +                      Charset encoding)
        +                       throws IOException
        +
        Constructs a FileWriterWithEncoding with a file encoding.
        +
        Parameters:
        file - the file to write to, not null
        encoding - the encoding to use, not null
        +
        Throws:
        +
        NullPointerException - if the file or encoding is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        FileWriterWithEncoding

        +
        public FileWriterWithEncoding(File file,
        +                      Charset encoding,
        +                      boolean append)
        +                       throws IOException
        +
        Constructs a FileWriterWithEncoding with a file encoding.
        +
        Parameters:
        file - the file to write to, not null
        encoding - the encoding to use, not null
        append - true if content should be appended, false to overwrite
        +
        Throws:
        +
        NullPointerException - if the file or encoding is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        FileWriterWithEncoding

        +
        public FileWriterWithEncoding(File file,
        +                      CharsetEncoder encoding)
        +                       throws IOException
        +
        Constructs a FileWriterWithEncoding with a file encoding.
        +
        Parameters:
        file - the file to write to, not null
        encoding - the encoding to use, not null
        +
        Throws:
        +
        NullPointerException - if the file or encoding is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        FileWriterWithEncoding

        +
        public FileWriterWithEncoding(File file,
        +                      CharsetEncoder encoding,
        +                      boolean append)
        +                       throws IOException
        +
        Constructs a FileWriterWithEncoding with a file encoding.
        +
        Parameters:
        file - the file to write to, not null
        encoding - the encoding to use, not null
        append - true if content should be appended, false to overwrite
        +
        Throws:
        +
        NullPointerException - if the file or encoding is null
        +
        IOException - in case of an I/O error
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        write

        +
        public void write(int idx)
        +           throws IOException
        +
        Write a character.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        idx - the character to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(char[] chr)
        +           throws IOException
        +
        Write the characters from an array.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        chr - the characters to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(char[] chr,
        +         int st,
        +         int end)
        +           throws IOException
        +
        Write the specified characters from an array.
        +
        +
        Specified by:
        +
        write in class Writer
        +
        Parameters:
        chr - the characters to write
        st - The start offset
        end - The number of characters to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(String str)
        +           throws IOException
        +
        Write the characters from a string.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        str - the string to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(String str,
        +         int st,
        +         int end)
        +           throws IOException
        +
        Write the specified characters from a string.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        str - the string to write
        st - The start offset
        end - The number of characters to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/LockableFileWriter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/LockableFileWriter.html new file mode 100644 index 0000000..b7feb3c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/LockableFileWriter.html @@ -0,0 +1,693 @@ + + + + + +LockableFileWriter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class LockableFileWriter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, Appendable, AutoCloseable
    +
    +
    +
    +
    public class LockableFileWriter
    +extends Writer
    +
    FileWriter that will create and honor lock files to allow simple + cross thread file lock handling. +

    + This class provides a simple alternative to FileWriter + that will use a lock file to prevent duplicate writes. +

    + N.B. the lock file is deleted when close() is called + - or if the main file cannot be opened initially. + In the (unlikely) event that the lockfile cannot be deleted, + this is not reported, and subsequent requests using + the same lockfile will fail. +

    + By default, the file will be overwritten, but this may be changed to append. + The lock directory may be specified, but defaults to the system property + java.io.tmpdir. + The encoding may also be specified, and defaults to the platform default.

    +
    Version:
    +
    $Id: LockableFileWriter.java 1686747 2015-06-21 18:44:49Z krosenvold $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        LockableFileWriter

        +
        public LockableFileWriter(String fileName)
        +                   throws IOException
        +
        Constructs a LockableFileWriter. + If the file exists, it is overwritten.
        +
        Parameters:
        fileName - the file to write to, not null
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        LockableFileWriter

        +
        public LockableFileWriter(String fileName,
        +                  boolean append)
        +                   throws IOException
        +
        Constructs a LockableFileWriter.
        +
        Parameters:
        fileName - file to write to, not null
        append - true if content should be appended, false to overwrite
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        LockableFileWriter

        +
        public LockableFileWriter(String fileName,
        +                  boolean append,
        +                  String lockDir)
        +                   throws IOException
        +
        Constructs a LockableFileWriter.
        +
        Parameters:
        fileName - the file to write to, not null
        append - true if content should be appended, false to overwrite
        lockDir - the directory in which the lock file should be held
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        LockableFileWriter

        +
        public LockableFileWriter(File file)
        +                   throws IOException
        +
        Constructs a LockableFileWriter. + If the file exists, it is overwritten.
        +
        Parameters:
        file - the file to write to, not null
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + +
        +
      • +

        LockableFileWriter

        +
        public LockableFileWriter(File file,
        +                  boolean append)
        +                   throws IOException
        +
        Constructs a LockableFileWriter.
        +
        Parameters:
        file - the file to write to, not null
        append - true if content should be appended, false to overwrite
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IOException - in case of an I/O error
        +
      • +
      + + + + + + + +
        +
      • +

        LockableFileWriter

        +
        public LockableFileWriter(File file,
        +                  Charset encoding)
        +                   throws IOException
        +
        Constructs a LockableFileWriter with a file encoding.
        +
        Parameters:
        file - the file to write to, not null
        encoding - the encoding to use, null means platform default
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IOException - in case of an I/O error
        Since:
        +
        2.3
        +
      • +
      + + + + + + + +
        +
      • +

        LockableFileWriter

        +
        public LockableFileWriter(File file,
        +                  Charset encoding,
        +                  boolean append,
        +                  String lockDir)
        +                   throws IOException
        +
        Constructs a LockableFileWriter with a file encoding.
        +
        Parameters:
        file - the file to write to, not null
        encoding - the encoding to use, null means platform default
        append - true if content should be appended, false to overwrite
        lockDir - the directory in which the lock file should be held
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IOException - in case of an I/O error
        Since:
        +
        2.3
        +
      • +
      + + + +
        +
      • +

        LockableFileWriter

        +
        public LockableFileWriter(File file,
        +                  String encoding,
        +                  boolean append,
        +                  String lockDir)
        +                   throws IOException
        +
        Constructs a LockableFileWriter with a file encoding.
        +
        Parameters:
        file - the file to write to, not null
        encoding - the encoding to use, null means platform default
        append - true if content should be appended, false to overwrite
        lockDir - the directory in which the lock file should be held
        +
        Throws:
        +
        NullPointerException - if the file is null
        +
        IOException - in case of an I/O error
        +
        UnsupportedCharsetException - thrown instead of UnsupportedEncodingException in version 2.2 if the encoding is not + supported.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + + + + + +
        +
      • +

        write

        +
        public void write(int idx)
        +           throws IOException
        +
        Write a character.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        idx - the character to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(char[] chr)
        +           throws IOException
        +
        Write the characters from an array.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        chr - the characters to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(char[] chr,
        +         int st,
        +         int end)
        +           throws IOException
        +
        Write the specified characters from an array.
        +
        +
        Specified by:
        +
        write in class Writer
        +
        Parameters:
        chr - the characters to write
        st - The start offset
        end - The number of characters to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(String str)
        +           throws IOException
        +
        Write the characters from a string.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        str - the string to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(String str,
        +         int st,
        +         int end)
        +           throws IOException
        +
        Write the specified characters from a string.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        str - the string to write
        st - The start offset
        end - The number of characters to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/NullOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/NullOutputStream.html new file mode 100644 index 0000000..b934a0e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/NullOutputStream.html @@ -0,0 +1,372 @@ + + + + + +NullOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class NullOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    +
    public class NullOutputStream
    +extends OutputStream
    +
    This OutputStream writes all data to the famous /dev/null. +

    + This output stream has no destination (file/socket etc.) and all + bytes written to it are ignored and lost. +

    +
    Version:
    +
    $Id: NullOutputStream.java 1674708 2015-04-20 00:02:45Z ggregory $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        NULL_OUTPUT_STREAM

        +
        public static final NullOutputStream NULL_OUTPUT_STREAM
        +
        A singleton.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NullOutputStream

        +
        public NullOutputStream()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        write

        +
        public void write(byte[] b,
        +         int off,
        +         int len)
        +
        Does nothing - output to /dev/null.
        +
        +
        Overrides:
        +
        write in class OutputStream
        +
        Parameters:
        b - The bytes to write
        off - The start offset
        len - The number of bytes to write
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(int b)
        +
        Does nothing - output to /dev/null.
        +
        +
        Specified by:
        +
        write in class OutputStream
        +
        Parameters:
        b - The byte to write
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(byte[] b)
        +           throws IOException
        +
        Does nothing - output to /dev/null.
        +
        +
        Overrides:
        +
        write in class OutputStream
        +
        Parameters:
        b - The bytes to write
        +
        Throws:
        +
        IOException - never
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/NullWriter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/NullWriter.html new file mode 100644 index 0000000..f71956b --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/NullWriter.html @@ -0,0 +1,531 @@ + + + + + +NullWriter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class NullWriter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, Appendable, AutoCloseable
    +
    +
    +
    +
    public class NullWriter
    +extends Writer
    +
    This Writer writes all data to the famous /dev/null. +

    + This Writer has no destination (file/socket etc.) and all + characters written to it are ignored and lost.

    +
    Version:
    +
    $Id: NullWriter.java 1471767 2013-04-24 23:24:19Z sebb $
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static NullWriterNULL_WRITER +
      A singleton.
      +
      + +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      NullWriter() +
      Constructs a new NullWriter.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        NULL_WRITER

        +
        public static final NullWriter NULL_WRITER
        +
        A singleton.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        NullWriter

        +
        public NullWriter()
        +
        Constructs a new NullWriter.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        append

        +
        public Writer append(char c)
        +
        Does nothing - output to /dev/null.
        +
        +
        Specified by:
        +
        append in interface Appendable
        +
        Overrides:
        +
        append in class Writer
        +
        Parameters:
        c - The character to write
        +
        Returns:
        this writer
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        append

        +
        public Writer append(CharSequence csq,
        +            int start,
        +            int end)
        +
        Does nothing - output to /dev/null.
        +
        +
        Specified by:
        +
        append in interface Appendable
        +
        Overrides:
        +
        append in class Writer
        +
        Parameters:
        csq - The character sequence to write
        start - The index of the first character to write
        end - The index of the first character to write (exclusive)
        +
        Returns:
        this writer
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        append

        +
        public Writer append(CharSequence csq)
        +
        Does nothing - output to /dev/null.
        +
        +
        Specified by:
        +
        append in interface Appendable
        +
        Overrides:
        +
        append in class Writer
        +
        Parameters:
        csq - The character sequence to write
        +
        Returns:
        this writer
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(int idx)
        +
        Does nothing - output to /dev/null.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        idx - The character to write
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(char[] chr)
        +
        Does nothing - output to /dev/null.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        chr - The characters to write
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(char[] chr,
        +         int st,
        +         int end)
        +
        Does nothing - output to /dev/null.
        +
        +
        Specified by:
        +
        write in class Writer
        +
        Parameters:
        chr - The characters to write
        st - The start offset
        end - The number of characters to write
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(String str)
        +
        Does nothing - output to /dev/null.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        str - The string to write
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(String str,
        +         int st,
        +         int end)
        +
        Does nothing - output to /dev/null.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        str - The string to write
        st - The start offset
        end - The number of characters to write
        +
      • +
      + + + + + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ProxyOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ProxyOutputStream.html new file mode 100644 index 0000000..0d99df0 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ProxyOutputStream.html @@ -0,0 +1,492 @@ + + + + + +ProxyOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class ProxyOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    Direct Known Subclasses:
    +
    CloseShieldOutputStream, CountingOutputStream, TaggedOutputStream, TeeOutputStream
    +
    +
    +
    +
    public class ProxyOutputStream
    +extends FilterOutputStream
    +
    A Proxy stream which acts as expected, that is it passes the method + calls on to the proxied stream and doesn't change which methods are + being called. It is an alternative base class to FilterOutputStream + to increase reusability. +

    + See the protected methods for ways in which a subclass can easily decorate + a stream with custom pre-, post- or error processing functionality.

    +
    Version:
    +
    $Id: ProxyOutputStream.java 1415850 2012-11-30 20:51:39Z ggregory $
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      ProxyOutputStream(OutputStream proxy) +
      Constructs a new ProxyOutputStream.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      protected voidafterWrite(int n) +
      Invoked by the write methods after the proxied call has returned + successfully.
      +
      protected voidbeforeWrite(int n) +
      Invoked by the write methods before the call is proxied.
      +
      voidclose() +
      Invokes the delegate's close() method.
      +
      voidflush() +
      Invokes the delegate's flush() method.
      +
      protected voidhandleIOException(IOException e) +
      Handle any IOExceptions thrown.
      +
      voidwrite(byte[] bts) +
      Invokes the delegate's write(byte[]) method.
      +
      voidwrite(byte[] bts, + int st, + int end) +
      Invokes the delegate's write(byte[]) method.
      +
      voidwrite(int idx) +
      Invokes the delegate's write(int) method.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ProxyOutputStream

        +
        public ProxyOutputStream(OutputStream proxy)
        +
        Constructs a new ProxyOutputStream.
        +
        Parameters:
        proxy - the OutputStream to delegate to
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        write

        +
        public void write(int idx)
        +           throws IOException
        +
        Invokes the delegate's write(int) method.
        +
        +
        Overrides:
        +
        write in class FilterOutputStream
        +
        Parameters:
        idx - the byte to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(byte[] bts)
        +           throws IOException
        +
        Invokes the delegate's write(byte[]) method.
        +
        +
        Overrides:
        +
        write in class FilterOutputStream
        +
        Parameters:
        bts - the bytes to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(byte[] bts,
        +         int st,
        +         int end)
        +           throws IOException
        +
        Invokes the delegate's write(byte[]) method.
        +
        +
        Overrides:
        +
        write in class FilterOutputStream
        +
        Parameters:
        bts - the bytes to write
        st - The start offset
        end - The number of bytes to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + + + + + + + + +
        +
      • +

        beforeWrite

        +
        protected void beforeWrite(int n)
        +                    throws IOException
        +
        Invoked by the write methods before the call is proxied. The number + of bytes to be written (1 for the write(int) method, buffer + length for write(byte[]), etc.) is given as an argument. +

        + Subclasses can override this method to add common pre-processing + functionality without having to override all the write methods. + The default implementation does nothing.

        +
        Parameters:
        n - number of bytes to be written
        +
        Throws:
        +
        IOException - if the pre-processing fails
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        afterWrite

        +
        protected void afterWrite(int n)
        +                   throws IOException
        +
        Invoked by the write methods after the proxied call has returned + successfully. The number of bytes written (1 for the + write(int) method, buffer length for write(byte[]), + etc.) is given as an argument. +

        + Subclasses can override this method to add common post-processing + functionality without having to override all the write methods. + The default implementation does nothing.

        +
        Parameters:
        n - number of bytes written
        +
        Throws:
        +
        IOException - if the post-processing fails
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        handleIOException

        +
        protected void handleIOException(IOException e)
        +                          throws IOException
        +
        Handle any IOExceptions thrown. +

        + This method provides a point to implement custom exception + handling. The default behaviour is to re-throw the exception.

        +
        Parameters:
        e - The IOException thrown
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.0
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ProxyWriter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ProxyWriter.html new file mode 100644 index 0000000..bb12da7 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ProxyWriter.html @@ -0,0 +1,629 @@ + + + + + +ProxyWriter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class ProxyWriter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, Appendable, AutoCloseable
    +
    +
    +
    +
    public class ProxyWriter
    +extends FilterWriter
    +
    A Proxy stream which acts as expected, that is it passes the method + calls on to the proxied stream and doesn't change which methods are + being called. It is an alternative base class to FilterWriter + to increase reusability, because FilterWriter changes the + methods being called, such as write(char[]) to write(char[], int, int) + and write(String) to write(String, int, int).
    +
    Version:
    +
    $Id: ProxyWriter.java 1415850 2012-11-30 20:51:39Z ggregory $
    +
  • +
+
+
+
    +
  • + + + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      ProxyWriter(Writer proxy) +
      Constructs a new ProxyWriter.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      protected voidafterWrite(int n) +
      Invoked by the write methods after the proxied call has returned + successfully.
      +
      Writerappend(char c) +
      Invokes the delegate's append(char) method.
      +
      Writerappend(CharSequence csq) +
      Invokes the delegate's append(CharSequence) method.
      +
      Writerappend(CharSequence csq, + int start, + int end) +
      Invokes the delegate's append(CharSequence, int, int) method.
      +
      protected voidbeforeWrite(int n) +
      Invoked by the write methods before the call is proxied.
      +
      voidclose() +
      Invokes the delegate's close() method.
      +
      voidflush() +
      Invokes the delegate's flush() method.
      +
      protected voidhandleIOException(IOException e) +
      Handle any IOExceptions thrown.
      +
      voidwrite(char[] chr) +
      Invokes the delegate's write(char[]) method.
      +
      voidwrite(char[] chr, + int st, + int len) +
      Invokes the delegate's write(char[], int, int) method.
      +
      voidwrite(int idx) +
      Invokes the delegate's write(int) method.
      +
      voidwrite(String str) +
      Invokes the delegate's write(String) method.
      +
      voidwrite(String str, + int st, + int len) +
      Invokes the delegate's write(String) method.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ProxyWriter

        +
        public ProxyWriter(Writer proxy)
        +
        Constructs a new ProxyWriter.
        +
        Parameters:
        proxy - the Writer to delegate to
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        append

        +
        public Writer append(char c)
        +              throws IOException
        +
        Invokes the delegate's append(char) method.
        +
        +
        Specified by:
        +
        append in interface Appendable
        +
        Overrides:
        +
        append in class Writer
        +
        Parameters:
        c - The character to write
        +
        Returns:
        this writer
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        append

        +
        public Writer append(CharSequence csq,
        +            int start,
        +            int end)
        +              throws IOException
        +
        Invokes the delegate's append(CharSequence, int, int) method.
        +
        +
        Specified by:
        +
        append in interface Appendable
        +
        Overrides:
        +
        append in class Writer
        +
        Parameters:
        csq - The character sequence to write
        start - The index of the first character to write
        end - The index of the first character to write (exclusive)
        +
        Returns:
        this writer
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        append

        +
        public Writer append(CharSequence csq)
        +              throws IOException
        +
        Invokes the delegate's append(CharSequence) method.
        +
        +
        Specified by:
        +
        append in interface Appendable
        +
        Overrides:
        +
        append in class Writer
        +
        Parameters:
        csq - The character sequence to write
        +
        Returns:
        this writer
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(int idx)
        +           throws IOException
        +
        Invokes the delegate's write(int) method.
        +
        +
        Overrides:
        +
        write in class FilterWriter
        +
        Parameters:
        idx - the character to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(char[] chr)
        +           throws IOException
        +
        Invokes the delegate's write(char[]) method.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        chr - the characters to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(char[] chr,
        +         int st,
        +         int len)
        +           throws IOException
        +
        Invokes the delegate's write(char[], int, int) method.
        +
        +
        Overrides:
        +
        write in class FilterWriter
        +
        Parameters:
        chr - the characters to write
        st - The start offset
        len - The number of characters to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(String str)
        +           throws IOException
        +
        Invokes the delegate's write(String) method.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        str - the string to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(String str,
        +         int st,
        +         int len)
        +           throws IOException
        +
        Invokes the delegate's write(String) method.
        +
        +
        Overrides:
        +
        write in class FilterWriter
        +
        Parameters:
        str - the string to write
        st - The start offset
        len - The number of characters to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + + + + + + + + +
        +
      • +

        beforeWrite

        +
        protected void beforeWrite(int n)
        +                    throws IOException
        +
        Invoked by the write methods before the call is proxied. The number + of chars to be written (1 for the write(int) method, buffer + length for write(char[]), etc.) is given as an argument. +

        + Subclasses can override this method to add common pre-processing + functionality without having to override all the write methods. + The default implementation does nothing.

        +
        Parameters:
        n - number of chars to be written
        +
        Throws:
        +
        IOException - if the pre-processing fails
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        afterWrite

        +
        protected void afterWrite(int n)
        +                   throws IOException
        +
        Invoked by the write methods after the proxied call has returned + successfully. The number of chars written (1 for the + write(int) method, buffer length for write(char[]), + etc.) is given as an argument. +

        + Subclasses can override this method to add common post-processing + functionality without having to override all the write methods. + The default implementation does nothing.

        +
        Parameters:
        n - number of chars written
        +
        Throws:
        +
        IOException - if the post-processing fails
        Since:
        +
        2.0
        +
      • +
      + + + +
        +
      • +

        handleIOException

        +
        protected void handleIOException(IOException e)
        +                          throws IOException
        +
        Handle any IOExceptions thrown. +

        + This method provides a point to implement custom exception + handling. The default behaviour is to re-throw the exception.

        +
        Parameters:
        e - The IOException thrown
        +
        Throws:
        +
        IOException - if an I/O error occurs
        Since:
        +
        2.0
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/StringBuilderWriter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/StringBuilderWriter.html new file mode 100644 index 0000000..a0ebea0 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/StringBuilderWriter.html @@ -0,0 +1,524 @@ + + + + + +StringBuilderWriter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class StringBuilderWriter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, Serializable, Appendable, AutoCloseable
    +
    +
    +
    +
    public class StringBuilderWriter
    +extends Writer
    +implements Serializable
    +
    Writer implementation that outputs to a StringBuilder. +

    + NOTE: This implementation, as an alternative to + java.io.StringWriter, provides an un-synchronized + (i.e. for use in a single thread) implementation for better performance. + For safe usage with multiple Threads then + java.io.StringWriter should be used.

    +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: StringBuilderWriter.java 1722253 2015-12-30 00:36:12Z ggregory $
    +
    See Also:
    Serialized Form
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        StringBuilderWriter

        +
        public StringBuilderWriter()
        +
        Constructs a new StringBuilder instance with default capacity.
        +
      • +
      + + + +
        +
      • +

        StringBuilderWriter

        +
        public StringBuilderWriter(int capacity)
        +
        Constructs a new StringBuilder instance with the specified capacity.
        +
        Parameters:
        capacity - The initial capacity of the underlying StringBuilder
        +
      • +
      + + + +
        +
      • +

        StringBuilderWriter

        +
        public StringBuilderWriter(StringBuilder builder)
        +
        Constructs a new instance with the specified StringBuilder. + +

        If builder is null a new instance with default capacity will be created.

        +
        Parameters:
        builder - The String builder. May be null.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        append

        +
        public Writer append(char value)
        +
        Appends a single character to this Writer.
        +
        +
        Specified by:
        +
        append in interface Appendable
        +
        Overrides:
        +
        append in class Writer
        +
        Parameters:
        value - The character to append
        +
        Returns:
        This writer instance
        +
      • +
      + + + +
        +
      • +

        append

        +
        public Writer append(CharSequence value)
        +
        Appends a character sequence to this Writer.
        +
        +
        Specified by:
        +
        append in interface Appendable
        +
        Overrides:
        +
        append in class Writer
        +
        Parameters:
        value - The character to append
        +
        Returns:
        This writer instance
        +
      • +
      + + + +
        +
      • +

        append

        +
        public Writer append(CharSequence value,
        +            int start,
        +            int end)
        +
        Appends a portion of a character sequence to the StringBuilder.
        +
        +
        Specified by:
        +
        append in interface Appendable
        +
        Overrides:
        +
        append in class Writer
        +
        Parameters:
        value - The character to append
        start - The index of the first character
        end - The index of the last character + 1
        +
        Returns:
        This writer instance
        +
      • +
      + + + + + + + +
        +
      • +

        flush

        +
        public void flush()
        +
        Flushing this writer has no effect.
        +
        +
        Specified by:
        +
        flush in interface Flushable
        +
        Specified by:
        +
        flush in class Writer
        +
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(String value)
        +
        Writes a String to the StringBuilder.
        +
        +
        Overrides:
        +
        write in class Writer
        +
        Parameters:
        value - The value to write
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(char[] value,
        +         int offset,
        +         int length)
        +
        Writes a portion of a character array to the StringBuilder.
        +
        +
        Specified by:
        +
        write in class Writer
        +
        Parameters:
        value - The value to write
        offset - The index of the first character
        length - The number of characters to write
        +
      • +
      + + + +
        +
      • +

        getBuilder

        +
        public StringBuilder getBuilder()
        +
        Returns the underlying builder.
        +
        Returns:
        The underlying builder
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/TaggedOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/TaggedOutputStream.html new file mode 100644 index 0000000..0d3b0b2 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/TaggedOutputStream.html @@ -0,0 +1,390 @@ + + + + + +TaggedOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class TaggedOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    +
    public class TaggedOutputStream
    +extends ProxyOutputStream
    +
    An output stream decorator that tags potential exceptions so that the + stream that caused the exception can easily be identified. This is + done by using the TaggedIOException class to wrap all thrown + IOExceptions. See below for an example of using this class. +
    + TaggedOutputStream stream = new TaggedOutputStream(...);
    + try {
    +     // Processing that may throw an IOException either from this stream
    +     // or from some other IO activity like temporary files, etc.
    +     writeToStream(stream);
    + } catch (IOException e) {
    +     if (stream.isCauseOf(e)) {
    +         // The exception was caused by this stream.
    +         // Use e.getCause() to get the original exception.
    +     } else {
    +         // The exception was caused by something else.
    +     }
    + }
    + 
    +

    + Alternatively, the throwIfCauseOf(Exception) method can be + used to let higher levels of code handle the exception caused by this + stream while other processing errors are being taken care of at this + lower level. +

    + TaggedOutputStream stream = new TaggedOutputStream(...);
    + try {
    +     writeToStream(stream);
    + } catch (IOException e) {
    +     stream.throwIfCauseOf(e);
    +     // ... or process the exception that was caused by something else
    + }
    + 
    +
    Since:
    +
    2.0
    +
    See Also:
    TaggedIOException
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TaggedOutputStream

        +
        public TaggedOutputStream(OutputStream proxy)
        +
        Creates a tagging decorator for the given output stream.
        +
        Parameters:
        proxy - output stream to be decorated
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        isCauseOf

        +
        public boolean isCauseOf(Exception exception)
        +
        Tests if the given exception was caused by this stream.
        +
        Parameters:
        exception - an exception
        +
        Returns:
        true if the exception was thrown by this stream, + false otherwise
        +
      • +
      + + + +
        +
      • +

        throwIfCauseOf

        +
        public void throwIfCauseOf(Exception exception)
        +                    throws IOException
        +
        Re-throws the original exception thrown by this stream. This method + first checks whether the given exception is a TaggedIOException + wrapper created by this decorator, and then unwraps and throws the + original wrapped exception. Returns normally if the exception was + not thrown by this stream.
        +
        Parameters:
        exception - an exception
        +
        Throws:
        +
        IOException - original exception, if any, thrown by this stream
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/TeeOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/TeeOutputStream.html new file mode 100644 index 0000000..f4a70a4 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/TeeOutputStream.html @@ -0,0 +1,454 @@ + + + + + +TeeOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class TeeOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    +
    public class TeeOutputStream
    +extends ProxyOutputStream
    +
    Classic splitter of OutputStream. Named after the unix 'tee' + command. It allows a stream to be branched off so there + are now two streams.
    +
    Version:
    +
    $Id: TeeOutputStream.java 1686503 2015-06-19 21:32:13Z sebb $
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        branch

        +
        protected OutputStream branch
        +
        the second OutputStream to write to
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        TeeOutputStream

        +
        public TeeOutputStream(OutputStream out,
        +               OutputStream branch)
        +
        Constructs a TeeOutputStream.
        +
        Parameters:
        out - the main OutputStream
        branch - the second OutputStream
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        write

        +
        public void write(byte[] b)
        +           throws IOException
        +
        Write the bytes to both streams.
        +
        +
        Overrides:
        +
        write in class ProxyOutputStream
        +
        Parameters:
        b - the bytes to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(byte[] b,
        +         int off,
        +         int len)
        +           throws IOException
        +
        Write the specified bytes to both streams.
        +
        +
        Overrides:
        +
        write in class ProxyOutputStream
        +
        Parameters:
        b - the bytes to write
        off - The start offset
        len - The number of bytes to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(int b)
        +           throws IOException
        +
        Write a byte to both streams.
        +
        +
        Overrides:
        +
        write in class ProxyOutputStream
        +
        Parameters:
        b - the byte to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + + + + +
        +
      • +

        close

        +
        public void close()
        +           throws IOException
        +
        Closes both output streams. + + If closing the main output stream throws an exception, attempt to close the branch output stream. + + If closing the main and branch output streams both throw exceptions, which exceptions is thrown by this method is + currently unspecified and subject to change.
        +
        +
        Specified by:
        +
        close in interface Closeable
        +
        Specified by:
        +
        close in interface AutoCloseable
        +
        Overrides:
        +
        close in class ProxyOutputStream
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ThresholdingOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ThresholdingOutputStream.html new file mode 100644 index 0000000..dd31578 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/ThresholdingOutputStream.html @@ -0,0 +1,566 @@ + + + + + +ThresholdingOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class ThresholdingOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    Direct Known Subclasses:
    +
    DeferredFileOutputStream
    +
    +
    +
    +
    public abstract class ThresholdingOutputStream
    +extends OutputStream
    +
    An output stream which triggers an event when a specified number of bytes of + data have been written to it. The event can be used, for example, to throw + an exception if a maximum has been reached, or to switch the underlying + stream type when the threshold is exceeded. +

    + This class overrides all OutputStream methods. However, these + overrides ultimately call the corresponding methods in the underlying output + stream implementation. +

    + NOTE: This implementation may trigger the event before the threshold + is actually reached, since it triggers when a pending write operation would + cause the threshold to be exceeded.

    +
    Version:
    +
    $Id: ThresholdingOutputStream.java 1687815 2015-06-26 17:18:56Z krosenvold $
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      ThresholdingOutputStream(int threshold) +
      Constructs an instance of this class which will trigger an event at the + specified threshold.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      protected voidcheckThreshold(int count) +
      Checks to see if writing the specified number of bytes would cause the + configured threshold to be exceeded.
      +
      voidclose() +
      Closes this output stream and releases any system resources associated + with this stream.
      +
      voidflush() +
      Flushes this output stream and forces any buffered output bytes to be + written out.
      +
      longgetByteCount() +
      Returns the number of bytes that have been written to this output stream.
      +
      protected abstract OutputStreamgetStream() +
      Returns the underlying output stream, to which the corresponding + OutputStream methods in this class will ultimately delegate.
      +
      intgetThreshold() +
      Returns the threshold, in bytes, at which an event will be triggered.
      +
      booleanisThresholdExceeded() +
      Determines whether or not the configured threshold has been exceeded for + this output stream.
      +
      protected voidresetByteCount() +
      Resets the byteCount to zero.
      +
      protected voidsetByteCount(long count) +
      Sets the byteCount to count.
      +
      protected abstract voidthresholdReached() +
      Indicates that the configured threshold has been reached, and that a + subclass should take whatever action necessary on this event.
      +
      voidwrite(byte[] b) +
      Writes b.length bytes from the specified byte array to this + output stream.
      +
      voidwrite(byte[] b, + int off, + int len) +
      Writes len bytes from the specified byte array starting at + offset off to this output stream.
      +
      voidwrite(int b) +
      Writes the specified byte to this output stream.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ThresholdingOutputStream

        +
        public ThresholdingOutputStream(int threshold)
        +
        Constructs an instance of this class which will trigger an event at the + specified threshold.
        +
        Parameters:
        threshold - The number of bytes at which to trigger an event.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        write

        +
        public void write(int b)
        +           throws IOException
        +
        Writes the specified byte to this output stream.
        +
        +
        Specified by:
        +
        write in class OutputStream
        +
        Parameters:
        b - The byte to be written.
        +
        Throws:
        +
        IOException - if an error occurs.
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(byte[] b)
        +           throws IOException
        +
        Writes b.length bytes from the specified byte array to this + output stream.
        +
        +
        Overrides:
        +
        write in class OutputStream
        +
        Parameters:
        b - The array of bytes to be written.
        +
        Throws:
        +
        IOException - if an error occurs.
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(byte[] b,
        +         int off,
        +         int len)
        +           throws IOException
        +
        Writes len bytes from the specified byte array starting at + offset off to this output stream.
        +
        +
        Overrides:
        +
        write in class OutputStream
        +
        Parameters:
        b - The byte array from which the data will be written.
        off - The start offset in the byte array.
        len - The number of bytes to write.
        +
        Throws:
        +
        IOException - if an error occurs.
        +
      • +
      + + + +
        +
      • +

        flush

        +
        public void flush()
        +           throws IOException
        +
        Flushes this output stream and forces any buffered output bytes to be + written out.
        +
        +
        Specified by:
        +
        flush in interface Flushable
        +
        Overrides:
        +
        flush in class OutputStream
        +
        Throws:
        +
        IOException - if an error occurs.
        +
      • +
      + + + + + + + +
        +
      • +

        getThreshold

        +
        public int getThreshold()
        +
        Returns the threshold, in bytes, at which an event will be triggered.
        +
        Returns:
        The threshold point, in bytes.
        +
      • +
      + + + +
        +
      • +

        getByteCount

        +
        public long getByteCount()
        +
        Returns the number of bytes that have been written to this output stream.
        +
        Returns:
        The number of bytes written.
        +
      • +
      + + + +
        +
      • +

        isThresholdExceeded

        +
        public boolean isThresholdExceeded()
        +
        Determines whether or not the configured threshold has been exceeded for + this output stream.
        +
        Returns:
        true if the threshold has been reached; + false otherwise.
        +
      • +
      + + + +
        +
      • +

        checkThreshold

        +
        protected void checkThreshold(int count)
        +                       throws IOException
        +
        Checks to see if writing the specified number of bytes would cause the + configured threshold to be exceeded. If so, triggers an event to allow + a concrete implementation to take action on this.
        +
        Parameters:
        count - The number of bytes about to be written to the underlying + output stream.
        +
        Throws:
        +
        IOException - if an error occurs.
        +
      • +
      + + + +
        +
      • +

        resetByteCount

        +
        protected void resetByteCount()
        +
        Resets the byteCount to zero. You can call this from + thresholdReached() if you want the event to be triggered again.
        +
      • +
      + + + +
        +
      • +

        setByteCount

        +
        protected void setByteCount(long count)
        +
        Sets the byteCount to count. Usefull for re-opening an output stream + that been previously written to.
        +
        Parameters:
        count - The number of bytes that have already been written to the + output stream
        Since:
        +
        2.5
        +
      • +
      + + + +
        +
      • +

        getStream

        +
        protected abstract OutputStream getStream()
        +                                   throws IOException
        +
        Returns the underlying output stream, to which the corresponding + OutputStream methods in this class will ultimately delegate.
        +
        Returns:
        The underlying output stream.
        +
        Throws:
        +
        IOException - if an error occurs.
        +
      • +
      + + + +
        +
      • +

        thresholdReached

        +
        protected abstract void thresholdReached()
        +                                  throws IOException
        +
        Indicates that the configured threshold has been reached, and that a + subclass should take whatever action necessary on this event. This may + include changing the underlying output stream.
        +
        Throws:
        +
        IOException - if an error occurs.
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/WriterOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/WriterOutputStream.html new file mode 100644 index 0000000..37f0713 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/WriterOutputStream.html @@ -0,0 +1,573 @@ + + + + + +WriterOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class WriterOutputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, AutoCloseable
    +
    +
    +
    +
    public class WriterOutputStream
    +extends OutputStream
    +
    OutputStream implementation that transforms a byte stream to a + character stream using a specified charset encoding and writes the resulting + stream to a Writer. The stream is transformed using a + CharsetDecoder object, guaranteeing that all charset + encodings supported by the JRE are handled correctly. +

    + The output of the CharsetDecoder is buffered using a fixed size buffer. + This implies that the data is written to the underlying Writer in chunks + that are no larger than the size of this buffer. By default, the buffer is + flushed only when it overflows or when flush() or close() + is called. In general there is therefore no need to wrap the underlying Writer + in a BufferedWriter. WriterOutputStream can also + be instructed to flush the buffer after each write operation. In this case, all + available data is written immediately to the underlying Writer, implying that + the current position of the Writer is correlated to the current position + of the WriterOutputStream. +

    + WriterOutputStream implements the inverse transformation of OutputStreamWriter; + in the following example, writing to out2 would have the same result as writing to + out directly (provided that the byte sequence is legal with respect to the + charset encoding): +

    + OutputStream out = ...
    + Charset cs = ...
    + OutputStreamWriter writer = new OutputStreamWriter(out, cs);
    + WriterOutputStream out2 = new WriterOutputStream(writer, cs);
    + WriterOutputStream implements the same transformation as InputStreamReader, + except that the control flow is reversed: both classes transform a byte stream + into a character stream, but InputStreamReader pulls data from the underlying stream, + while WriterOutputStream pushes it to the underlying stream. +

    + Note that while there are use cases where there is no alternative to using + this class, very often the need to use this class is an indication of a flaw + in the design of the code. This class is typically used in situations where an existing + API only accepts an OutputStream object, but where the stream is known to represent + character data that must be decoded for further use. +

    + Instances of WriterOutputStream are not thread safe.

    +
    Since:
    +
    2.0
    +
    See Also:
    ReaderInputStream
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        WriterOutputStream

        +
        public WriterOutputStream(Writer writer,
        +                  CharsetDecoder decoder)
        +
        Constructs a new WriterOutputStream with a default output buffer size of + 1024 characters. The output buffer will only be flushed when it overflows or when + flush() or close() is called.
        +
        Parameters:
        writer - the target Writer
        decoder - the charset decoder
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        WriterOutputStream

        +
        public WriterOutputStream(Writer writer,
        +                  CharsetDecoder decoder,
        +                  int bufferSize,
        +                  boolean writeImmediately)
        +
        Constructs a new WriterOutputStream.
        +
        Parameters:
        writer - the target Writer
        decoder - the charset decoder
        bufferSize - the size of the output buffer in number of characters
        writeImmediately - If true the output buffer will be flushed after each + write operation, i.e. all available data will be written to the + underlying Writer immediately. If false, the + output buffer will only be flushed when it overflows or when + flush() or close() is called.
        Since:
        +
        2.1
        +
      • +
      + + + +
        +
      • +

        WriterOutputStream

        +
        public WriterOutputStream(Writer writer,
        +                  Charset charset,
        +                  int bufferSize,
        +                  boolean writeImmediately)
        +
        Constructs a new WriterOutputStream.
        +
        Parameters:
        writer - the target Writer
        charset - the charset encoding
        bufferSize - the size of the output buffer in number of characters
        writeImmediately - If true the output buffer will be flushed after each + write operation, i.e. all available data will be written to the + underlying Writer immediately. If false, the + output buffer will only be flushed when it overflows or when + flush() or close() is called.
        +
      • +
      + + + +
        +
      • +

        WriterOutputStream

        +
        public WriterOutputStream(Writer writer,
        +                  Charset charset)
        +
        Constructs a new WriterOutputStream with a default output buffer size of + 1024 characters. The output buffer will only be flushed when it overflows or when + flush() or close() is called.
        +
        Parameters:
        writer - the target Writer
        charset - the charset encoding
        +
      • +
      + + + +
        +
      • +

        WriterOutputStream

        +
        public WriterOutputStream(Writer writer,
        +                  String charsetName,
        +                  int bufferSize,
        +                  boolean writeImmediately)
        +
        Constructs a new WriterOutputStream.
        +
        Parameters:
        writer - the target Writer
        charsetName - the name of the charset encoding
        bufferSize - the size of the output buffer in number of characters
        writeImmediately - If true the output buffer will be flushed after each + write operation, i.e. all available data will be written to the + underlying Writer immediately. If false, the + output buffer will only be flushed when it overflows or when + flush() or close() is called.
        +
      • +
      + + + +
        +
      • +

        WriterOutputStream

        +
        public WriterOutputStream(Writer writer,
        +                  String charsetName)
        +
        Constructs a new WriterOutputStream with a default output buffer size of + 1024 characters. The output buffer will only be flushed when it overflows or when + flush() or close() is called.
        +
        Parameters:
        writer - the target Writer
        charsetName - the name of the charset encoding
        +
      • +
      + + + + +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        write

        +
        public void write(byte[] b,
        +         int off,
        +         int len)
        +           throws IOException
        +
        Write bytes from the specified byte array to the stream.
        +
        +
        Overrides:
        +
        write in class OutputStream
        +
        Parameters:
        b - the byte array containing the bytes to write
        off - the start offset in the byte array
        len - the number of bytes to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(byte[] b)
        +           throws IOException
        +
        Write bytes from the specified byte array to the stream.
        +
        +
        Overrides:
        +
        write in class OutputStream
        +
        Parameters:
        b - the byte array containing the bytes to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(int b)
        +           throws IOException
        +
        Write a single byte to the stream.
        +
        +
        Specified by:
        +
        write in class OutputStream
        +
        Parameters:
        b - the byte to write
        +
        Throws:
        +
        IOException - if an I/O error occurs
        +
      • +
      + + + + + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/XmlStreamWriter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/XmlStreamWriter.html new file mode 100644 index 0000000..ae2faac --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/XmlStreamWriter.html @@ -0,0 +1,464 @@ + + + + + +XmlStreamWriter (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.output
+

Class XmlStreamWriter

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, Flushable, Appendable, AutoCloseable
    +
    +
    +
    +
    public class XmlStreamWriter
    +extends Writer
    +
    Character stream that handles all the necessary Voodo to figure out the + charset encoding of the XML document written to the stream.
    +
    Since:
    +
    2.0
    +
    Version:
    +
    $Id: XmlStreamWriter.java 1415850 2012-11-30 20:51:39Z ggregory $
    +
    See Also:
    XmlStreamReader
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        XmlStreamWriter

        +
        public XmlStreamWriter(OutputStream out)
        +
        Construct an new XML stream writer for the specified output stream + with a default encoding of UTF-8.
        +
        Parameters:
        out - The output stream
        +
      • +
      + + + +
        +
      • +

        XmlStreamWriter

        +
        public XmlStreamWriter(OutputStream out,
        +               String defaultEncoding)
        +
        Construct an new XML stream writer for the specified output stream + with the specified default encoding.
        +
        Parameters:
        out - The output stream
        defaultEncoding - The default encoding if not encoding could be detected
        +
      • +
      + + + +
        +
      • +

        XmlStreamWriter

        +
        public XmlStreamWriter(File file)
        +                throws FileNotFoundException
        +
        Construct an new XML stream writer for the specified file + with a default encoding of UTF-8.
        +
        Parameters:
        file - The file to write to
        +
        Throws:
        +
        FileNotFoundException - if there is an error creating or + opening the file
        +
      • +
      + + + +
        +
      • +

        XmlStreamWriter

        +
        public XmlStreamWriter(File file,
        +               String defaultEncoding)
        +                throws FileNotFoundException
        +
        Construct an new XML stream writer for the specified file + with the specified default encoding.
        +
        Parameters:
        file - The file to write to
        defaultEncoding - The default encoding if not encoding could be detected
        +
        Throws:
        +
        FileNotFoundException - if there is an error creating or + opening the file
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getEncoding

        +
        public String getEncoding()
        +
        Return the detected encoding.
        +
        Returns:
        the detected encoding
        +
      • +
      + + + +
        +
      • +

        getDefaultEncoding

        +
        public String getDefaultEncoding()
        +
        Return the default encoding.
        +
        Returns:
        the default encoding
        +
      • +
      + + + + + + + +
        +
      • +

        flush

        +
        public void flush()
        +           throws IOException
        +
        Flush the underlying writer.
        +
        +
        Specified by:
        +
        flush in interface Flushable
        +
        Specified by:
        +
        flush in class Writer
        +
        Throws:
        +
        IOException - if an error occurs flushing the underlying writer
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(char[] cbuf,
        +         int off,
        +         int len)
        +           throws IOException
        +
        Write the characters to the underlying writer, detecing encoding.
        +
        +
        Specified by:
        +
        write in class Writer
        +
        Parameters:
        cbuf - the buffer to write the characters from
        off - The start offset
        len - The number of characters to write
        +
        Throws:
        +
        IOException - if an error occurs detecting the encoding
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/AppendableOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/AppendableOutputStream.html new file mode 100644 index 0000000..9f09f73 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/AppendableOutputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.AppendableOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.AppendableOutputStream

+
+
No usage of org.apache.commons.io.output.AppendableOutputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/BrokenOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/BrokenOutputStream.html new file mode 100644 index 0000000..97d04af --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/BrokenOutputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.BrokenOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.BrokenOutputStream

+
+
No usage of org.apache.commons.io.output.BrokenOutputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ByteArrayOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ByteArrayOutputStream.html new file mode 100644 index 0000000..7a028b5 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ByteArrayOutputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.ByteArrayOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.ByteArrayOutputStream

+
+
No usage of org.apache.commons.io.output.ByteArrayOutputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ChunkedOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ChunkedOutputStream.html new file mode 100644 index 0000000..9095654 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ChunkedOutputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.ChunkedOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.ChunkedOutputStream

+
+
No usage of org.apache.commons.io.output.ChunkedOutputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ChunkedWriter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ChunkedWriter.html new file mode 100644 index 0000000..21d3311 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ChunkedWriter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.ChunkedWriter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.ChunkedWriter

+
+
No usage of org.apache.commons.io.output.ChunkedWriter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/CloseShieldOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/CloseShieldOutputStream.html new file mode 100644 index 0000000..00afc5a --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/CloseShieldOutputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.CloseShieldOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.CloseShieldOutputStream

+
+
No usage of org.apache.commons.io.output.CloseShieldOutputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ClosedOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ClosedOutputStream.html new file mode 100644 index 0000000..b473359 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ClosedOutputStream.html @@ -0,0 +1,161 @@ + + + + + +Uses of Class org.apache.commons.io.output.ClosedOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.ClosedOutputStream

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/CountingOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/CountingOutputStream.html new file mode 100644 index 0000000..50edf43 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/CountingOutputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.CountingOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.CountingOutputStream

+
+
No usage of org.apache.commons.io.output.CountingOutputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/DeferredFileOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/DeferredFileOutputStream.html new file mode 100644 index 0000000..a1d2fd9 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/DeferredFileOutputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.DeferredFileOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.DeferredFileOutputStream

+
+
No usage of org.apache.commons.io.output.DeferredFileOutputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/DemuxOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/DemuxOutputStream.html new file mode 100644 index 0000000..ff9ba7d --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/DemuxOutputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.DemuxOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.DemuxOutputStream

+
+
No usage of org.apache.commons.io.output.DemuxOutputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/FileWriterWithEncoding.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/FileWriterWithEncoding.html new file mode 100644 index 0000000..83c3cb4 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/FileWriterWithEncoding.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.FileWriterWithEncoding (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.FileWriterWithEncoding

+
+
No usage of org.apache.commons.io.output.FileWriterWithEncoding
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/LockableFileWriter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/LockableFileWriter.html new file mode 100644 index 0000000..70a2fba --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/LockableFileWriter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.LockableFileWriter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.LockableFileWriter

+
+
No usage of org.apache.commons.io.output.LockableFileWriter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/NullOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/NullOutputStream.html new file mode 100644 index 0000000..f7d494b --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/NullOutputStream.html @@ -0,0 +1,161 @@ + + + + + +Uses of Class org.apache.commons.io.output.NullOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.NullOutputStream

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/NullWriter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/NullWriter.html new file mode 100644 index 0000000..b2c8c05 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/NullWriter.html @@ -0,0 +1,161 @@ + + + + + +Uses of Class org.apache.commons.io.output.NullWriter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.NullWriter

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ProxyOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ProxyOutputStream.html new file mode 100644 index 0000000..d45de06 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ProxyOutputStream.html @@ -0,0 +1,181 @@ + + + + + +Uses of Class org.apache.commons.io.output.ProxyOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.ProxyOutputStream

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ProxyWriter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ProxyWriter.html new file mode 100644 index 0000000..20707c7 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ProxyWriter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.ProxyWriter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.ProxyWriter

+
+
No usage of org.apache.commons.io.output.ProxyWriter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/StringBuilderWriter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/StringBuilderWriter.html new file mode 100644 index 0000000..df2bb74 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/StringBuilderWriter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.StringBuilderWriter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.StringBuilderWriter

+
+
No usage of org.apache.commons.io.output.StringBuilderWriter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/TaggedOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/TaggedOutputStream.html new file mode 100644 index 0000000..a55c5d9 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/TaggedOutputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.TaggedOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.TaggedOutputStream

+
+
No usage of org.apache.commons.io.output.TaggedOutputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/TeeOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/TeeOutputStream.html new file mode 100644 index 0000000..850cbfd --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/TeeOutputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.TeeOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.TeeOutputStream

+
+
No usage of org.apache.commons.io.output.TeeOutputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ThresholdingOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ThresholdingOutputStream.html new file mode 100644 index 0000000..8a06407 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/ThresholdingOutputStream.html @@ -0,0 +1,162 @@ + + + + + +Uses of Class org.apache.commons.io.output.ThresholdingOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.ThresholdingOutputStream

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/WriterOutputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/WriterOutputStream.html new file mode 100644 index 0000000..be25656 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/WriterOutputStream.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.WriterOutputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.WriterOutputStream

+
+
No usage of org.apache.commons.io.output.WriterOutputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/XmlStreamWriter.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/XmlStreamWriter.html new file mode 100644 index 0000000..f1f260e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/class-use/XmlStreamWriter.html @@ -0,0 +1,115 @@ + + + + + +Uses of Class org.apache.commons.io.output.XmlStreamWriter (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.output.XmlStreamWriter

+
+
No usage of org.apache.commons.io.output.XmlStreamWriter
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-frame.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-frame.html new file mode 100644 index 0000000..6c5a4c2 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-frame.html @@ -0,0 +1,39 @@ + + + + + +org.apache.commons.io.output (Apache Commons IO 2.5 API) + + + +

org.apache.commons.io.output

+ + + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-summary.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-summary.html new file mode 100644 index 0000000..4201e5a --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-summary.html @@ -0,0 +1,289 @@ + + + + + +org.apache.commons.io.output (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Package org.apache.commons.io.output

+
+
+This package provides implementations of output classes, such as +OutputStream and Writer.
+
+

See: Description

+
+
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    AppendableOutputStream<T extends Appendable> +
    OutputStream implementation that writes the data to an Appendable + Object.
    +
    BrokenOutputStream +
    Broken output stream.
    +
    ByteArrayOutputStream +
    This class implements an output stream in which the data is + written into a byte array.
    +
    ChunkedOutputStream +
    OutputStream which breaks larger output blocks into chunks.
    +
    ChunkedWriter +
    Writer which breaks larger output blocks into chunks.
    +
    ClosedOutputStream +
    Closed output stream.
    +
    CloseShieldOutputStream +
    Proxy stream that prevents the underlying output stream from being closed.
    +
    CountingOutputStream +
    A decorating output stream that counts the number of bytes that have passed + through the stream so far.
    +
    DeferredFileOutputStream +
    An output stream which will retain data in memory until a specified + threshold is reached, and only then commit it to disk.
    +
    DemuxOutputStream +
    Forwards data to a stream that has been associated with this thread.
    +
    FileWriterWithEncoding +
    Writer of files that allows the encoding to be set.
    +
    LockableFileWriter +
    FileWriter that will create and honor lock files to allow simple + cross thread file lock handling.
    +
    NullOutputStream +
    This OutputStream writes all data to the famous /dev/null.
    +
    NullWriter +
    This Writer writes all data to the famous /dev/null.
    +
    ProxyOutputStream +
    A Proxy stream which acts as expected, that is it passes the method + calls on to the proxied stream and doesn't change which methods are + being called.
    +
    ProxyWriter +
    A Proxy stream which acts as expected, that is it passes the method + calls on to the proxied stream and doesn't change which methods are + being called.
    +
    StringBuilderWriter +
    Writer implementation that outputs to a StringBuilder.
    +
    TaggedOutputStream +
    An output stream decorator that tags potential exceptions so that the + stream that caused the exception can easily be identified.
    +
    TeeOutputStream +
    Classic splitter of OutputStream.
    +
    ThresholdingOutputStream +
    An output stream which triggers an event when a specified number of bytes of + data have been written to it.
    +
    WriterOutputStream +
    OutputStream implementation that transforms a byte stream to a + character stream using a specified charset encoding and writes the resulting + stream to a Writer.
    +
    XmlStreamWriter +
    Character stream that handles all the necessary Voodo to figure out the + charset encoding of the XML document written to the stream.
    +
    +
  • +
+ + + +

Package org.apache.commons.io.output Description

+

+This package provides implementations of output classes, such as +OutputStream and Writer. +

+
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-tree.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-tree.html new file mode 100644 index 0000000..91f5230 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-tree.html @@ -0,0 +1,171 @@ + + + + + +org.apache.commons.io.output Class Hierarchy (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For Package org.apache.commons.io.output

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-use.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-use.html new file mode 100644 index 0000000..86907aa --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/output/package-use.html @@ -0,0 +1,177 @@ + + + + + +Uses of Package org.apache.commons.io.output (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Package
org.apache.commons.io.output

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/package-frame.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/package-frame.html new file mode 100644 index 0000000..6ea3e18 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/package-frame.html @@ -0,0 +1,42 @@ + + + + + +org.apache.commons.io (Apache Commons IO 2.5 API) + + + +

org.apache.commons.io

+ + + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/package-summary.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/package-summary.html new file mode 100644 index 0000000..16b611e --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/package-summary.html @@ -0,0 +1,305 @@ + + + + + +org.apache.commons.io (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Package org.apache.commons.io

+
+
+This package defines utility classes for working with streams, readers, +writers and files.
+
+

See: Description

+
+
+
    +
  • + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    ByteOrderMark +
    Byte Order Mark (BOM) representation - see BOMInputStream.
    +
    Charsets +
    Charsets required of every implementation of the Java platform.
    +
    CopyUtilsDeprecated +
    Use IOUtils.
    +
    DirectoryWalker<T> +
    Abstract class that walks through a directory hierarchy and provides + subclasses with convenient hooks to add specific behaviour.
    +
    EndianUtils +
    Utility code for dealing with different endian systems.
    +
    FileCleanerDeprecated + +
    FileCleaningTracker +
    Keeps track of files awaiting deletion, and deletes them when an associated + marker object is reclaimed by the garbage collector.
    +
    FileDeleteStrategy +
    Strategy for deleting files.
    +
    FilenameUtils +
    General filename and filepath manipulation utilities.
    +
    FileSystemUtils +
    General File System utilities.
    +
    FileUtils +
    General file manipulation utilities.
    +
    HexDump +
    Dumps data in hexadecimal format.
    +
    IOUtils +
    General IO stream manipulation utilities.
    +
    LineIterator +
    An Iterator over the lines in a Reader.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Enum Summary 
    EnumDescription
    IOCase +
    Enumeration of IO case sensitivity.
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + + + + + +
    Exception Summary 
    ExceptionDescription
    DirectoryWalker.CancelException +
    CancelException is thrown in DirectoryWalker to cancel the current + processing.
    +
    FileExistsException +
    Indicates that a file already exists.
    +
    IOExceptionWithCauseDeprecated +
    (since 2.5) use IOException instead
    +
    TaggedIOException +
    An IOException decorator that adds a serializable tag to the + wrapped exception.
    +
    +
  • +
+ + + +

Package org.apache.commons.io Description

+

+This package defines utility classes for working with streams, readers, +writers and files. The most commonly used classes are described here: +

+

+IOUtils is the most frequently used class. +It provides operations to read, write, copy and close streams. +

+

+FileUtils provides operations based around the JDK File class. +These include reading, writing, copying, comparing and deleting. +

+

+FilenameUtils provides utilities based on filenames. +This utility class manipulates filenames without using File objects. +It aims to simplify the transition between Windows and Unix. +Before using this class however, you should consider whether you should +be using File objects. +

+

+FileSystemUtils allows access to the filing system in ways the JDK +does not support. At present this allows you to get the free space on a drive. +

+

+EndianUtils swaps data between Big-Endian and Little-Endian formats. +

+
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/package-tree.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/package-tree.html new file mode 100644 index 0000000..6215d52 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/package-tree.html @@ -0,0 +1,172 @@ + + + + + +org.apache.commons.io Class Hierarchy (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For Package org.apache.commons.io

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Enum Hierarchy

+ +
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/package-use.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/package-use.html new file mode 100644 index 0000000..8f29ded --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/package-use.html @@ -0,0 +1,286 @@ + + + + + +Uses of Package org.apache.commons.io (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Package
org.apache.commons.io

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/ClassNameMatcher.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/ClassNameMatcher.html new file mode 100644 index 0000000..adb4f6c --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/ClassNameMatcher.html @@ -0,0 +1,212 @@ + + + + + +ClassNameMatcher (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.serialization
+

Interface ClassNameMatcher

+
+
+
+
    +
  • +
    +
    +
    public interface ClassNameMatcher
    +
    An object that matches a Class name to a condition.
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      Methods 
      Modifier and TypeMethod and Description
      booleanmatches(String className) +
      Returns true if the supplied class name matches this object's condition.
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        matches

        +
        boolean matches(String className)
        +
        Returns true if the supplied class name matches this object's condition.
        +
        Parameters:
        className - fully qualified class name
        +
        Returns:
        true if the class name matches this object's condition
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/ValidatingObjectInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/ValidatingObjectInputStream.html new file mode 100644 index 0000000..22801f4 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/ValidatingObjectInputStream.html @@ -0,0 +1,537 @@ + + + + + +ValidatingObjectInputStream (Apache Commons IO 2.5 API) + + + + + + + + + + +
+
org.apache.commons.io.serialization
+

Class ValidatingObjectInputStream

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ValidatingObjectInputStream

        +
        public ValidatingObjectInputStream(InputStream input)
        +                            throws IOException
        +
        Constructs an object to deserialize the specified input stream. + At least one accept method needs to be called to specify which + classes can be deserialized, as by default no classes are + accepted.
        +
        Parameters:
        input - an input stream
        +
        Throws:
        +
        IOException - if an I/O error occurs while reading stream header
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        invalidClassNameFound

        +
        protected void invalidClassNameFound(String className)
        +                              throws InvalidClassException
        +
        Called to throw InvalidClassException if an invalid + class name is found during deserialization. Can be overridden, for example + to log those class names.
        +
        Parameters:
        className - name of the invalid class
        +
        Throws:
        +
        InvalidClassException - if the specified class is not allowed
        +
      • +
      + + + + + + + +
        +
      • +

        accept

        +
        public ValidatingObjectInputStream accept(Class<?>... classes)
        +
        Accept the specified classes for deserialization, unless they + are otherwise rejected.
        +
        Parameters:
        classes - Classes to accept
        +
        Returns:
        this object
        +
      • +
      + + + +
        +
      • +

        reject

        +
        public ValidatingObjectInputStream reject(Class<?>... classes)
        +
        Reject the specified classes for deserialization, even if they + are otherwise accepted.
        +
        Parameters:
        classes - Classes to reject
        +
        Returns:
        this object
        +
      • +
      + + + + + + + + + + + +
        +
      • +

        accept

        +
        public ValidatingObjectInputStream accept(Pattern pattern)
        +
        Accept class names that match the supplied pattern for + deserialization, unless they are otherwise rejected.
        +
        Parameters:
        pattern - standard Java regexp
        +
        Returns:
        this object
        +
      • +
      + + + +
        +
      • +

        reject

        +
        public ValidatingObjectInputStream reject(Pattern pattern)
        +
        Reject class names that match the supplied pattern for + deserialization, even if they are otherwise accepted.
        +
        Parameters:
        pattern - standard Java regexp
        +
        Returns:
        this object
        +
      • +
      + + + +
        +
      • +

        accept

        +
        public ValidatingObjectInputStream accept(ClassNameMatcher m)
        +
        Accept class names where the supplied ClassNameMatcher matches for + deserialization, unless they are otherwise rejected.
        +
        Parameters:
        m - the matcher to use
        +
        Returns:
        this object
        +
      • +
      + + + +
        +
      • +

        reject

        +
        public ValidatingObjectInputStream reject(ClassNameMatcher m)
        +
        Reject class names where the supplied ClassNameMatcher matches for + deserialization, even if they are otherwise accepted.
        +
        Parameters:
        m - the matcher to use
        +
        Returns:
        this object
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/class-use/ClassNameMatcher.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/class-use/ClassNameMatcher.html new file mode 100644 index 0000000..1eed0bf --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/class-use/ClassNameMatcher.html @@ -0,0 +1,168 @@ + + + + + +Uses of Interface org.apache.commons.io.serialization.ClassNameMatcher (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Interface
org.apache.commons.io.serialization.ClassNameMatcher

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/class-use/ValidatingObjectInputStream.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/class-use/ValidatingObjectInputStream.html new file mode 100644 index 0000000..167ea28 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/class-use/ValidatingObjectInputStream.html @@ -0,0 +1,210 @@ + + + + + +Uses of Class org.apache.commons.io.serialization.ValidatingObjectInputStream (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Class
org.apache.commons.io.serialization.ValidatingObjectInputStream

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-frame.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-frame.html new file mode 100644 index 0000000..153475a --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-frame.html @@ -0,0 +1,22 @@ + + + + + +org.apache.commons.io.serialization (Apache Commons IO 2.5 API) + + + +

org.apache.commons.io.serialization

+
+

Interfaces

+ +

Classes

+ +
+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-summary.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-summary.html new file mode 100644 index 0000000..6408ab3 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-summary.html @@ -0,0 +1,165 @@ + + + + + +org.apache.commons.io.serialization (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Package org.apache.commons.io.serialization

+
+
+This package provides a framework for controlling the deserialization of classes.
+
+

See: Description

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    ClassNameMatcher +
    An object that matches a Class name to a condition.
    +
    +
  • +
  • + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    ValidatingObjectInputStream +
    An ObjectInputStream that's restricted to deserialize + a limited set of classes.
    +
    +
  • +
+ + + +

Package org.apache.commons.io.serialization Description

+

+This package provides a framework for controlling the deserialization of classes. +

+
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-tree.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-tree.html new file mode 100644 index 0000000..3ec4239 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-tree.html @@ -0,0 +1,140 @@ + + + + + +org.apache.commons.io.serialization Class Hierarchy (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Hierarchy For Package org.apache.commons.io.serialization

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-use.html b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-use.html new file mode 100644 index 0000000..b4bb2e3 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/org/apache/commons/io/serialization/package-use.html @@ -0,0 +1,159 @@ + + + + + +Uses of Package org.apache.commons.io.serialization (Apache Commons IO 2.5 API) + + + + + + + + + +
+

Uses of Package
org.apache.commons.io.serialization

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/overview-frame.html b/docs/licenses/Apache Commons/docs/overview-frame.html new file mode 100644 index 0000000..a83a177 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/overview-frame.html @@ -0,0 +1,25 @@ + + + + + +Overview List (Apache Commons IO 2.5 API) + + + + + +

 

+ + diff --git a/docs/licenses/Apache Commons/docs/overview-summary.html b/docs/licenses/Apache Commons/docs/overview-summary.html new file mode 100644 index 0000000..e98ab32 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/overview-summary.html @@ -0,0 +1,178 @@ + + + + + +Overview (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Apache Commons IO 2.5 API

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Packages 
PackageDescription
org.apache.commons.io +
+This package defines utility classes for working with streams, readers, +writers and files.
+
org.apache.commons.io.comparator +
This package provides various Comparator implementations +for Files.
+
org.apache.commons.io.filefilter +
This package defines an interface (IOFileFilter) that combines both +FileFilter and FilenameFilter.
+
org.apache.commons.io.input +
+This package provides implementations of input classes, such as +InputStream and Reader.
+
org.apache.commons.io.monitor +
+This package provides a component for monitoring file system events +(directory and file create, update and delete events).
+
org.apache.commons.io.output +
+This package provides implementations of output classes, such as +OutputStream and Writer.
+
org.apache.commons.io.serialization +
+This package provides a framework for controlling the deserialization of classes.
+
+
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/overview-tree.html b/docs/licenses/Apache Commons/docs/overview-tree.html new file mode 100644 index 0000000..fa85417 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/overview-tree.html @@ -0,0 +1,328 @@ + + + + + +Class Hierarchy (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + + +
+

Class Hierarchy

+ +

Interface Hierarchy

+ +

Enum Hierarchy

+ +
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/package-list b/docs/licenses/Apache Commons/docs/package-list new file mode 100644 index 0000000..48871b7 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/package-list @@ -0,0 +1,7 @@ +org.apache.commons.io +org.apache.commons.io.comparator +org.apache.commons.io.filefilter +org.apache.commons.io.input +org.apache.commons.io.monitor +org.apache.commons.io.output +org.apache.commons.io.serialization diff --git a/docs/licenses/Apache Commons/docs/resources/background.gif b/docs/licenses/Apache Commons/docs/resources/background.gif new file mode 100644 index 0000000000000000000000000000000000000000..f471940fde2f39ef8943a6af9569bcf986b1579b GIT binary patch literal 2313 zcmV+k3HJ6!Nk%w1VKM-40OkMy00030|NlK(aXwsfKV5S}VtGJbbVOr%L0@%CZH88Q zl{{NzcR^uxNo<2iYk@pjY)*5FJz8x~bc{)B zfk z+1T6M-s9WdW8dcJ-wO*3@9+W*5AY543-j^$^!EPz_4eHZ2#>)41`h@dc!2OAgN6$a zCS2I?;lqgx6IR4nkpTe;1RN0f=zxMq2O=q`94V5d$&e>Unta)^<;;^G3>e7yp=ZvW z6DIW3xpSvaogXF?_4%`@(V;s}NR^5J!3hrtJV@1QRV&r5S*L!zYE|rss${iFkg&!? zTN5V#)~=bmMorwgZsEpdOE)iExo+FO-8;8Kga{=HbSQCnF=E6W3?o*|ID%uwi5**> zJXy127Y9m+=HQ|PhXWi+xNwoWv}n_%Pq%(e+H~mGqhq5kv4Mo|-n~g|7!F*xZ{xv< zCpXS~dGg^IGK?4@J-T%b(XnUHFul6n<@2&4)zzyO2) z3Q8`i0+UKY*`$}e9mmp;tg*))`|PsK1|hAo%u0K$vDwm4gaSkm0j{`26k#qAKmbuhxZ#cquDR>B zD{s8+&TH-uNg$C#68QG}1HMBHfrP&L@@w$F_!itRzXdCN@V|LDAu%3!IDtq1#1UV7 z#1RxvT=B(DWbCoU5l=ia$Pp`Hgb_?Mp@hmtxZDI2N-)v#$}PXVvdm1d>@v(v`0TUJ zF)Pu89(q`zv=w^nVTIF3@3BYIPA}c`(@ZCAwbNBEt@PDUKe5CTR8aB66IE1!w%Amt zy+jpcn~k>GZpVFg+H6x{_uOksvBlq0OyT$6TyQZ37k(cOxZr|JEx1sGm<(M9gH z-~PMqyn|tT=))UN`|-FFFUA#KToK0fUOaz=7}Z~KeHhVC&%O27cTfHQ^WBU8z4p&T zp#>D|V}XShTD;Hx745Iz{`>K-Z$A|7!*Boo{mY;G21vjH8t{M!OrQc6$iN0V@PQDF zpadsK!3tXNf*8!81~qnXWuHZ)kytd=_y+ADWvw31ouV;CdZ#ya*(l7-A-C-Y^+iit8O zBy3*`Ls$|5Hn4m_^I^|C7{m7EFn|5vTk;|oywIgCc9Bb*=L+Y$)M>9GC<|HGs@6NB zHLY%03!dDf=eDRt2O6lVSFRcsuWZEwU?=z$CZ0W?#VJfdN>HG(l%oKpyiftJc|Y)xkjSJYCrQal-0PC~()T9xwF!Jf zVi1UA#3BBbh(i8r5&v#Pz!cF41KjbCc?4u2@@Q~oKLirt2TM30;y6b+zyX2`Yl9u; z`0$3;v0-YUp&7NdPT#q`cZlbij$jvbRk6R>8g*>}*b9E+WDwmpHAAxYzyT aU_pX{M6b8i>#Dq3onfZy}_nli%!Q$ZV%e&!tN2 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 YpWXKgmku8Vj|K)Vje`mzEKCg608Q#dYybcN literal 0 HcmV?d00001 diff --git a/docs/licenses/Apache Commons/docs/serialized-form.html b/docs/licenses/Apache Commons/docs/serialized-form.html new file mode 100644 index 0000000..de34cc4 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/serialized-form.html @@ -0,0 +1,972 @@ + + + + + +Serialized Form (Apache Commons IO 2.5 API) + + + + + + +
+ + + + + +
+ + +
+

Serialized Form

+
+
+ +
+ +
+ + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache Commons/docs/stylesheet.css b/docs/licenses/Apache Commons/docs/stylesheet.css new file mode 100644 index 0000000..0aeaa97 --- /dev/null +++ b/docs/licenses/Apache Commons/docs/stylesheet.css @@ -0,0 +1,474 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ +body { + background-color:#ffffff; + color:#353833; + font-family:Arial, Helvetica, sans-serif; + font-size:76%; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4c6b87; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4c6b87; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-size:1.3em; +} +h1 { + font-size:1.8em; +} +h2 { + font-size:1.5em; +} +h3 { + font-size:1.4em; +} +h4 { + font-size:1.3em; +} +h5 { + font-size:1.2em; +} +h6 { + font-size:1.1em; +} +ul { + list-style-type:disc; +} +code, tt { + font-size:1.2em; +} +dt code { + font-size:1.2em; +} +table tr td dt code { + font-size:1.2em; + vertical-align:top; +} +sup { + font-size:.6em; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:.8em; + z-index:200; + margin-top:-7px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + background-image:url(resources/titlebar.gif); + background-position:left top; + background-repeat:no-repeat; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-image:url(resources/background.gif); + background-repeat:repeat-x; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:1em; + margin:0; +} +.topNav { + background-image:url(resources/background.gif); + background-repeat:repeat-x; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; +} +.bottomNav { + margin-top:10px; + background-image:url(resources/background.gif); + background-repeat:repeat-x; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; +} +.subNav { + background-color:#dee3e9; + border-bottom:1px solid #9eadc0; + float:left; + width:100%; + overflow:hidden; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding:3px 6px; +} +ul.subNavList li{ + list-style:none; + float:left; + font-size:90%; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; +} +.navBarCell1Rev { + background-image:url(resources/tab.gif); + background-color:#a88834; + color:#FFFFFF; + margin: auto 5px; + border:1px solid #c9aa44; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader h1 { + font-size:1.3em; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 25px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:1.2em; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border-top:1px solid #9eadc0; + border-bottom:1px solid #9eadc0; + margin:0 0 6px -8px; + padding:2px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border-top:1px solid #9eadc0; + border-bottom:1px solid #9eadc0; + margin:0 0 6px -8px; + padding:2px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:1.0em; +} +.indexContainer h2 { + font-size:1.1em; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:1.1em; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:10px 0 10px 20px; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:25px; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #9eadc0; + background-color:#f9f9f9; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:1px solid #9eadc0; + border-top:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; + border-bottom:1px solid #9eadc0; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.contentContainer table, .classUseContainer table, .constantValuesContainer table { + border-bottom:1px solid #9eadc0; + width:100%; +} +.contentContainer ul li table, .classUseContainer ul li table, .constantValuesContainer ul li table { + width:100%; +} +.contentContainer .description table, .contentContainer .details table { + border-bottom:none; +} +.contentContainer ul li table th.colOne, .contentContainer ul li table th.colFirst, .contentContainer ul li table th.colLast, .classUseContainer ul li table th, .constantValuesContainer ul li table th, .contentContainer ul li table td.colOne, .contentContainer ul li table td.colFirst, .contentContainer ul li table td.colLast, .classUseContainer ul li table td, .constantValuesContainer ul li table td{ + vertical-align:top; + padding-right:20px; +} +.contentContainer ul li table th.colLast, .classUseContainer ul li table th.colLast,.constantValuesContainer ul li table th.colLast, +.contentContainer ul li table td.colLast, .classUseContainer ul li table td.colLast,.constantValuesContainer ul li table td.colLast, +.contentContainer ul li table th.colOne, .classUseContainer ul li table th.colOne, +.contentContainer ul li table td.colOne, .classUseContainer ul li table td.colOne { + padding-right:3px; +} +.overviewSummary caption, .packageSummary caption, .contentContainer ul.blockList li.blockList caption, .summary caption, .classUseContainer caption, .constantValuesContainer caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#FFFFFF; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + margin:0px; +} +caption a:link, caption a:hover, caption a:active, caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .packageSummary caption span, .contentContainer ul.blockList li.blockList caption span, .summary caption span, .classUseContainer caption span, .constantValuesContainer caption span { + white-space:nowrap; + padding-top:8px; + padding-left:8px; + display:block; + float:left; + background-image:url(resources/titlebar.gif); + height:18px; +} +.overviewSummary .tabEnd, .packageSummary .tabEnd, .contentContainer ul.blockList li.blockList .tabEnd, .summary .tabEnd, .classUseContainer .tabEnd, .constantValuesContainer .tabEnd { + width:10px; + background-image:url(resources/titlebar_end.gif); + background-repeat:no-repeat; + background-position:top right; + position:relative; + float:left; +} +ul.blockList ul.blockList li.blockList table { + margin:0 0 12px 0px; + width:100%; +} +.tableSubHeadingColor { + background-color: #EEEEFF; +} +.altColor { + background-color:#eeeeef; +} +.rowColor { + background-color:#ffffff; +} +.overviewSummary td, .packageSummary td, .contentContainer ul.blockList li.blockList td, .summary td, .classUseContainer td, .constantValuesContainer td { + text-align:left; + padding:3px 3px 3px 7px; +} +th.colFirst, th.colLast, th.colOne, .constantValuesContainer th { + background:#dee3e9; + border-top:1px solid #9eadc0; + border-bottom:1px solid #9eadc0; + text-align:left; + padding:3px 3px 3px 7px; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +td.colFirst, th.colFirst { + border-left:1px solid #9eadc0; + white-space:nowrap; +} +td.colLast, th.colLast { + border-right:1px solid #9eadc0; +} +td.colOne, th.colOne { + border-right:1px solid #9eadc0; + border-left:1px solid #9eadc0; +} +table.overviewSummary { + padding:0px; + margin-left:0px; +} +table.overviewSummary td.colFirst, table.overviewSummary th.colFirst, +table.overviewSummary td.colOne, table.overviewSummary th.colOne { + width:25%; + vertical-align:middle; +} +table.packageSummary td.colFirst, table.overviewSummary th.colFirst { + width:25%; + vertical-align:middle; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:.9em; +} +.block { + display:block; + margin:3px 0 0 0; +} +.strong { + font-weight:bold; +} diff --git a/docs/licenses/Apache FileUploader/LICENSE.txt b/docs/licenses/Apache FileUploader/LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/docs/licenses/Apache FileUploader/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/docs/licenses/Apache FileUploader/NOTICE.txt b/docs/licenses/Apache FileUploader/NOTICE.txt new file mode 100644 index 0000000..b72a517 --- /dev/null +++ b/docs/licenses/Apache FileUploader/NOTICE.txt @@ -0,0 +1,5 @@ +Apache Commons FileUpload +Copyright 2002-2016 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/docs/licenses/Apache FileUploader/site/apidocs/allclasses-frame.html b/docs/licenses/Apache FileUploader/site/apidocs/allclasses-frame.html new file mode 100644 index 0000000..46f9431 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/allclasses-frame.html @@ -0,0 +1,59 @@ + + + + + + +All Classes (Apache Commons FileUpload 1.3.2 API) + + + + +

All Classes

+ + + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/allclasses-noframe.html b/docs/licenses/Apache FileUploader/site/apidocs/allclasses-noframe.html new file mode 100644 index 0000000..2d28d26 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/allclasses-noframe.html @@ -0,0 +1,59 @@ + + + + + + +All Classes (Apache Commons FileUpload 1.3.2 API) + + + + +

All Classes

+ + + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/constant-values.html b/docs/licenses/Apache FileUploader/site/apidocs/constant-values.html new file mode 100644 index 0000000..29a62bd --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/constant-values.html @@ -0,0 +1,297 @@ + + + + + + +Constant Field Values (Apache Commons FileUpload 1.3.2 API) + + + + + + + +
+ + + + + + + +
+ + +
+

Constant Field Values

+

Contents

+ +
+
+ + +

org.apache.*

+ + +
+ +
+ + + + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/deprecated-list.html b/docs/licenses/Apache FileUploader/site/apidocs/deprecated-list.html new file mode 100644 index 0000000..ac11671 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/deprecated-list.html @@ -0,0 +1,383 @@ + + + + + + +Deprecated List (Apache Commons FileUpload 1.3.2 API) + + + + + + + +
+ + + + + + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/help-doc.html b/docs/licenses/Apache FileUploader/site/apidocs/help-doc.html new file mode 100644 index 0000000..3aa148b --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/help-doc.html @@ -0,0 +1,230 @@ + + + + + + +API Help (Apache Commons FileUpload 1.3.2 API) + + + + + + + +
+ + + + + + + +
+ + +
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+
    +
  • +

    Overview

    +

    The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

    +
  • +
  • +

    Package

    +

    Each package has a page that contains a list of its classes and interfaces, with a summary for each. This page can contain six categories:

    +
      +
    • Interfaces (italic)
    • +
    • Classes
    • +
    • Enums
    • +
    • Exceptions
    • +
    • Errors
    • +
    • Annotation Types
    • +
    +
  • +
  • +

    Class/Interface

    +

    Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

    +
      +
    • Class inheritance diagram
    • +
    • Direct Subclasses
    • +
    • All Known Subinterfaces
    • +
    • All Known Implementing Classes
    • +
    • Class/interface declaration
    • +
    • Class/interface description
    • +
    +
      +
    • Nested Class Summary
    • +
    • Field Summary
    • +
    • Constructor Summary
    • +
    • Method Summary
    • +
    +
      +
    • Field Detail
    • +
    • Constructor Detail
    • +
    • Method Detail
    • +
    +

    Each summary entry contains the first sentence from the detailed description for that item. The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

    +
  • +
  • +

    Annotation Type

    +

    Each annotation type has its own separate page with the following sections:

    +
      +
    • Annotation Type declaration
    • +
    • Annotation Type description
    • +
    • Required Element Summary
    • +
    • Optional Element Summary
    • +
    • Element Detail
    • +
    +
  • +
  • +

    Enum

    +

    Each enum has its own separate page with the following sections:

    +
      +
    • Enum declaration
    • +
    • Enum description
    • +
    • Enum Constant Summary
    • +
    • Enum Constant Detail
    • +
    +
  • +
  • +

    Use

    +

    Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its Use page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

    +
  • +
  • +

    Tree (Class Hierarchy)

    +

    There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. The classes are organized by inheritance structure starting with java.lang.Object. The interfaces do not inherit from java.lang.Object.

    +
      +
    • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
    • +
    • When viewing a particular package, class or interface page, clicking "Tree" displays the hierarchy for only that package.
    • +
    +
  • +
  • +

    Deprecated API

    +

    The Deprecated API page lists all of the API that have been deprecated. A deprecated API is not recommended for use, generally due to improvements, and a replacement API is usually given. Deprecated APIs may be removed in future implementations.

    +
  • +
  • +

    Index

    +

    The Index contains an alphabetic list of all classes, interfaces, constructors, methods, and fields.

    +
  • +
  • +

    Prev/Next

    +

    These links take you to the next or previous class, interface, package, or related page.

    +
  • +
  • +

    Frames/No Frames

    +

    These links show and hide the HTML frames. All pages are available with or without frames.

    +
  • +
  • +

    All Classes

    +

    The All Classes link shows all classes and interfaces except non-static nested types.

    +
  • +
  • +

    Serialized Form

    +

    Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to re-implementors, not to developers using the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See also" section of the class description.

    +
  • +
  • +

    Constant Field Values

    +

    The Constant Field Values page lists the static final fields and their values.

    +
  • +
+This help file applies to API documentation generated using the standard doclet.
+ +
+ + + + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/index-all.html b/docs/licenses/Apache FileUploader/site/apidocs/index-all.html new file mode 100644 index 0000000..f0d8d21 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/index-all.html @@ -0,0 +1,1628 @@ + + + + + + +Index (Apache Commons FileUpload 1.3.2 API) + + + + + + + +
+ + + + + + + +
+ + +
A B C D F G H I L M N O P R S T U W  + + +

A

+
+
addHeader(String, String) - Method in class org.apache.commons.fileupload.util.FileItemHeadersImpl
+
+
Method to add header values to this instance.
+
+
arrayequals(byte[], byte[], int) - Static method in class org.apache.commons.fileupload.MultipartStream
+
+
Compares count first bytes in the arrays + a and b.
+
+
asString(InputStream) - Static method in class org.apache.commons.fileupload.util.Streams
+
+
This convenience method allows to read a + FileItemStream's + content into a string.
+
+
asString(InputStream, String) - Static method in class org.apache.commons.fileupload.util.Streams
+
+
This convenience method allows to read a + FileItemStream's + content into a string, using the given character encoding.
+
+
ATTACHMENT - Static variable in class org.apache.commons.fileupload.FileUploadBase
+
+
Content-disposition value for file attachment.
+
+
available() - Method in class org.apache.commons.fileupload.MultipartStream.ItemInputStream
+
+
Returns the number of bytes, which are currently + available, without blocking.
+
+
+ + + +

B

+
+
BOUNDARY_PREFIX - Static variable in class org.apache.commons.fileupload.MultipartStream
+
+
A byte sequence that precedes a boundary (CRLF--).
+
+
+ + + +

C

+
+
checkFileName(String) - Static method in class org.apache.commons.fileupload.util.Streams
+
+
Checks, whether the given file name is valid in the sense, + that it doesn't contain any NUL characters.
+
+
close() - Method in class org.apache.commons.fileupload.MultipartStream.ItemInputStream
+
+
Closes the input stream.
+
+
close(boolean) - Method in class org.apache.commons.fileupload.MultipartStream.ItemInputStream
+
+
Closes the input stream.
+
+
close() - Method in interface org.apache.commons.fileupload.util.Closeable
+
+
Closes the object.
+
+
close() - Method in class org.apache.commons.fileupload.util.LimitedInputStream
+
+
Closes this input stream and releases any system resources + associated with the stream.
+
+
Closeable - Interface in org.apache.commons.fileupload.util
+
+
Interface of an object, which may be closed.
+
+
CONTENT_DISPOSITION - Static variable in class org.apache.commons.fileupload.FileUploadBase
+
+
HTTP content disposition header name.
+
+
CONTENT_LENGTH - Static variable in class org.apache.commons.fileupload.FileUploadBase
+
+
HTTP content length header name.
+
+
CONTENT_TYPE - Static variable in class org.apache.commons.fileupload.FileUploadBase
+
+
HTTP content type header name.
+
+
contentLength() - Method in class org.apache.commons.fileupload.portlet.PortletRequestContext
+
+
Retrieve the content length of the request.
+
+
contentLength() - Method in class org.apache.commons.fileupload.servlet.ServletRequestContext
+
+
Retrieve the content length of the request.
+
+
contentLength() - Method in interface org.apache.commons.fileupload.UploadContext
+
+
Retrieve the content length of the request.
+
+
contextDestroyed(ServletContextEvent) - Method in class org.apache.commons.fileupload.servlet.FileCleanerCleanup
+
+
Called when the web application is being destroyed.
+
+
contextInitialized(ServletContextEvent) - Method in class org.apache.commons.fileupload.servlet.FileCleanerCleanup
+
+
Called when the web application is initialized.
+
+
copy(InputStream, OutputStream, boolean) - Static method in class org.apache.commons.fileupload.util.Streams
+
+
Copies the contents of the given InputStream + to the given OutputStream.
+
+
copy(InputStream, OutputStream, boolean, byte[]) - Static method in class org.apache.commons.fileupload.util.Streams
+
+
Copies the contents of the given InputStream + to the given OutputStream.
+
+
CR - Static variable in class org.apache.commons.fileupload.MultipartStream
+
+
The Carriage Return ASCII character value.
+
+
createItem(String, String, boolean, String) - Method in class org.apache.commons.fileupload.DefaultFileItemFactory
+
+
Deprecated. +
1.1 Use DiskFileItemFactory instead.
+
+
+
createItem(String, String, boolean, String) - Method in class org.apache.commons.fileupload.disk.DiskFileItemFactory
+
+
Create a new DiskFileItem + instance from the supplied parameters and the local factory + configuration.
+
+
createItem(String, String, boolean, String) - Method in interface org.apache.commons.fileupload.FileItemFactory
+
+
Create a new FileItem instance from the supplied parameters and + any local factory configuration.
+
+
createItem(Map<String, String>, boolean) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Deprecated. +
1.2 This method is no longer used in favour of + internally created instances of FileItem.
+
+
+
+ + + +

D

+
+
DASH - Static variable in class org.apache.commons.fileupload.MultipartStream
+
+
The dash (-) ASCII character value.
+
+
decodeText(String) - Static method in class org.apache.commons.fileupload.util.mime.MimeUtility
+
+
Decode a string of text obtained from a mail header into + its proper form.
+
+
DEFAULT_BUFSIZE - Static variable in class org.apache.commons.fileupload.MultipartStream
+
+
The default length of the buffer used for processing a request.
+
+
DEFAULT_CHARSET - Static variable in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Default content charset to be used when no explicit charset + parameter is provided by the sender.
+
+
DEFAULT_SIZE_THRESHOLD - Static variable in class org.apache.commons.fileupload.disk.DiskFileItemFactory
+
+
The default threshold above which uploads will be stored on disk.
+
+
DefaultFileItem - Class in org.apache.commons.fileupload
+
+
Deprecated. +
1.1 Use DiskFileItem instead.
+
+
+
DefaultFileItem(String, String, boolean, String, int, File) - Constructor for class org.apache.commons.fileupload.DefaultFileItem
+
+
Deprecated. +
1.1 Use DiskFileItem instead.
+
+
+
DefaultFileItemFactory - Class in org.apache.commons.fileupload
+
+
Deprecated. +
1.1 Use DiskFileItemFactory instead.
+
+
+
DefaultFileItemFactory() - Constructor for class org.apache.commons.fileupload.DefaultFileItemFactory
+
+
Deprecated. +
1.1 Use DiskFileItemFactory instead.
+
+
+
DefaultFileItemFactory(int, File) - Constructor for class org.apache.commons.fileupload.DefaultFileItemFactory
+
+
Deprecated. +
1.1 Use DiskFileItemFactory instead.
+
+
+
delete() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Deletes the underlying storage for a file item, including deleting any + associated temporary disk file.
+
+
delete() - Method in interface org.apache.commons.fileupload.FileItem
+
+
Deletes the underlying storage for a file item, including deleting any + associated temporary disk file.
+
+
discardBodyData() - Method in class org.apache.commons.fileupload.MultipartStream
+
+
Reads body-data from the current + encapsulation and discards it.
+
+
DiskFileItem - Class in org.apache.commons.fileupload.disk
+
+
The default implementation of the + FileItem interface.
+
+
DiskFileItem(String, String, boolean, String, int, File) - Constructor for class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Constructs a new DiskFileItem instance.
+
+
DiskFileItemFactory - Class in org.apache.commons.fileupload.disk
+
+
The default FileItemFactory + implementation.
+
+
DiskFileItemFactory() - Constructor for class org.apache.commons.fileupload.disk.DiskFileItemFactory
+
+
Constructs an unconfigured instance of this class.
+
+
DiskFileItemFactory(int, File) - Constructor for class org.apache.commons.fileupload.disk.DiskFileItemFactory
+
+
Constructs a preconfigured instance of this class.
+
+
DiskFileUpload - Class in org.apache.commons.fileupload
+
+
Deprecated. +
1.1 Use ServletFileUpload together with + DiskFileItemFactory instead.
+
+
+
DiskFileUpload() - Constructor for class org.apache.commons.fileupload.DiskFileUpload
+
+
Deprecated. +
1.1 Use FileUpload instead.
+
+
+
DiskFileUpload(DefaultFileItemFactory) - Constructor for class org.apache.commons.fileupload.DiskFileUpload
+
+
Deprecated. +
1.1 Use FileUpload instead.
+
+
+
+ + + +

F

+
+
FIELD_SEPARATOR - Static variable in class org.apache.commons.fileupload.MultipartStream
+
+
A byte sequence that that follows a delimiter that will be + followed by an encapsulation (CRLF).
+
+
FILE_CLEANING_TRACKER_ATTRIBUTE - Static variable in class org.apache.commons.fileupload.servlet.FileCleanerCleanup
+
+
Attribute name, which is used for storing an instance of + FileCleaningTracker in the web application.
+
+
FileCleanerCleanup - Class in org.apache.commons.fileupload.servlet
+
+
A servlet context listener, which ensures that the + FileCleaningTracker's reaper thread is terminated, + when the web application is destroyed.
+
+
FileCleanerCleanup() - Constructor for class org.apache.commons.fileupload.servlet.FileCleanerCleanup
+
 
+
FileItem - Interface in org.apache.commons.fileupload
+
+
This class represents a file or form item that was received within a + multipart/form-data POST request.
+
+
FileItemFactory - Interface in org.apache.commons.fileupload
+
+
A factory interface for creating FileItem instances.
+
+
FileItemHeaders - Interface in org.apache.commons.fileupload
+
+
This class provides support for accessing the headers for a file or form + item that was received within a multipart/form-data POST + request.
+
+
FileItemHeadersImpl - Class in org.apache.commons.fileupload.util
+
+
Default implementation of the FileItemHeaders interface.
+
+
FileItemHeadersImpl() - Constructor for class org.apache.commons.fileupload.util.FileItemHeadersImpl
+
 
+
FileItemHeadersSupport - Interface in org.apache.commons.fileupload
+
+
Interface that will indicate that FileItem or FileItemStream + implementations will accept the headers read for the item.
+
+
FileItemIterator - Interface in org.apache.commons.fileupload
+
+
An iterator, as returned by + FileUploadBase.getItemIterator(RequestContext).
+
+
FileItemStream - Interface in org.apache.commons.fileupload
+
+
This interface provides access to a file or form item that was + received within a multipart/form-data POST request.
+
+
FileItemStream.ItemSkippedException - Exception in org.apache.commons.fileupload
+
+
This exception is thrown, if an attempt is made to read + data from the InputStream, which has been returned + by FileItemStream.openStream(), after + Iterator.hasNext() has been invoked on the + iterator, which created the FileItemStream.
+
+
FileSizeLimitExceededException(String, long, long) - Constructor for exception org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException
+
+
Constructs a SizeExceededException with + the specified detail message, and actual and permitted sizes.
+
+
FileUpload - Class in org.apache.commons.fileupload
+
+
High level API for processing file uploads.
+
+
FileUpload() - Constructor for class org.apache.commons.fileupload.FileUpload
+
+
Constructs an uninitialised instance of this class.
+
+
FileUpload(FileItemFactory) - Constructor for class org.apache.commons.fileupload.FileUpload
+
+
Constructs an instance of this class which uses the supplied factory to + create FileItem instances.
+
+
FileUploadBase - Class in org.apache.commons.fileupload
+
+
High level API for processing file uploads.
+
+
FileUploadBase() - Constructor for class org.apache.commons.fileupload.FileUploadBase
+
 
+
FileUploadBase.FileSizeLimitExceededException - Exception in org.apache.commons.fileupload
+
+
Thrown to indicate that A files size exceeds the configured maximum.
+
+
FileUploadBase.FileUploadIOException - Exception in org.apache.commons.fileupload
+
+
This exception is thrown for hiding an inner + FileUploadException in an IOException.
+
+
FileUploadBase.InvalidContentTypeException - Exception in org.apache.commons.fileupload
+
+
Thrown to indicate that the request is not a multipart request.
+
+
FileUploadBase.IOFileUploadException - Exception in org.apache.commons.fileupload
+
+
Thrown to indicate an IOException.
+
+
FileUploadBase.SizeException - Exception in org.apache.commons.fileupload
+
+
This exception is thrown, if a requests permitted size + is exceeded.
+
+
FileUploadBase.SizeLimitExceededException - Exception in org.apache.commons.fileupload
+
+
Thrown to indicate that the request size exceeds the configured maximum.
+
+
FileUploadBase.UnknownSizeException - Exception in org.apache.commons.fileupload
+
+
Deprecated. +
1.2 As of commons-fileupload 1.2, the presence of a + content-length header is no longer required.
+
+
+
FileUploadException - Exception in org.apache.commons.fileupload
+
+
Exception for errors encountered while processing the request.
+
+
FileUploadException() - Constructor for exception org.apache.commons.fileupload.FileUploadException
+
+
Constructs a new FileUploadException without message.
+
+
FileUploadException(String) - Constructor for exception org.apache.commons.fileupload.FileUploadException
+
+
Constructs a new FileUploadException with specified detail + message.
+
+
FileUploadException(String, Throwable) - Constructor for exception org.apache.commons.fileupload.FileUploadException
+
+
Creates a new FileUploadException with the given + detail message and cause.
+
+
FileUploadIOException(FileUploadException) - Constructor for exception org.apache.commons.fileupload.FileUploadBase.FileUploadIOException
+
+
Creates a FileUploadIOException with the + given cause.
+
+
finalize() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Removes the file contents from the temporary storage.
+
+
findByte(byte, int) - Method in class org.apache.commons.fileupload.MultipartStream
+
+
Searches for a byte of specified value in the buffer, + starting at the specified position.
+
+
findSeparator() - Method in class org.apache.commons.fileupload.MultipartStream
+
+
Searches for the boundary in the buffer + region delimited by head and tail.
+
+
FORM_DATA - Static variable in class org.apache.commons.fileupload.FileUploadBase
+
+
Content-disposition value for form data.
+
+
+ + + +

G

+
+
get() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns the contents of the file as an array of bytes.
+
+
get() - Method in interface org.apache.commons.fileupload.FileItem
+
+
Returns the contents of the file item as an array of bytes.
+
+
getActualSize() - Method in exception org.apache.commons.fileupload.FileUploadBase.SizeException
+
+
Retrieves the actual size of the request.
+
+
getBoundary(String) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Retrieves the boundary from the Content-type header.
+
+
getBytesRead() - Method in class org.apache.commons.fileupload.MultipartStream.ItemInputStream
+
+
Returns the number of bytes, which have been read + by the stream.
+
+
getCause() - Method in exception org.apache.commons.fileupload.FileUploadBase.FileUploadIOException
+
+
Returns the exceptions cause.
+
+
getCause() - Method in exception org.apache.commons.fileupload.FileUploadBase.IOFileUploadException
+
+
Returns the exceptions cause.
+
+
getCause() - Method in exception org.apache.commons.fileupload.FileUploadException
+
getCharacterEncoding() - Method in class org.apache.commons.fileupload.portlet.PortletRequestContext
+
+
Retrieve the character encoding for the request.
+
+
getCharacterEncoding() - Method in interface org.apache.commons.fileupload.RequestContext
+
+
Retrieve the character encoding for the request.
+
+
getCharacterEncoding() - Method in class org.apache.commons.fileupload.servlet.ServletRequestContext
+
+
Retrieve the character encoding for the request.
+
+
getCharSet() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns the content charset passed by the agent or null if + not defined.
+
+
getContentLength() - Method in class org.apache.commons.fileupload.portlet.PortletRequestContext
+
+
Deprecated. + +
+
+
getContentLength() - Method in interface org.apache.commons.fileupload.RequestContext
+
+
Deprecated. + +
+
+
getContentLength() - Method in class org.apache.commons.fileupload.servlet.ServletRequestContext
+
+
Deprecated. + +
+
+
getContentType() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns the content type passed by the agent or null if + not defined.
+
+
getContentType() - Method in interface org.apache.commons.fileupload.FileItem
+
+
Returns the content type passed by the browser or null if + not defined.
+
+
getContentType() - Method in interface org.apache.commons.fileupload.FileItemStream
+
+
Returns the content type passed by the browser or null if + not defined.
+
+
getContentType() - Method in class org.apache.commons.fileupload.portlet.PortletRequestContext
+
+
Retrieve the content type of the request.
+
+
getContentType() - Method in interface org.apache.commons.fileupload.RequestContext
+
+
Retrieve the content type of the request.
+
+
getContentType() - Method in class org.apache.commons.fileupload.servlet.ServletRequestContext
+
+
Retrieve the content type of the request.
+
+
getFieldName() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns the name of the field in the multipart form corresponding to + this file item.
+
+
getFieldName() - Method in interface org.apache.commons.fileupload.FileItem
+
+
Returns the name of the field in the multipart form corresponding to + this file item.
+
+
getFieldName() - Method in interface org.apache.commons.fileupload.FileItemStream
+
+
Returns the name of the field in the multipart form corresponding to + this file item.
+
+
getFieldName() - Method in exception org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException
+
+
Returns the field name of the item, which caused the + exception.
+
+
getFieldName(FileItemHeaders) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Retrieves the field name from the Content-disposition + header.
+
+
getFieldName(Map<String, String>) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+ +
+
getFileCleaningTracker() - Method in class org.apache.commons.fileupload.disk.DiskFileItemFactory
+
+
Returns the tracker, which is responsible for deleting temporary + files.
+
+
getFileCleaningTracker(ServletContext) - Static method in class org.apache.commons.fileupload.servlet.FileCleanerCleanup
+
+
Returns the instance of FileCleaningTracker, which is + associated with the given ServletContext.
+
+
getFileItemFactory() - Method in class org.apache.commons.fileupload.DiskFileUpload
+
+
Deprecated. +
1.1 Use FileUpload instead.
+
+
+
getFileItemFactory() - Method in class org.apache.commons.fileupload.FileUpload
+
+
Returns the factory class used when creating file items.
+
+
getFileItemFactory() - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Returns the factory class used when creating file items.
+
+
getFileName() - Method in exception org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException
+
+
Returns the file name of the item, which caused the + exception.
+
+
getFileName(Map<String, String>) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+ +
+
getFileName(FileItemHeaders) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Retrieves the file name from the Content-disposition + header.
+
+
getFileSizeMax() - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Returns the maximum allowed size of a single uploaded file, + as opposed to FileUploadBase.getSizeMax().
+
+
getHeader(String) - Method in interface org.apache.commons.fileupload.FileItemHeaders
+
+
Returns the value of the specified part header as a String.
+
+
getHeader(Map<String, String>, String) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Deprecated. + +
+
+
getHeader(String) - Method in class org.apache.commons.fileupload.util.FileItemHeadersImpl
+
+
Returns the value of the specified part header as a String.
+
+
getHeaderEncoding() - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Retrieves the character encoding used when reading the headers of an + individual part.
+
+
getHeaderEncoding() - Method in class org.apache.commons.fileupload.MultipartStream
+
+
Retrieves the character encoding used when reading the headers of an + individual part.
+
+
getHeaderNames() - Method in interface org.apache.commons.fileupload.FileItemHeaders
+
+
+ Returns an Iterator of all the header names.
+
+
getHeaderNames() - Method in class org.apache.commons.fileupload.util.FileItemHeadersImpl
+
+
+ Returns an Iterator of all the header names.
+
+
getHeaders() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns the file item headers.
+
+
getHeaders(String) - Method in interface org.apache.commons.fileupload.FileItemHeaders
+
+
+ Returns all the values of the specified item header as an + Iterator of String objects.
+
+
getHeaders() - Method in interface org.apache.commons.fileupload.FileItemHeadersSupport
+
+
Returns the collection of headers defined locally within this item.
+
+
getHeaders(String) - Method in class org.apache.commons.fileupload.util.FileItemHeadersImpl
+
+
+ Returns all the values of the specified item header as an + Iterator of String objects.
+
+
getInputStream() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns an InputStream that can be + used to retrieve the contents of the file.
+
+
getInputStream() - Method in interface org.apache.commons.fileupload.FileItem
+
+
Returns an InputStream that can be + used to retrieve the contents of the file.
+
+
getInputStream() - Method in class org.apache.commons.fileupload.portlet.PortletRequestContext
+
+
Retrieve the input stream for the request.
+
+
getInputStream() - Method in interface org.apache.commons.fileupload.RequestContext
+
+
Retrieve the input stream for the request.
+
+
getInputStream() - Method in class org.apache.commons.fileupload.servlet.ServletRequestContext
+
+
Retrieve the input stream for the request.
+
+
getItemIterator(RequestContext) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Processes an RFC 1867 + compliant multipart/form-data stream.
+
+
getItemIterator(ActionRequest) - Method in class org.apache.commons.fileupload.portlet.PortletFileUpload
+
+
Processes an RFC 1867 + compliant multipart/form-data stream.
+
+
getItemIterator(HttpServletRequest) - Method in class org.apache.commons.fileupload.servlet.ServletFileUpload
+
+
Processes an RFC 1867 + compliant multipart/form-data stream.
+
+
getName() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns the original filename in the client's filesystem.
+
+
getName() - Method in interface org.apache.commons.fileupload.FileItem
+
+
Returns the original filename in the client's filesystem, as provided by + the browser (or other client software).
+
+
getName() - Method in interface org.apache.commons.fileupload.FileItemStream
+
+
Returns the original filename in the client's filesystem, as provided by + the browser (or other client software).
+
+
getName() - Method in exception org.apache.commons.fileupload.InvalidFileNameException
+
+
Returns the invalid file name.
+
+
getOutputStream() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns an OutputStream that can + be used for storing the contents of the file.
+
+
getOutputStream() - Method in interface org.apache.commons.fileupload.FileItem
+
+
Returns an OutputStream that can + be used for storing the contents of the file.
+
+
getParsedHeaders(String) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Parses the header-part and returns as key/value + pairs.
+
+
getPermittedSize() - Method in exception org.apache.commons.fileupload.FileUploadBase.SizeException
+
+
Retrieves the permitted size of the request.
+
+
getProgressListener() - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Returns the progress listener.
+
+
getRepository() - Method in class org.apache.commons.fileupload.disk.DiskFileItemFactory
+
+
Returns the directory used to temporarily store files that are larger + than the configured size threshold.
+
+
getRepositoryPath() - Method in class org.apache.commons.fileupload.DiskFileUpload
+
+
Deprecated. +
1.1 Use DiskFileItemFactory instead.
+
+
+
getSize() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns the size of the file.
+
+
getSize() - Method in interface org.apache.commons.fileupload.FileItem
+
+
Returns the size of the file item.
+
+
getSizeMax() - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Returns the maximum allowed size of a complete request, as opposed + to FileUploadBase.getFileSizeMax().
+
+
getSizeThreshold() - Method in class org.apache.commons.fileupload.disk.DiskFileItemFactory
+
+
Returns the size threshold beyond which files are written directly to + disk.
+
+
getSizeThreshold() - Method in class org.apache.commons.fileupload.DiskFileUpload
+
+
Deprecated. +
1.1 Use DiskFileItemFactory instead.
+
+
+
getStoreLocation() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns the File object for the FileItem's + data's temporary location on the disk.
+
+
getString(String) - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns the contents of the file as a String, using the specified + encoding.
+
+
getString() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns the contents of the file as a String, using the default + character encoding.
+
+
getString(String) - Method in interface org.apache.commons.fileupload.FileItem
+
+
Returns the contents of the file item as a String, using the specified + encoding.
+
+
getString() - Method in interface org.apache.commons.fileupload.FileItem
+
+
Returns the contents of the file item as a String, using the default + character encoding.
+
+
getTempFile() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Creates and returns a File representing a uniquely + named temporary file in the configured repository path.
+
+
+ + + +

H

+
+
hasNext() - Method in interface org.apache.commons.fileupload.FileItemIterator
+
+
Returns, whether another instance of FileItemStream + is available.
+
+
HEADER_PART_SIZE_MAX - Static variable in class org.apache.commons.fileupload.MultipartStream
+
+
The maximum length of header-part that will be + processed (10 kilobytes = 10240 bytes.).
+
+
HEADER_SEPARATOR - Static variable in class org.apache.commons.fileupload.MultipartStream
+
+
A byte sequence that marks the end of header-part + (CRLFCRLF).
+
+
+ + + +

I

+
+
IllegalBoundaryException() - Constructor for exception org.apache.commons.fileupload.MultipartStream.IllegalBoundaryException
+
+
Constructs an IllegalBoundaryException with no + detail message.
+
+
IllegalBoundaryException(String) - Constructor for exception org.apache.commons.fileupload.MultipartStream.IllegalBoundaryException
+
+
Constructs an IllegalBoundaryException with + the specified detail message.
+
+
InvalidContentTypeException() - Constructor for exception org.apache.commons.fileupload.FileUploadBase.InvalidContentTypeException
+
+
Constructs a InvalidContentTypeException with no + detail message.
+
+
InvalidContentTypeException(String) - Constructor for exception org.apache.commons.fileupload.FileUploadBase.InvalidContentTypeException
+
+
Constructs an InvalidContentTypeException with + the specified detail message.
+
+
InvalidContentTypeException(String, Throwable) - Constructor for exception org.apache.commons.fileupload.FileUploadBase.InvalidContentTypeException
+
+
Constructs an InvalidContentTypeException with + the specified detail message and cause.
+
+
InvalidFileNameException - Exception in org.apache.commons.fileupload
+
+
This exception is thrown in case of an invalid file name.
+
+
InvalidFileNameException(String, String) - Constructor for exception org.apache.commons.fileupload.InvalidFileNameException
+
+
Creates a new instance.
+
+
IOFileUploadException(String, IOException) - Constructor for exception org.apache.commons.fileupload.FileUploadBase.IOFileUploadException
+
+
Creates a new instance with the given cause.
+
+
isClosed() - Method in class org.apache.commons.fileupload.MultipartStream.ItemInputStream
+
+
Returns, whether the stream is closed.
+
+
isClosed() - Method in interface org.apache.commons.fileupload.util.Closeable
+
+
Returns, whether the object is already closed.
+
+
isClosed() - Method in class org.apache.commons.fileupload.util.LimitedInputStream
+
+
Returns, whether this stream is already closed.
+
+
isFormField() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Determines whether or not a FileItem instance represents + a simple form field.
+
+
isFormField() - Method in interface org.apache.commons.fileupload.FileItem
+
+
Determines whether or not a FileItem instance represents + a simple form field.
+
+
isFormField() - Method in interface org.apache.commons.fileupload.FileItemStream
+
+
Determines whether or not a FileItem instance represents + a simple form field.
+
+
isInMemory() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Provides a hint as to whether or not the file contents will be read + from memory.
+
+
isInMemory() - Method in interface org.apache.commons.fileupload.FileItem
+
+
Provides a hint as to whether or not the file contents will be read + from memory.
+
+
isLowerCaseNames() - Method in class org.apache.commons.fileupload.ParameterParser
+
+
Returns true if parameter names are to be converted to lower + case when name/value pairs are parsed.
+
+
isMultipartContent(RequestContext) - Static method in class org.apache.commons.fileupload.FileUploadBase
+
+
Utility method that determines whether the request contains multipart + content.
+
+
isMultipartContent(HttpServletRequest) - Static method in class org.apache.commons.fileupload.FileUploadBase
+
+
Deprecated. +
1.1 Use the method on ServletFileUpload instead.
+
+
+
isMultipartContent(ActionRequest) - Static method in class org.apache.commons.fileupload.portlet.PortletFileUpload
+
+
Utility method that determines whether the request contains multipart + content.
+
+
isMultipartContent(HttpServletRequest) - Static method in class org.apache.commons.fileupload.servlet.ServletFileUpload
+
+
Utility method that determines whether the request contains multipart + content.
+
+
ItemSkippedException() - Constructor for exception org.apache.commons.fileupload.FileItemStream.ItemSkippedException
+
 
+
+ + + +

L

+
+
LF - Static variable in class org.apache.commons.fileupload.MultipartStream
+
+
The Line Feed ASCII character value.
+
+
LimitedInputStream - Class in org.apache.commons.fileupload.util
+
+
An input stream, which limits its data size.
+
+
LimitedInputStream(InputStream, long) - Constructor for class org.apache.commons.fileupload.util.LimitedInputStream
+
+
Creates a new instance.
+
+
+ + + +

M

+
+
MalformedStreamException() - Constructor for exception org.apache.commons.fileupload.MultipartStream.MalformedStreamException
+
+
Constructs a MalformedStreamException with no + detail message.
+
+
MalformedStreamException(String) - Constructor for exception org.apache.commons.fileupload.MultipartStream.MalformedStreamException
+
+
Constructs an MalformedStreamException with + the specified detail message.
+
+
MAX_HEADER_SIZE - Static variable in class org.apache.commons.fileupload.FileUploadBase
+
+
Deprecated. +
This constant is no longer used. As of commons-fileupload + 1.2, the only applicable limit is the total size of a parts headers, + MultipartStream.HEADER_PART_SIZE_MAX.
+
+
+
MimeUtility - Class in org.apache.commons.fileupload.util.mime
+
+
Utility class to decode MIME texts.
+
+
MULTIPART - Static variable in class org.apache.commons.fileupload.FileUploadBase
+
+
Part of HTTP content type header.
+
+
MULTIPART_FORM_DATA - Static variable in class org.apache.commons.fileupload.FileUploadBase
+
+
HTTP content type header for multipart forms.
+
+
MULTIPART_MIXED - Static variable in class org.apache.commons.fileupload.FileUploadBase
+
+
HTTP content type header for multiple uploads.
+
+
MultipartStream - Class in org.apache.commons.fileupload
+
+
Low level API for processing file uploads.
+
+
MultipartStream() - Constructor for class org.apache.commons.fileupload.MultipartStream
+
+ +
+
MultipartStream(InputStream, byte[], int) - Constructor for class org.apache.commons.fileupload.MultipartStream
+
+ +
+
MultipartStream(InputStream, byte[], int, MultipartStream.ProgressNotifier) - Constructor for class org.apache.commons.fileupload.MultipartStream
+
+
Constructs a MultipartStream with a custom size buffer.
+
+
MultipartStream(InputStream, byte[]) - Constructor for class org.apache.commons.fileupload.MultipartStream
+
+ +
+
MultipartStream.IllegalBoundaryException - Exception in org.apache.commons.fileupload
+
+
Thrown upon attempt of setting an invalid boundary token.
+
+
MultipartStream.ItemInputStream - Class in org.apache.commons.fileupload
+
+
An InputStream for reading an items contents.
+
+
MultipartStream.MalformedStreamException - Exception in org.apache.commons.fileupload
+
+
Thrown to indicate that the input stream fails to follow the + required syntax.
+
+
MultipartStream.ProgressNotifier - Class in org.apache.commons.fileupload
+
+
Internal class, which is used to invoke the + ProgressListener.
+
+
+ + + +

N

+
+
newFileItemHeaders() - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Creates a new instance of FileItemHeaders.
+
+
next() - Method in interface org.apache.commons.fileupload.FileItemIterator
+
+
Returns the next available FileItemStream.
+
+
+ + + +

O

+
+
openStream() - Method in interface org.apache.commons.fileupload.FileItemStream
+
+
Creates an InputStream, which allows to read the + items contents.
+
+
org.apache.commons.fileupload - package org.apache.commons.fileupload
+
+
+ A component for handling HTML file uploads as specified by + RFC 1867.
+
+
org.apache.commons.fileupload.disk - package org.apache.commons.fileupload.disk
+
+
+ A disk-based implementation of the + FileItem + interface.
+
+
org.apache.commons.fileupload.portlet - package org.apache.commons.fileupload.portlet
+
+
+ An implementation of + FileUpload + for use in portlets conforming to JSR 168.
+
+
org.apache.commons.fileupload.servlet - package org.apache.commons.fileupload.servlet
+
+
+ An implementation of + FileUpload + for use in servlets conforming to JSR 53.
+
+
org.apache.commons.fileupload.util - package org.apache.commons.fileupload.util
+
+
This package contains various IO related utility classes + or methods, which are basically reusable and not necessarily + restricted to the scope of a file upload.
+
+
org.apache.commons.fileupload.util.mime - package org.apache.commons.fileupload.util.mime
+
+
MIME decoder implementation, imported and retailed from + Apache Geronimo.
+
+
+ + + +

P

+
+
ParameterParser - Class in org.apache.commons.fileupload
+
+
A simple parser intended to parse sequences of name/value pairs.
+
+
ParameterParser() - Constructor for class org.apache.commons.fileupload.ParameterParser
+
+
Default ParameterParser constructor.
+
+
parse(String, char[]) - Method in class org.apache.commons.fileupload.ParameterParser
+
+
Extracts a map of name/value pairs from the given string.
+
+
parse(String, char) - Method in class org.apache.commons.fileupload.ParameterParser
+
+
Extracts a map of name/value pairs from the given string.
+
+
parse(char[], char) - Method in class org.apache.commons.fileupload.ParameterParser
+
+
Extracts a map of name/value pairs from the given array of + characters.
+
+
parse(char[], int, int, char) - Method in class org.apache.commons.fileupload.ParameterParser
+
+
Extracts a map of name/value pairs from the given array of + characters.
+
+
parseHeaders(String) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+ +
+
parseParameterMap(RequestContext) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Processes an RFC 1867 + compliant multipart/form-data stream.
+
+
parseParameterMap(ActionRequest) - Method in class org.apache.commons.fileupload.portlet.PortletFileUpload
+
+
Processes an RFC 1867 + compliant multipart/form-data stream.
+
+
parseParameterMap(HttpServletRequest) - Method in class org.apache.commons.fileupload.servlet.ServletFileUpload
+
+
Processes an RFC 1867 + compliant multipart/form-data stream.
+
+
parseRequest(HttpServletRequest, int, long, String) - Method in class org.apache.commons.fileupload.DiskFileUpload
+
+
Deprecated. +
1.1 Use ServletFileUpload instead.
+
+
+
parseRequest(HttpServletRequest) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+ +
+
parseRequest(RequestContext) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Processes an RFC 1867 + compliant multipart/form-data stream.
+
+
parseRequest(ActionRequest) - Method in class org.apache.commons.fileupload.portlet.PortletFileUpload
+
+
Processes an RFC 1867 + compliant multipart/form-data stream.
+
+
parseRequest(HttpServletRequest) - Method in class org.apache.commons.fileupload.servlet.ServletFileUpload
+
+
Processes an RFC 1867 + compliant multipart/form-data stream.
+
+
PortletFileUpload - Class in org.apache.commons.fileupload.portlet
+
+
High level API for processing file uploads.
+
+
PortletFileUpload() - Constructor for class org.apache.commons.fileupload.portlet.PortletFileUpload
+
+
Constructs an uninitialised instance of this class.
+
+
PortletFileUpload(FileItemFactory) - Constructor for class org.apache.commons.fileupload.portlet.PortletFileUpload
+
+
Constructs an instance of this class which uses the supplied factory to + create FileItem instances.
+
+
PortletRequestContext - Class in org.apache.commons.fileupload.portlet
+
+
Provides access to the request information needed for a request made to + a portlet.
+
+
PortletRequestContext(ActionRequest) - Constructor for class org.apache.commons.fileupload.portlet.PortletRequestContext
+
+
Construct a context for this request.
+
+
printStackTrace(PrintStream) - Method in exception org.apache.commons.fileupload.FileUploadException
+
+
Prints this throwable and its backtrace to the specified print stream.
+
+
printStackTrace(PrintWriter) - Method in exception org.apache.commons.fileupload.FileUploadException
+
+
Prints this throwable and its backtrace to the specified + print writer.
+
+
ProgressListener - Interface in org.apache.commons.fileupload
+
+
The ProgressListener may be used to display a progress bar + or do stuff like that.
+
+
+ + + +

R

+
+
raiseError(long, long) - Method in class org.apache.commons.fileupload.util.LimitedInputStream
+
+
Called to indicate, that the input streams limit has + been exceeded.
+
+
read() - Method in class org.apache.commons.fileupload.MultipartStream.ItemInputStream
+
+
Returns the next byte in the stream.
+
+
read(byte[], int, int) - Method in class org.apache.commons.fileupload.MultipartStream.ItemInputStream
+
+
Reads bytes into the given buffer.
+
+
read() - Method in class org.apache.commons.fileupload.util.LimitedInputStream
+
+
Reads the next byte of data from this input stream.
+
+
read(byte[], int, int) - Method in class org.apache.commons.fileupload.util.LimitedInputStream
+
+
Reads up to len bytes of data from this input stream + into an array of bytes.
+
+
readBodyData(OutputStream) - Method in class org.apache.commons.fileupload.MultipartStream
+
+
Reads body-data from the current + encapsulation and writes its contents into the + output Stream.
+
+
readBoundary() - Method in class org.apache.commons.fileupload.MultipartStream
+
+
Skips a boundary token, and checks whether more + encapsulations are contained in the stream.
+
+
readByte() - Method in class org.apache.commons.fileupload.MultipartStream
+
+
Reads a byte from the buffer, and refills it as + necessary.
+
+
readHeaders() - Method in class org.apache.commons.fileupload.MultipartStream
+
+
Reads the header-part of the current + encapsulation.
+
+
RequestContext - Interface in org.apache.commons.fileupload
+
+
Abstracts access to the request information needed for file uploads.
+
+
+ + + +

S

+
+
ServletFileUpload - Class in org.apache.commons.fileupload.servlet
+
+
High level API for processing file uploads.
+
+
ServletFileUpload() - Constructor for class org.apache.commons.fileupload.servlet.ServletFileUpload
+
+
Constructs an uninitialised instance of this class.
+
+
ServletFileUpload(FileItemFactory) - Constructor for class org.apache.commons.fileupload.servlet.ServletFileUpload
+
+
Constructs an instance of this class which uses the supplied factory to + create FileItem instances.
+
+
ServletRequestContext - Class in org.apache.commons.fileupload.servlet
+
+
Provides access to the request information needed for a request made to + an HTTP servlet.
+
+
ServletRequestContext(HttpServletRequest) - Constructor for class org.apache.commons.fileupload.servlet.ServletRequestContext
+
+
Construct a context for this request.
+
+
setBoundary(byte[]) - Method in class org.apache.commons.fileupload.MultipartStream
+
+
Changes the boundary token used for partitioning the stream.
+
+
setFieldName(String) - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Sets the field name used to reference this file item.
+
+
setFieldName(String) - Method in interface org.apache.commons.fileupload.FileItem
+
+
Sets the field name used to reference this file item.
+
+
setFieldName(String) - Method in exception org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException
+
+
Sets the field name of the item, which caused the + exception.
+
+
setFileCleaningTracker(FileCleaningTracker) - Method in class org.apache.commons.fileupload.disk.DiskFileItemFactory
+
+
Sets the tracker, which is responsible for deleting temporary + files.
+
+
setFileCleaningTracker(ServletContext, FileCleaningTracker) - Static method in class org.apache.commons.fileupload.servlet.FileCleanerCleanup
+
+
Sets the instance of FileCleaningTracker, which is + associated with the given ServletContext.
+
+
setFileItemFactory(FileItemFactory) - Method in class org.apache.commons.fileupload.DiskFileUpload
+
+
Deprecated. +
1.1 Use FileUpload instead.
+
+
+
setFileItemFactory(FileItemFactory) - Method in class org.apache.commons.fileupload.FileUpload
+
+
Sets the factory class to use when creating file items.
+
+
setFileItemFactory(FileItemFactory) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Sets the factory class to use when creating file items.
+
+
setFileName(String) - Method in exception org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException
+
+
Sets the file name of the item, which caused the + exception.
+
+
setFileSizeMax(long) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Sets the maximum allowed size of a single uploaded file, + as opposed to FileUploadBase.getSizeMax().
+
+
setFormField(boolean) - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Specifies whether or not a FileItem instance represents + a simple form field.
+
+
setFormField(boolean) - Method in interface org.apache.commons.fileupload.FileItem
+
+
Specifies whether or not a FileItem instance represents + a simple form field.
+
+
setHeaderEncoding(String) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Specifies the character encoding to be used when reading the headers of + individual part.
+
+
setHeaderEncoding(String) - Method in class org.apache.commons.fileupload.MultipartStream
+
+
Specifies the character encoding to be used when reading the headers of + individual parts.
+
+
setHeaders(FileItemHeaders) - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Sets the file item headers.
+
+
setHeaders(FileItemHeaders) - Method in interface org.apache.commons.fileupload.FileItemHeadersSupport
+
+
Sets the headers read from within an item.
+
+
setLowerCaseNames(boolean) - Method in class org.apache.commons.fileupload.ParameterParser
+
+
Sets the flag if parameter names are to be converted to lower case when + name/value pairs are parsed.
+
+
setProgressListener(ProgressListener) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Sets the progress listener.
+
+
setRepository(File) - Method in class org.apache.commons.fileupload.disk.DiskFileItemFactory
+
+
Sets the directory used to temporarily store files that are larger + than the configured size threshold.
+
+
setRepositoryPath(String) - Method in class org.apache.commons.fileupload.DiskFileUpload
+
+
Deprecated. +
1.1 Use DiskFileItemFactory instead.
+
+
+
setSizeMax(long) - Method in class org.apache.commons.fileupload.FileUploadBase
+
+
Sets the maximum allowed size of a complete request, as opposed + to FileUploadBase.setFileSizeMax(long).
+
+
setSizeThreshold(int) - Method in class org.apache.commons.fileupload.disk.DiskFileItemFactory
+
+
Sets the size threshold beyond which files are written directly to disk.
+
+
setSizeThreshold(int) - Method in class org.apache.commons.fileupload.DiskFileUpload
+
+
Deprecated. +
1.1 Use DiskFileItemFactory instead.
+
+
+
SizeException(String, long, long) - Constructor for exception org.apache.commons.fileupload.FileUploadBase.SizeException
+
+
Creates a new instance.
+
+
SizeLimitExceededException() - Constructor for exception org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException
+
+
Deprecated. +
1.2 Replaced by + SizeLimitExceededException(String, long, long)
+
+
+
SizeLimitExceededException(String) - Constructor for exception org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException
+
+
Deprecated. +
1.2 Replaced by + #SizeLimitExceededException(String, long, long)
+
+
+
SizeLimitExceededException(String, long, long) - Constructor for exception org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException
+
+
Constructs a SizeExceededException with + the specified detail message, and actual and permitted sizes.
+
+
skip(long) - Method in class org.apache.commons.fileupload.MultipartStream.ItemInputStream
+
+
Skips the given number of bytes.
+
+
skipPreamble() - Method in class org.apache.commons.fileupload.MultipartStream
+
+
Finds the beginning of the first encapsulation.
+
+
STREAM_TERMINATOR - Static variable in class org.apache.commons.fileupload.MultipartStream
+
+
A byte sequence that that follows a delimiter of the last + encapsulation in the stream (--).
+
+
Streams - Class in org.apache.commons.fileupload.util
+
+
Utility class for working with streams.
+
+
+ + + +

T

+
+
toString() - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
Returns a string representation of this object.
+
+
toString() - Method in class org.apache.commons.fileupload.portlet.PortletRequestContext
+
+
Returns a string representation of this object.
+
+
toString() - Method in class org.apache.commons.fileupload.servlet.ServletRequestContext
+
+
Returns a string representation of this object.
+
+
+ + + +

U

+
+
UnknownSizeException() - Constructor for exception org.apache.commons.fileupload.FileUploadBase.UnknownSizeException
+
+
Deprecated.
+
Constructs a UnknownSizeException with no + detail message.
+
+
UnknownSizeException(String) - Constructor for exception org.apache.commons.fileupload.FileUploadBase.UnknownSizeException
+
+
Deprecated.
+
Constructs an UnknownSizeException with + the specified detail message.
+
+
update(long, long, int) - Method in interface org.apache.commons.fileupload.ProgressListener
+
+
Updates the listeners status information.
+
+
UploadContext - Interface in org.apache.commons.fileupload
+
+
Enhanced access to the request information needed for file uploads, + which fixes the Content Length data access in RequestContext.
+
+
+ + + +

W

+
+
write(File) - Method in class org.apache.commons.fileupload.disk.DiskFileItem
+
+
A convenience method to write an uploaded item to disk.
+
+
write(File) - Method in interface org.apache.commons.fileupload.FileItem
+
+
A convenience method to write an uploaded item to disk.
+
+
+A B C D F G H I L M N O P R S T U W 
+ +
+ + + + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/index.html b/docs/licenses/Apache FileUploader/site/apidocs/index.html new file mode 100644 index 0000000..ba3bcf8 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/index.html @@ -0,0 +1,75 @@ + + + + + + +Apache Commons FileUpload 1.3.2 API + + + + + + + + + +<noscript> +<div>JavaScript is disabled on your browser.</div> +</noscript> +<h2>Frame Alert</h2> +<p>This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client. Link to <a href="overview-summary.html">Non-frame version</a>.</p> + + + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/DefaultFileItem.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/DefaultFileItem.html new file mode 100644 index 0000000..0d6f818 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/DefaultFileItem.html @@ -0,0 +1,321 @@ + + + + + + +DefaultFileItem (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class DefaultFileItem

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DefaultFileItem

        +
        @Deprecated
        +public DefaultFileItem(String fieldName,
        +                                   String contentType,
        +                                   boolean isFormField,
        +                                   String fileName,
        +                                   int sizeThreshold,
        +                                   File repository)
        +
        Deprecated. 1.1 Use DiskFileItem instead.
        +
        Constructs a new DefaultFileItem instance.
        +
        +
        Parameters:
        +
        fieldName - The name of the form field.
        +
        contentType - The content type passed by the browser or + null if not specified.
        +
        isFormField - Whether or not this item is a plain form field, as + opposed to a file upload.
        +
        fileName - The original filename in the user's filesystem, or + null if not specified.
        +
        sizeThreshold - The threshold, in bytes, below which items will be + retained in memory and above which they will be + stored as a file.
        +
        repository - The data repository, which is the directory in + which files will be created, should the item size + exceed the threshold.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/DefaultFileItemFactory.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/DefaultFileItemFactory.html new file mode 100644 index 0000000..b6c7877 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/DefaultFileItemFactory.html @@ -0,0 +1,394 @@ + + + + + + +DefaultFileItemFactory (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class DefaultFileItemFactory

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FileItemFactory
    +
    +
    +
    Deprecated.  +
    1.1 Use DiskFileItemFactory instead.
    +
    +
    +
    @Deprecated
    +public class DefaultFileItemFactory
    +extends DiskFileItemFactory
    +

    The default FileItemFactory + implementation. This implementation creates + FileItem instances which keep their + content either in memory, for smaller items, or in a temporary file on disk, + for larger items. The size threshold, above which content will be stored on + disk, is configurable, as is the directory in which temporary files will be + created.

    + + If not otherwise configured, the default configuration values are as + follows: +
      +
    • Size threshold is 10KB.
    • +
    • Repository is the system default temp directory, as returned by + System.getProperty("java.io.tmpdir").
    • +
    +
    +
    Version:
    +
    $Id: DefaultFileItemFactory.java 1743630 2016-05-13 09:20:45Z jochen $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DefaultFileItemFactory

        +
        @Deprecated
        +public DefaultFileItemFactory()
        +
        Deprecated. 1.1 Use DiskFileItemFactory instead.
        +
        Constructs an unconfigured instance of this class. The resulting factory + may be configured by calling the appropriate setter methods.
        +
      • +
      + + + +
        +
      • +

        DefaultFileItemFactory

        +
        @Deprecated
        +public DefaultFileItemFactory(int sizeThreshold,
        +                                          File repository)
        +
        Deprecated. 1.1 Use DiskFileItemFactory instead.
        +
        Constructs a preconfigured instance of this class.
        +
        +
        Parameters:
        +
        sizeThreshold - The threshold, in bytes, below which items will be + retained in memory and above which they will be + stored as a file.
        +
        repository - The data repository, which is the directory in + which files will be created, should the item size + exceed the threshold.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        createItem

        +
        @Deprecated
        +public FileItem createItem(String fieldName,
        +                                       String contentType,
        +                                       boolean isFormField,
        +                                       String fileName)
        +
        Deprecated. 1.1 Use DiskFileItemFactory instead.
        +
        Create a new DefaultFileItem + instance from the supplied parameters and the local factory + configuration.
        +
        +
        Specified by:
        +
        createItem in interface FileItemFactory
        +
        Overrides:
        +
        createItem in class DiskFileItemFactory
        +
        Parameters:
        +
        fieldName - The name of the form field.
        +
        contentType - The content type of the form field.
        +
        isFormField - true if this is a plain form field; + false otherwise.
        +
        fileName - The name of the uploaded file, if any, as supplied + by the browser or other client.
        +
        Returns:
        +
        The newly created file item.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/DiskFileUpload.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/DiskFileUpload.html new file mode 100644 index 0000000..0aa15c5 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/DiskFileUpload.html @@ -0,0 +1,560 @@ + + + + + + +DiskFileUpload (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class DiskFileUpload

+
+
+ +
+
    +
  • +
    +
    Deprecated.  +
    1.1 Use ServletFileUpload together with + DiskFileItemFactory instead.
    +
    +
    +
    @Deprecated
    +public class DiskFileUpload
    +extends FileUploadBase
    +

    High level API for processing file uploads.

    + +

    This class handles multiple files per single HTML widget, sent using + multipart/mixed encoding type, as specified by + RFC 1867. Use FileUploadBase.parseRequest(HttpServletRequest) to acquire a list of FileItems associated with a given HTML + widget.

    + +

    Individual parts will be stored in temporary disk storage or in memory, + depending on their size, and will be available as FileItems.

    +
    +
    Version:
    +
    $Id: DiskFileUpload.java 1454690 2013-03-09 12:08:48Z simonetripodi $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + + + + + +
        +
      • +

        DiskFileUpload

        +
        @Deprecated
        +public DiskFileUpload(DefaultFileItemFactory fileItemFactory)
        +
        Deprecated. 1.1 Use FileUpload instead.
        +
        Constructs an instance of this class which uses the supplied factory to + create FileItem instances.
        +
        +
        Parameters:
        +
        fileItemFactory - The file item factory to use.
        +
        See Also:
        +
        DiskFileUpload()
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getFileItemFactory

        +
        @Deprecated
        +public FileItemFactory getFileItemFactory()
        +
        Deprecated. 1.1 Use FileUpload instead.
        +
        Returns the factory class used when creating file items.
        +
        +
        Specified by:
        +
        getFileItemFactory in class FileUploadBase
        +
        Returns:
        +
        The factory class for new file items.
        +
        +
      • +
      + + + +
        +
      • +

        setFileItemFactory

        +
        @Deprecated
        +public void setFileItemFactory(FileItemFactory factory)
        +
        Deprecated. 1.1 Use FileUpload instead.
        +
        Sets the factory class to use when creating file items. The factory must + be an instance of DefaultFileItemFactory or a subclass + thereof, or else a ClassCastException will be thrown.
        +
        +
        Specified by:
        +
        setFileItemFactory in class FileUploadBase
        +
        Parameters:
        +
        factory - The factory class for new file items.
        +
        +
      • +
      + + + +
        +
      • +

        getSizeThreshold

        +
        @Deprecated
        +public int getSizeThreshold()
        +
        Deprecated. 1.1 Use DiskFileItemFactory instead.
        +
        Returns the size threshold beyond which files are written directly to + disk.
        +
        +
        Returns:
        +
        The size threshold, in bytes.
        +
        See Also:
        +
        setSizeThreshold(int)
        +
        +
      • +
      + + + +
        +
      • +

        setSizeThreshold

        +
        @Deprecated
        +public void setSizeThreshold(int sizeThreshold)
        +
        Deprecated. 1.1 Use DiskFileItemFactory instead.
        +
        Sets the size threshold beyond which files are written directly to disk.
        +
        +
        Parameters:
        +
        sizeThreshold - The size threshold, in bytes.
        +
        See Also:
        +
        getSizeThreshold()
        +
        +
      • +
      + + + +
        +
      • +

        getRepositoryPath

        +
        @Deprecated
        +public String getRepositoryPath()
        +
        Deprecated. 1.1 Use DiskFileItemFactory instead.
        +
        Returns the location used to temporarily store files that are larger + than the configured size threshold.
        +
        +
        Returns:
        +
        The path to the temporary file location.
        +
        See Also:
        +
        setRepositoryPath(String)
        +
        +
      • +
      + + + +
        +
      • +

        setRepositoryPath

        +
        @Deprecated
        +public void setRepositoryPath(String repositoryPath)
        +
        Deprecated. 1.1 Use DiskFileItemFactory instead.
        +
        Sets the location used to temporarily store files that are larger + than the configured size threshold.
        +
        +
        Parameters:
        +
        repositoryPath - The path to the temporary file location.
        +
        See Also:
        +
        getRepositoryPath()
        +
        +
      • +
      + + + +
        +
      • +

        parseRequest

        +
        @Deprecated
        +public List<FileItem> parseRequest(HttpServletRequest req,
        +                                               int sizeThreshold,
        +                                               long sizeMax,
        +                                               String path)
        +                                        throws FileUploadException
        +
        Deprecated. 1.1 Use ServletFileUpload instead.
        +
        Processes an RFC 1867 + compliant multipart/form-data stream. If files are stored + on disk, the path is given by getRepository().
        +
        +
        Parameters:
        +
        req - The servlet request to be parsed. Must be non-null.
        +
        sizeThreshold - The max size in bytes to be stored in memory.
        +
        sizeMax - The maximum allowed upload size, in bytes.
        +
        path - The location where the files should be stored.
        +
        Returns:
        +
        A list of FileItem instances parsed from the + request, in the order that they were transmitted.
        +
        Throws:
        +
        FileUploadException - if there are problems reading/parsing + the request or storing files.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItem.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItem.html new file mode 100644 index 0000000..6c98f4d --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItem.html @@ -0,0 +1,607 @@ + + + + + + +FileItem (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Interface FileItem

+
+
+
+
    +
  • +
    +
    All Superinterfaces:
    +
    FileItemHeadersSupport, Serializable
    +
    +
    +
    All Known Implementing Classes:
    +
    DefaultFileItem, DiskFileItem
    +
    +
    +
    +
    public interface FileItem
    +extends Serializable, FileItemHeadersSupport
    +

    This class represents a file or form item that was received within a + multipart/form-data POST request. + +

    After retrieving an instance of this class from a FileUpload instance (see + #parseRequest(javax.servlet.http.HttpServletRequest)), you may + either request all contents of the file at once using get() or + request an InputStream with + getInputStream() and process the file without attempting to load + it into memory, which may come handy with large files. + +

    While this interface does not extend + javax.activation.DataSource per se (to avoid a seldom used + dependency), several of the defined methods are specifically defined with + the same signatures as methods in that interface. This allows an + implementation of this interface to also implement + javax.activation.DataSource with minimal additional work.

    +
    +
    Since:
    +
    1.3 additionally implements FileItemHeadersSupport
    +
    Version:
    +
    $Id: FileItem.java 1454690 2013-03-09 12:08:48Z simonetripodi $
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Abstract Methods 
      Modifier and TypeMethod and Description
      voiddelete() +
      Deletes the underlying storage for a file item, including deleting any + associated temporary disk file.
      +
      byte[]get() +
      Returns the contents of the file item as an array of bytes.
      +
      StringgetContentType() +
      Returns the content type passed by the browser or null if + not defined.
      +
      StringgetFieldName() +
      Returns the name of the field in the multipart form corresponding to + this file item.
      +
      InputStreamgetInputStream() +
      Returns an InputStream that can be + used to retrieve the contents of the file.
      +
      StringgetName() +
      Returns the original filename in the client's filesystem, as provided by + the browser (or other client software).
      +
      OutputStreamgetOutputStream() +
      Returns an OutputStream that can + be used for storing the contents of the file.
      +
      longgetSize() +
      Returns the size of the file item.
      +
      StringgetString() +
      Returns the contents of the file item as a String, using the default + character encoding.
      +
      StringgetString(String encoding) +
      Returns the contents of the file item as a String, using the specified + encoding.
      +
      booleanisFormField() +
      Determines whether or not a FileItem instance represents + a simple form field.
      +
      booleanisInMemory() +
      Provides a hint as to whether or not the file contents will be read + from memory.
      +
      voidsetFieldName(String name) +
      Sets the field name used to reference this file item.
      +
      voidsetFormField(boolean state) +
      Specifies whether or not a FileItem instance represents + a simple form field.
      +
      voidwrite(File file) +
      A convenience method to write an uploaded item to disk.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getInputStream

        +
        InputStream getInputStream()
        +                    throws IOException
        +
        Returns an InputStream that can be + used to retrieve the contents of the file.
        +
        +
        Returns:
        +
        An InputStream that can be + used to retrieve the contents of the file.
        +
        Throws:
        +
        IOException - if an error occurs.
        +
        +
      • +
      + + + +
        +
      • +

        getContentType

        +
        String getContentType()
        +
        Returns the content type passed by the browser or null if + not defined.
        +
        +
        Returns:
        +
        The content type passed by the browser or null if + not defined.
        +
        +
      • +
      + + + +
        +
      • +

        getName

        +
        String getName()
        +
        Returns the original filename in the client's filesystem, as provided by + the browser (or other client software). In most cases, this will be the + base file name, without path information. However, some clients, such as + the Opera browser, do include path information.
        +
        +
        Returns:
        +
        The original filename in the client's filesystem.
        +
        Throws:
        +
        InvalidFileNameException - The file name contains a NUL character, + which might be an indicator of a security attack. If you intend to + use the file name anyways, catch the exception and use + InvalidFileNameException#getName().
        +
        +
      • +
      + + + +
        +
      • +

        isInMemory

        +
        boolean isInMemory()
        +
        Provides a hint as to whether or not the file contents will be read + from memory.
        +
        +
        Returns:
        +
        true if the file contents will be read from memory; + false otherwise.
        +
        +
      • +
      + + + +
        +
      • +

        getSize

        +
        long getSize()
        +
        Returns the size of the file item.
        +
        +
        Returns:
        +
        The size of the file item, in bytes.
        +
        +
      • +
      + + + +
        +
      • +

        get

        +
        byte[] get()
        +
        Returns the contents of the file item as an array of bytes.
        +
        +
        Returns:
        +
        The contents of the file item as an array of bytes.
        +
        +
      • +
      + + + +
        +
      • +

        getString

        +
        String getString(String encoding)
        +          throws UnsupportedEncodingException
        +
        Returns the contents of the file item as a String, using the specified + encoding. This method uses get() to retrieve the + contents of the item.
        +
        +
        Parameters:
        +
        encoding - The character encoding to use.
        +
        Returns:
        +
        The contents of the item, as a string.
        +
        Throws:
        +
        UnsupportedEncodingException - if the requested character + encoding is not available.
        +
        +
      • +
      + + + +
        +
      • +

        getString

        +
        String getString()
        +
        Returns the contents of the file item as a String, using the default + character encoding. This method uses get() to retrieve the + contents of the item.
        +
        +
        Returns:
        +
        The contents of the item, as a string.
        +
        +
      • +
      + + + +
        +
      • +

        write

        +
        void write(File file)
        +    throws Exception
        +
        A convenience method to write an uploaded item to disk. The client code + is not concerned with whether or not the item is stored in memory, or on + disk in a temporary location. They just want to write the uploaded item + to a file. +

        + This method is not guaranteed to succeed if called more than once for + the same item. This allows a particular implementation to use, for + example, file renaming, where possible, rather than copying all of the + underlying data, thus gaining a significant performance benefit.

        +
        +
        Parameters:
        +
        file - The File into which the uploaded item should + be stored.
        +
        Throws:
        +
        Exception - if an error occurs.
        +
        +
      • +
      + + + +
        +
      • +

        delete

        +
        void delete()
        +
        Deletes the underlying storage for a file item, including deleting any + associated temporary disk file. Although this storage will be deleted + automatically when the FileItem instance is garbage + collected, this method can be used to ensure that this is done at an + earlier time, thus preserving system resources.
        +
      • +
      + + + +
        +
      • +

        getFieldName

        +
        String getFieldName()
        +
        Returns the name of the field in the multipart form corresponding to + this file item.
        +
        +
        Returns:
        +
        The name of the form field.
        +
        +
      • +
      + + + +
        +
      • +

        setFieldName

        +
        void setFieldName(String name)
        +
        Sets the field name used to reference this file item.
        +
        +
        Parameters:
        +
        name - The name of the form field.
        +
        +
      • +
      + + + +
        +
      • +

        isFormField

        +
        boolean isFormField()
        +
        Determines whether or not a FileItem instance represents + a simple form field.
        +
        +
        Returns:
        +
        true if the instance represents a simple form + field; false if it represents an uploaded file.
        +
        +
      • +
      + + + +
        +
      • +

        setFormField

        +
        void setFormField(boolean state)
        +
        Specifies whether or not a FileItem instance represents + a simple form field.
        +
        +
        Parameters:
        +
        state - true if the instance represents a simple form + field; false if it represents an uploaded file.
        +
        +
      • +
      + + + +
        +
      • +

        getOutputStream

        +
        OutputStream getOutputStream()
        +                      throws IOException
        +
        Returns an OutputStream that can + be used for storing the contents of the file.
        +
        +
        Returns:
        +
        An OutputStream that can be used + for storing the contensts of the file.
        +
        Throws:
        +
        IOException - if an error occurs.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemFactory.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemFactory.html new file mode 100644 index 0000000..a1ddf04 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemFactory.html @@ -0,0 +1,255 @@ + + + + + + +FileItemFactory (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Interface FileItemFactory

+
+
+
+
    +
  • +
    +
    All Known Implementing Classes:
    +
    DefaultFileItemFactory, DiskFileItemFactory
    +
    +
    +
    +
    public interface FileItemFactory
    +

    A factory interface for creating FileItem instances. Factories + can provide their own custom configuration, over and above that provided + by the default file upload implementation.

    +
    +
    Version:
    +
    $Id: FileItemFactory.java 1454690 2013-03-09 12:08:48Z simonetripodi $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        createItem

        +
        FileItem createItem(String fieldName,
        +                    String contentType,
        +                    boolean isFormField,
        +                    String fileName)
        +
        Create a new FileItem instance from the supplied parameters and + any local factory configuration.
        +
        +
        Parameters:
        +
        fieldName - The name of the form field.
        +
        contentType - The content type of the form field.
        +
        isFormField - true if this is a plain form field; + false otherwise.
        +
        fileName - The name of the uploaded file, if any, as supplied + by the browser or other client.
        +
        Returns:
        +
        The newly created file item.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemHeaders.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemHeaders.html new file mode 100644 index 0000000..7190fb3 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemHeaders.html @@ -0,0 +1,310 @@ + + + + + + +FileItemHeaders (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Interface FileItemHeaders

+
+
+
+
    +
  • +
    +
    All Known Implementing Classes:
    +
    FileItemHeadersImpl
    +
    +
    +
    +
    public interface FileItemHeaders
    +

    This class provides support for accessing the headers for a file or form + item that was received within a multipart/form-data POST + request.

    +
    +
    Since:
    +
    1.2.1
    +
    Version:
    +
    $Id$
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getHeader

        +
        String getHeader(String name)
        +
        Returns the value of the specified part header as a String. + + If the part did not include a header of the specified name, this method + return null. If there are multiple headers with the same + name, this method returns the first header in the item. The header + name is case insensitive.
        +
        +
        Parameters:
        +
        name - a String specifying the header name
        +
        Returns:
        +
        a String containing the value of the requested + header, or null if the item does not have a header + of that name
        +
        +
      • +
      + + + +
        +
      • +

        getHeaders

        +
        Iterator<String> getHeaders(String name)
        +

        + Returns all the values of the specified item header as an + Iterator of String objects. +

        +

        + If the item did not include any headers of the specified name, this + method returns an empty Iterator. The header name is + case insensitive. +

        +
        +
        Parameters:
        +
        name - a String specifying the header name
        +
        Returns:
        +
        an Iterator containing the values of the + requested header. If the item does not have any headers of + that name, return an empty Iterator
        +
        +
      • +
      + + + +
        +
      • +

        getHeaderNames

        +
        Iterator<String> getHeaderNames()
        +

        + Returns an Iterator of all the header names. +

        +
        +
        Returns:
        +
        an Iterator containing all of the names of + headers provided with this file item. If the item does not have + any headers return an empty Iterator
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemHeadersSupport.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemHeadersSupport.html new file mode 100644 index 0000000..2cb60c9 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemHeadersSupport.html @@ -0,0 +1,272 @@ + + + + + + +FileItemHeadersSupport (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Interface FileItemHeadersSupport

+
+
+
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getHeaders

        +
        FileItemHeaders getHeaders()
        +
        Returns the collection of headers defined locally within this item.
        +
        +
        Returns:
        +
        the FileItemHeaders present for this item.
        +
        +
      • +
      + + + +
        +
      • +

        setHeaders

        +
        void setHeaders(FileItemHeaders headers)
        +
        Sets the headers read from within an item. Implementations of + FileItem or FileItemStream should implement this + interface to be able to get the raw headers found within the item + header block.
        +
        +
        Parameters:
        +
        headers - the instance that holds onto the headers + for this instance.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemIterator.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemIterator.html new file mode 100644 index 0000000..2058c89 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemIterator.html @@ -0,0 +1,273 @@ + + + + + + +FileItemIterator (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Interface FileItemIterator

+
+
+
+ +
+
+ +
+
+ +
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemStream.ItemSkippedException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemStream.ItemSkippedException.html new file mode 100644 index 0000000..ac5188e --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemStream.ItemSkippedException.html @@ -0,0 +1,277 @@ + + + + + + +FileItemStream.ItemSkippedException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class FileItemStream.ItemSkippedException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ItemSkippedException

        +
        public ItemSkippedException()
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemStream.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemStream.html new file mode 100644 index 0000000..ba3a0aa --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileItemStream.html @@ -0,0 +1,382 @@ + + + + + + +FileItemStream (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Interface FileItemStream

+
+
+
+
    +
  • +
    +
    All Superinterfaces:
    +
    FileItemHeadersSupport
    +
    +
    +
    +
    public interface FileItemStream
    +extends FileItemHeadersSupport
    +

    This interface provides access to a file or form item that was + received within a multipart/form-data POST request. + The items contents are retrieved by calling openStream().

    +

    Instances of this class are created by accessing the + iterator, returned by + FileUploadBase.getItemIterator(RequestContext).

    +

    Note: There is an interaction between the iterator and + its associated instances of FileItemStream: By invoking + Iterator.hasNext() on the iterator, you discard all data, + which hasn't been read so far from the previous data.

    +
    +
    Version:
    +
    $Id: FileItemStream.java 1454691 2013-03-09 12:15:54Z simonetripodi $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + + + + + +
        +
      • +

        getContentType

        +
        String getContentType()
        +
        Returns the content type passed by the browser or null if + not defined.
        +
        +
        Returns:
        +
        The content type passed by the browser or null if + not defined.
        +
        +
      • +
      + + + +
        +
      • +

        getName

        +
        String getName()
        +
        Returns the original filename in the client's filesystem, as provided by + the browser (or other client software). In most cases, this will be the + base file name, without path information. However, some clients, such as + the Opera browser, do include path information.
        +
        +
        Returns:
        +
        The original filename in the client's filesystem.
        +
        +
      • +
      + + + +
        +
      • +

        getFieldName

        +
        String getFieldName()
        +
        Returns the name of the field in the multipart form corresponding to + this file item.
        +
        +
        Returns:
        +
        The name of the form field.
        +
        +
      • +
      + + + +
        +
      • +

        isFormField

        +
        boolean isFormField()
        +
        Determines whether or not a FileItem instance represents + a simple form field.
        +
        +
        Returns:
        +
        true if the instance represents a simple form + field; false if it represents an uploaded file.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUpload.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUpload.html new file mode 100644 index 0000000..ef77375 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUpload.html @@ -0,0 +1,398 @@ + + + + + + +FileUpload (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class FileUpload

+
+
+ +
+
    +
  • +
    +
    Direct Known Subclasses:
    +
    PortletFileUpload, ServletFileUpload
    +
    +
    +
    +
    public class FileUpload
    +extends FileUploadBase
    +

    High level API for processing file uploads.

    + +

    This class handles multiple files per single HTML widget, sent using + multipart/mixed encoding type, as specified by + RFC 1867. Use FileUploadBase.parseRequest(RequestContext) to acquire a list + of FileItems associated + with a given HTML widget.

    + +

    How the data for individual parts is stored is determined by the factory + used to create them; a given part may be in memory, on disk, or somewhere + else.

    +
    +
    Version:
    +
    $Id: FileUpload.java 1454690 2013-03-09 12:08:48Z simonetripodi $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileUpload

        +
        public FileUpload()
        +
        Constructs an uninitialised instance of this class. + + A factory must be + configured, using setFileItemFactory(), before attempting + to parse requests.
        +
        +
        See Also:
        +
        FileUpload(FileItemFactory)
        +
        +
      • +
      + + + +
        +
      • +

        FileUpload

        +
        public FileUpload(FileItemFactory fileItemFactory)
        +
        Constructs an instance of this class which uses the supplied factory to + create FileItem instances.
        +
        +
        Parameters:
        +
        fileItemFactory - The factory to use for creating file items.
        +
        See Also:
        +
        FileUpload()
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getFileItemFactory

        +
        public FileItemFactory getFileItemFactory()
        +
        Returns the factory class used when creating file items.
        +
        +
        Specified by:
        +
        getFileItemFactory in class FileUploadBase
        +
        Returns:
        +
        The factory class for new file items.
        +
        +
      • +
      + + + +
        +
      • +

        setFileItemFactory

        +
        public void setFileItemFactory(FileItemFactory factory)
        +
        Sets the factory class to use when creating file items.
        +
        +
        Specified by:
        +
        setFileItemFactory in class FileUploadBase
        +
        Parameters:
        +
        factory - The factory class for new file items.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.FileSizeLimitExceededException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.FileSizeLimitExceededException.html new file mode 100644 index 0000000..a0e6cc2 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.FileSizeLimitExceededException.html @@ -0,0 +1,417 @@ + + + + + + +FileUploadBase.FileSizeLimitExceededException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class FileUploadBase.FileSizeLimitExceededException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileSizeLimitExceededException

        +
        public FileSizeLimitExceededException(String message,
        +                                      long actual,
        +                                      long permitted)
        +
        Constructs a SizeExceededException with + the specified detail message, and actual and permitted sizes.
        +
        +
        Parameters:
        +
        message - The detail message.
        +
        actual - The actual request size.
        +
        permitted - The maximum permitted request size.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getFileName

        +
        public String getFileName()
        +
        Returns the file name of the item, which caused the + exception.
        +
        +
        Returns:
        +
        File name, if known, or null.
        +
        +
      • +
      + + + +
        +
      • +

        setFileName

        +
        public void setFileName(String pFileName)
        +
        Sets the file name of the item, which caused the + exception.
        +
        +
        Parameters:
        +
        pFileName - the file name of the item, which caused the exception.
        +
        +
      • +
      + + + +
        +
      • +

        getFieldName

        +
        public String getFieldName()
        +
        Returns the field name of the item, which caused the + exception.
        +
        +
        Returns:
        +
        Field name, if known, or null.
        +
        +
      • +
      + + + +
        +
      • +

        setFieldName

        +
        public void setFieldName(String pFieldName)
        +
        Sets the field name of the item, which caused the + exception.
        +
        +
        Parameters:
        +
        pFieldName - the field name of the item, + which caused the exception.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.FileUploadIOException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.FileUploadIOException.html new file mode 100644 index 0000000..95cba93 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.FileUploadIOException.html @@ -0,0 +1,326 @@ + + + + + + +FileUploadBase.FileUploadIOException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class FileUploadBase.FileUploadIOException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileUploadIOException

        +
        public FileUploadIOException(FileUploadException pCause)
        +
        Creates a FileUploadIOException with the + given cause.
        +
        +
        Parameters:
        +
        pCause - The exceptions cause, if any, or null.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getCause

        +
        public Throwable getCause()
        +
        Returns the exceptions cause.
        +
        +
        Overrides:
        +
        getCause in class Throwable
        +
        Returns:
        +
        The exceptions cause, if any, or null.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.IOFileUploadException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.IOFileUploadException.html new file mode 100644 index 0000000..289f9a9 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.IOFileUploadException.html @@ -0,0 +1,333 @@ + + + + + + +FileUploadBase.IOFileUploadException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class FileUploadBase.IOFileUploadException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        IOFileUploadException

        +
        public IOFileUploadException(String pMsg,
        +                             IOException pException)
        +
        Creates a new instance with the given cause.
        +
        +
        Parameters:
        +
        pMsg - The detail message.
        +
        pException - The exceptions cause.
        +
        +
      • +
      +
    • +
    + + +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.InvalidContentTypeException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.InvalidContentTypeException.html new file mode 100644 index 0000000..262e7b8 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.InvalidContentTypeException.html @@ -0,0 +1,332 @@ + + + + + + +FileUploadBase.InvalidContentTypeException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class FileUploadBase.InvalidContentTypeException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        InvalidContentTypeException

        +
        public InvalidContentTypeException()
        +
        Constructs a InvalidContentTypeException with no + detail message.
        +
      • +
      + + + +
        +
      • +

        InvalidContentTypeException

        +
        public InvalidContentTypeException(String message)
        +
        Constructs an InvalidContentTypeException with + the specified detail message.
        +
        +
        Parameters:
        +
        message - The detail message.
        +
        +
      • +
      + + + +
        +
      • +

        InvalidContentTypeException

        +
        public InvalidContentTypeException(String msg,
        +                                   Throwable cause)
        +
        Constructs an InvalidContentTypeException with + the specified detail message and cause.
        +
        +
        Parameters:
        +
        msg - The detail message.
        +
        cause - the original cause
        +
        Since:
        +
        1.3.1
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.SizeException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.SizeException.html new file mode 100644 index 0000000..8d9674e --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.SizeException.html @@ -0,0 +1,365 @@ + + + + + + +FileUploadBase.SizeException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class FileUploadBase.SizeException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SizeException

        +
        protected SizeException(String message,
        +                        long actual,
        +                        long permitted)
        +
        Creates a new instance.
        +
        +
        Parameters:
        +
        message - The detail message.
        +
        actual - The actual number of bytes in the request.
        +
        permitted - The requests size limit, in bytes.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getActualSize

        +
        public long getActualSize()
        +
        Retrieves the actual size of the request.
        +
        +
        Returns:
        +
        The actual size of the request.
        +
        Since:
        +
        1.3
        +
        +
      • +
      + + + +
        +
      • +

        getPermittedSize

        +
        public long getPermittedSize()
        +
        Retrieves the permitted size of the request.
        +
        +
        Returns:
        +
        The permitted size of the request.
        +
        Since:
        +
        1.3
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.SizeLimitExceededException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.SizeLimitExceededException.html new file mode 100644 index 0000000..417f03b --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.SizeLimitExceededException.html @@ -0,0 +1,351 @@ + + + + + + +FileUploadBase.SizeLimitExceededException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class FileUploadBase.SizeLimitExceededException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        SizeLimitExceededException

        +
        @Deprecated
        +public SizeLimitExceededException()
        +
        Deprecated. 1.2 Replaced by + SizeLimitExceededException(String, long, long)
        +
      • +
      + + + +
        +
      • +

        SizeLimitExceededException

        +
        @Deprecated
        +public SizeLimitExceededException(String message)
        +
        Deprecated. 1.2 Replaced by + #SizeLimitExceededException(String, long, long)
        +
        +
        Parameters:
        +
        message - The exceptions detail message.
        +
        +
      • +
      + + + +
        +
      • +

        SizeLimitExceededException

        +
        public SizeLimitExceededException(String message,
        +                                  long actual,
        +                                  long permitted)
        +
        Constructs a SizeExceededException with + the specified detail message, and actual and permitted sizes.
        +
        +
        Parameters:
        +
        message - The detail message.
        +
        actual - The actual request size.
        +
        permitted - The maximum permitted request size.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.UnknownSizeException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.UnknownSizeException.html new file mode 100644 index 0000000..36b5744 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.UnknownSizeException.html @@ -0,0 +1,317 @@ + + + + + + +FileUploadBase.UnknownSizeException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class FileUploadBase.UnknownSizeException

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable
    +
    +
    +
    Enclosing class:
    +
    FileUploadBase
    +
    +
    +
    Deprecated.  +
    1.2 As of commons-fileupload 1.2, the presence of a + content-length header is no longer required.
    +
    +
    +
    @Deprecated
    +public static class FileUploadBase.UnknownSizeException
    +extends FileUploadException
    +
    Thrown to indicate that the request size is not specified. In other + words, it is thrown, if the content-length header is missing or + contains the value -1.
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        UnknownSizeException

        +
        public UnknownSizeException()
        +
        Deprecated. 
        +
        Constructs a UnknownSizeException with no + detail message.
        +
      • +
      + + + +
        +
      • +

        UnknownSizeException

        +
        public UnknownSizeException(String message)
        +
        Deprecated. 
        +
        Constructs an UnknownSizeException with + the specified detail message.
        +
        +
        Parameters:
        +
        message - The detail message.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.html new file mode 100644 index 0000000..3a53b7c --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadBase.html @@ -0,0 +1,1231 @@ + + + + + + +FileUploadBase (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class FileUploadBase

+
+
+ +
+
    +
  • +
    +
    Direct Known Subclasses:
    +
    DiskFileUpload, FileUpload
    +
    +
    +
    +
    public abstract class FileUploadBase
    +extends Object
    +

    High level API for processing file uploads.

    + +

    This class handles multiple files per single HTML widget, sent using + multipart/mixed encoding type, as specified by + RFC 1867. Use parseRequest(RequestContext) to acquire a list of FileItems associated with a given HTML + widget.

    + +

    How the data for individual parts is stored is determined by the factory + used to create them; a given part may be in memory, on disk, or somewhere + else.

    +
    +
    Version:
    +
    $Id: FileUploadBase.java 1743630 2016-05-13 09:20:45Z jochen $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + + + + + +
        +
      • +

        CONTENT_DISPOSITION

        +
        public static final String CONTENT_DISPOSITION
        +
        HTTP content disposition header name.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        CONTENT_LENGTH

        +
        public static final String CONTENT_LENGTH
        +
        HTTP content length header name.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        FORM_DATA

        +
        public static final String FORM_DATA
        +
        Content-disposition value for form data.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        ATTACHMENT

        +
        public static final String ATTACHMENT
        +
        Content-disposition value for file attachment.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + + + + + +
        +
      • +

        MULTIPART_FORM_DATA

        +
        public static final String MULTIPART_FORM_DATA
        +
        HTTP content type header for multipart forms.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        MULTIPART_MIXED

        +
        public static final String MULTIPART_MIXED
        +
        HTTP content type header for multiple uploads.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        MAX_HEADER_SIZE

        +
        @Deprecated
        +public static final int MAX_HEADER_SIZE
        +
        Deprecated. This constant is no longer used. As of commons-fileupload + 1.2, the only applicable limit is the total size of a parts headers, + MultipartStream.HEADER_PART_SIZE_MAX.
        +
        The maximum length of a single header line that will be parsed + (1024 bytes).
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileUploadBase

        +
        public FileUploadBase()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        isMultipartContent

        +
        public static final boolean isMultipartContent(RequestContext ctx)
        +

        Utility method that determines whether the request contains multipart + content.

        + +

        NOTE:This method will be moved to the + ServletFileUpload class after the FileUpload 1.1 release. + Unfortunately, since this method is static, it is not possible to + provide its replacement until this method is removed.

        +
        +
        Parameters:
        +
        ctx - The request context to be evaluated. Must be non-null.
        +
        Returns:
        +
        true if the request is multipart; + false otherwise.
        +
        +
      • +
      + + + +
        +
      • +

        isMultipartContent

        +
        @Deprecated
        +public static boolean isMultipartContent(HttpServletRequest req)
        +
        Deprecated. 1.1 Use the method on ServletFileUpload instead.
        +
        Utility method that determines whether the request contains multipart + content.
        +
        +
        Parameters:
        +
        req - The servlet request to be evaluated. Must be non-null.
        +
        Returns:
        +
        true if the request is multipart; + false otherwise.
        +
        +
      • +
      + + + +
        +
      • +

        getFileItemFactory

        +
        public abstract FileItemFactory getFileItemFactory()
        +
        Returns the factory class used when creating file items.
        +
        +
        Returns:
        +
        The factory class for new file items.
        +
        +
      • +
      + + + +
        +
      • +

        setFileItemFactory

        +
        public abstract void setFileItemFactory(FileItemFactory factory)
        +
        Sets the factory class to use when creating file items.
        +
        +
        Parameters:
        +
        factory - The factory class for new file items.
        +
        +
      • +
      + + + +
        +
      • +

        getSizeMax

        +
        public long getSizeMax()
        +
        Returns the maximum allowed size of a complete request, as opposed + to getFileSizeMax().
        +
        +
        Returns:
        +
        The maximum allowed size, in bytes. The default value of + -1 indicates, that there is no limit.
        +
        See Also:
        +
        setSizeMax(long)
        +
        +
      • +
      + + + +
        +
      • +

        setSizeMax

        +
        public void setSizeMax(long sizeMax)
        +
        Sets the maximum allowed size of a complete request, as opposed + to setFileSizeMax(long).
        +
        +
        Parameters:
        +
        sizeMax - The maximum allowed size, in bytes. The default value of + -1 indicates, that there is no limit.
        +
        See Also:
        +
        getSizeMax()
        +
        +
      • +
      + + + +
        +
      • +

        getFileSizeMax

        +
        public long getFileSizeMax()
        +
        Returns the maximum allowed size of a single uploaded file, + as opposed to getSizeMax().
        +
        +
        Returns:
        +
        Maximum size of a single uploaded file.
        +
        See Also:
        +
        setFileSizeMax(long)
        +
        +
      • +
      + + + +
        +
      • +

        setFileSizeMax

        +
        public void setFileSizeMax(long fileSizeMax)
        +
        Sets the maximum allowed size of a single uploaded file, + as opposed to getSizeMax().
        +
        +
        Parameters:
        +
        fileSizeMax - Maximum size of a single uploaded file.
        +
        See Also:
        +
        getFileSizeMax()
        +
        +
      • +
      + + + +
        +
      • +

        getHeaderEncoding

        +
        public String getHeaderEncoding()
        +
        Retrieves the character encoding used when reading the headers of an + individual part. When not specified, or null, the request + encoding is used. If that is also not specified, or null, + the platform default encoding is used.
        +
        +
        Returns:
        +
        The encoding used to read part headers.
        +
        +
      • +
      + + + +
        +
      • +

        setHeaderEncoding

        +
        public void setHeaderEncoding(String encoding)
        +
        Specifies the character encoding to be used when reading the headers of + individual part. When not specified, or null, the request + encoding is used. If that is also not specified, or null, + the platform default encoding is used.
        +
        +
        Parameters:
        +
        encoding - The encoding used to read part headers.
        +
        +
      • +
      + + + + + + + +
        +
      • +

        getItemIterator

        +
        public FileItemIterator getItemIterator(RequestContext ctx)
        +                                 throws FileUploadException,
        +                                        IOException
        +
        Processes an RFC 1867 + compliant multipart/form-data stream.
        +
        +
        Parameters:
        +
        ctx - The context for the request to be parsed.
        +
        Returns:
        +
        An iterator to instances of FileItemStream + parsed from the request, in the order that they were + transmitted.
        +
        Throws:
        +
        FileUploadException - if there are problems reading/parsing + the request or storing files.
        +
        IOException - An I/O error occurred. This may be a network + error while communicating with the client or a problem while + storing the uploaded content.
        +
        +
      • +
      + + + +
        +
      • +

        parseRequest

        +
        public List<FileItem> parseRequest(RequestContext ctx)
        +                            throws FileUploadException
        +
        Processes an RFC 1867 + compliant multipart/form-data stream.
        +
        +
        Parameters:
        +
        ctx - The context for the request to be parsed.
        +
        Returns:
        +
        A list of FileItem instances parsed from the + request, in the order that they were transmitted.
        +
        Throws:
        +
        FileUploadException - if there are problems reading/parsing + the request or storing files.
        +
        +
      • +
      + + + +
        +
      • +

        parseParameterMap

        +
        public Map<String,List<FileItem>> parseParameterMap(RequestContext ctx)
        +                                             throws FileUploadException
        +
        Processes an RFC 1867 + compliant multipart/form-data stream.
        +
        +
        Parameters:
        +
        ctx - The context for the request to be parsed.
        +
        Returns:
        +
        A map of FileItem instances parsed from the request.
        +
        Throws:
        +
        FileUploadException - if there are problems reading/parsing + the request or storing files.
        +
        Since:
        +
        1.3
        +
        +
      • +
      + + + +
        +
      • +

        getBoundary

        +
        protected byte[] getBoundary(String contentType)
        +
        Retrieves the boundary from the Content-type header.
        +
        +
        Parameters:
        +
        contentType - The value of the content type header from which to + extract the boundary value.
        +
        Returns:
        +
        The boundary, as a byte array.
        +
        +
      • +
      + + + +
        +
      • +

        getFileName

        +
        @Deprecated
        +protected String getFileName(Map<String,String> headers)
        +
        Deprecated. 1.2.1 Use getFileName(FileItemHeaders).
        +
        Retrieves the file name from the Content-disposition + header.
        +
        +
        Parameters:
        +
        headers - A Map containing the HTTP request headers.
        +
        Returns:
        +
        The file name for the current encapsulation.
        +
        +
      • +
      + + + +
        +
      • +

        getFileName

        +
        protected String getFileName(FileItemHeaders headers)
        +
        Retrieves the file name from the Content-disposition + header.
        +
        +
        Parameters:
        +
        headers - The HTTP headers object.
        +
        Returns:
        +
        The file name for the current encapsulation.
        +
        +
      • +
      + + + +
        +
      • +

        getFieldName

        +
        protected String getFieldName(FileItemHeaders headers)
        +
        Retrieves the field name from the Content-disposition + header.
        +
        +
        Parameters:
        +
        headers - A Map containing the HTTP request headers.
        +
        Returns:
        +
        The field name for the current encapsulation.
        +
        +
      • +
      + + + +
        +
      • +

        getFieldName

        +
        @Deprecated
        +protected String getFieldName(Map<String,String> headers)
        +
        Deprecated. 1.2.1 Use getFieldName(FileItemHeaders).
        +
        Retrieves the field name from the Content-disposition + header.
        +
        +
        Parameters:
        +
        headers - A Map containing the HTTP request headers.
        +
        Returns:
        +
        The field name for the current encapsulation.
        +
        +
      • +
      + + + +
        +
      • +

        createItem

        +
        @Deprecated
        +protected FileItem createItem(Map<String,String> headers,
        +                                          boolean isFormField)
        +                                   throws FileUploadException
        +
        Deprecated. 1.2 This method is no longer used in favour of + internally created instances of FileItem.
        +
        Creates a new FileItem instance.
        +
        +
        Parameters:
        +
        headers - A Map containing the HTTP request + headers.
        +
        isFormField - Whether or not this item is a form field, as + opposed to a file.
        +
        Returns:
        +
        A newly created FileItem instance.
        +
        Throws:
        +
        FileUploadException - if an error occurs.
        +
        +
      • +
      + + + +
        +
      • +

        getParsedHeaders

        +
        protected FileItemHeaders getParsedHeaders(String headerPart)
        +

        Parses the header-part and returns as key/value + pairs. + +

        If there are multiple headers of the same names, the name + will map to a comma-separated list containing the values.

        +
        +
        Parameters:
        +
        headerPart - The header-part of the current + encapsulation.
        +
        Returns:
        +
        A Map containing the parsed HTTP request headers.
        +
        +
      • +
      + + + + + + + +
        +
      • +

        parseHeaders

        +
        @Deprecated
        +protected Map<String,String> parseHeaders(String headerPart)
        +
        Deprecated. 1.2.1 Use getParsedHeaders(String)
        +

        Parses the header-part and returns as key/value + pairs. + +

        If there are multiple headers of the same names, the name + will map to a comma-separated list containing the values.

        +
        +
        Parameters:
        +
        headerPart - The header-part of the current + encapsulation.
        +
        Returns:
        +
        A Map containing the parsed HTTP request headers.
        +
        +
      • +
      + + + +
        +
      • +

        getHeader

        +
        @Deprecated
        +protected final String getHeader(Map<String,String> headers,
        +                                             String name)
        +
        Deprecated. 1.2.1 Use FileItemHeaders.getHeader(String).
        +
        Returns the header with the specified name from the supplied map. The + header lookup is case-insensitive.
        +
        +
        Parameters:
        +
        headers - A Map containing the HTTP request headers.
        +
        name - The name of the header to return.
        +
        Returns:
        +
        The value of specified header, or a comma-separated list if + there were multiple headers of that name.
        +
        +
      • +
      + + + +
        +
      • +

        getProgressListener

        +
        public ProgressListener getProgressListener()
        +
        Returns the progress listener.
        +
        +
        Returns:
        +
        The progress listener, if any, or null.
        +
        +
      • +
      + + + +
        +
      • +

        setProgressListener

        +
        public void setProgressListener(ProgressListener pListener)
        +
        Sets the progress listener.
        +
        +
        Parameters:
        +
        pListener - The progress listener, if any. Defaults to null.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadException.html new file mode 100644 index 0000000..a70aa62 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/FileUploadException.html @@ -0,0 +1,402 @@ + + + + + + +FileUploadException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class FileUploadException

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileUploadException

        +
        public FileUploadException()
        +
        Constructs a new FileUploadException without message.
        +
      • +
      + + + +
        +
      • +

        FileUploadException

        +
        public FileUploadException(String msg)
        +
        Constructs a new FileUploadException with specified detail + message.
        +
        +
        Parameters:
        +
        msg - the error message.
        +
        +
      • +
      + + + +
        +
      • +

        FileUploadException

        +
        public FileUploadException(String msg,
        +                           Throwable cause)
        +
        Creates a new FileUploadException with the given + detail message and cause.
        +
        +
        Parameters:
        +
        msg - The exceptions detail message.
        +
        cause - The exceptions cause.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        printStackTrace

        +
        public void printStackTrace(PrintStream stream)
        +
        Prints this throwable and its backtrace to the specified print stream.
        +
        +
        Overrides:
        +
        printStackTrace in class Throwable
        +
        Parameters:
        +
        stream - PrintStream to use for output
        +
        +
      • +
      + + + +
        +
      • +

        printStackTrace

        +
        public void printStackTrace(PrintWriter writer)
        +
        Prints this throwable and its backtrace to the specified + print writer.
        +
        +
        Overrides:
        +
        printStackTrace in class Throwable
        +
        Parameters:
        +
        writer - PrintWriter to use for output
        +
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/InvalidFileNameException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/InvalidFileNameException.html new file mode 100644 index 0000000..f5e7b25 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/InvalidFileNameException.html @@ -0,0 +1,329 @@ + + + + + + +InvalidFileNameException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class InvalidFileNameException

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable
    +
    +
    +
    +
    public class InvalidFileNameException
    +extends RuntimeException
    +
    This exception is thrown in case of an invalid file name. + A file name is invalid, if it contains a NUL character. + Attackers might use this to circumvent security checks: + For example, a malicious user might upload a file with the name + "foo.exe\0.png". This file name might pass security checks (i.e. + checks for the extension ".png"), while, depending on the underlying + C library, it might create a file named "foo.exe", as the NUL + character is the string terminator in C.
    +
    +
    Version:
    +
    $Id: InvalidFileNameException.java 1454691 2013-03-09 12:15:54Z simonetripodi $
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        InvalidFileNameException

        +
        public InvalidFileNameException(String pName,
        +                                String pMessage)
        +
        Creates a new instance.
        +
        +
        Parameters:
        +
        pName - The file name causing the exception.
        +
        pMessage - A human readable error message.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getName

        +
        public String getName()
        +
        Returns the invalid file name.
        +
        +
        Returns:
        +
        the invalid file name.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.IllegalBoundaryException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.IllegalBoundaryException.html new file mode 100644 index 0000000..764bd5e --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.IllegalBoundaryException.html @@ -0,0 +1,299 @@ + + + + + + +MultipartStream.IllegalBoundaryException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class MultipartStream.IllegalBoundaryException

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable
    +
    +
    +
    Enclosing class:
    +
    MultipartStream
    +
    +
    +
    +
    public static class MultipartStream.IllegalBoundaryException
    +extends IOException
    +
    Thrown upon attempt of setting an invalid boundary token.
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        IllegalBoundaryException

        +
        public IllegalBoundaryException()
        +
        Constructs an IllegalBoundaryException with no + detail message.
        +
      • +
      + + + +
        +
      • +

        IllegalBoundaryException

        +
        public IllegalBoundaryException(String message)
        +
        Constructs an IllegalBoundaryException with + the specified detail message.
        +
        +
        Parameters:
        +
        message - The detail message.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.ItemInputStream.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.ItemInputStream.html new file mode 100644 index 0000000..7632645 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.ItemInputStream.html @@ -0,0 +1,455 @@ + + + + + + +MultipartStream.ItemInputStream (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class MultipartStream.ItemInputStream

+
+
+ +
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getBytesRead

        +
        public long getBytesRead()
        +
        Returns the number of bytes, which have been read + by the stream.
        +
        +
        Returns:
        +
        Number of bytes, which have been read so far.
        +
        +
      • +
      + + + +
        +
      • +

        available

        +
        public int available()
        +              throws IOException
        +
        Returns the number of bytes, which are currently + available, without blocking.
        +
        +
        Overrides:
        +
        available in class InputStream
        +
        Returns:
        +
        Number of bytes in the buffer.
        +
        Throws:
        +
        IOException - An I/O error occurs.
        +
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read()
        +         throws IOException
        +
        Returns the next byte in the stream.
        +
        +
        Specified by:
        +
        read in class InputStream
        +
        Returns:
        +
        The next byte in the stream, as a non-negative + integer, or -1 for EOF.
        +
        Throws:
        +
        IOException - An I/O error occurred.
        +
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] b,
        +                int off,
        +                int len)
        +         throws IOException
        +
        Reads bytes into the given buffer.
        +
        +
        Overrides:
        +
        read in class InputStream
        +
        Parameters:
        +
        b - The destination buffer, where to write to.
        +
        off - Offset of the first byte in the buffer.
        +
        len - Maximum number of bytes to read.
        +
        Returns:
        +
        Number of bytes, which have been actually read, + or -1 for EOF.
        +
        Throws:
        +
        IOException - An I/O error occurred.
        +
        +
      • +
      + + + + + + + +
        +
      • +

        close

        +
        public void close(boolean pCloseUnderlying)
        +           throws IOException
        +
        Closes the input stream.
        +
        +
        Parameters:
        +
        pCloseUnderlying - Whether to close the underlying stream + (hard close)
        +
        Throws:
        +
        IOException - An I/O error occurred.
        +
        +
      • +
      + + + +
        +
      • +

        skip

        +
        public long skip(long bytes)
        +          throws IOException
        +
        Skips the given number of bytes.
        +
        +
        Overrides:
        +
        skip in class InputStream
        +
        Parameters:
        +
        bytes - Number of bytes to skip.
        +
        Returns:
        +
        The number of bytes, which have actually been + skipped.
        +
        Throws:
        +
        IOException - An I/O error occurred.
        +
        +
      • +
      + + + +
        +
      • +

        isClosed

        +
        public boolean isClosed()
        +
        Returns, whether the stream is closed.
        +
        +
        Returns:
        +
        True, if the stream is closed, otherwise false.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.MalformedStreamException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.MalformedStreamException.html new file mode 100644 index 0000000..9e48684 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.MalformedStreamException.html @@ -0,0 +1,300 @@ + + + + + + +MultipartStream.MalformedStreamException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class MultipartStream.MalformedStreamException

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable
    +
    +
    +
    Enclosing class:
    +
    MultipartStream
    +
    +
    +
    +
    public static class MultipartStream.MalformedStreamException
    +extends IOException
    +
    Thrown to indicate that the input stream fails to follow the + required syntax.
    +
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        MalformedStreamException

        +
        public MalformedStreamException()
        +
        Constructs a MalformedStreamException with no + detail message.
        +
      • +
      + + + +
        +
      • +

        MalformedStreamException

        +
        public MalformedStreamException(String message)
        +
        Constructs an MalformedStreamException with + the specified detail message.
        +
        +
        Parameters:
        +
        message - The detail message.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.ProgressNotifier.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.ProgressNotifier.html new file mode 100644 index 0000000..1a6710d --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.ProgressNotifier.html @@ -0,0 +1,204 @@ + + + + + + +MultipartStream.ProgressNotifier (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class MultipartStream.ProgressNotifier

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.fileupload.MultipartStream.ProgressNotifier
    • +
    +
  • +
+
+ +
+
+ +
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.html new file mode 100644 index 0000000..c1fc45d --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/MultipartStream.html @@ -0,0 +1,1006 @@ + + + + + + +MultipartStream (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class MultipartStream

+
+
+ +
+
    +
  • +
    +
    +
    public class MultipartStream
    +extends Object
    +

    Low level API for processing file uploads. + +

    This class can be used to process data streams conforming to MIME + 'multipart' format as defined in + RFC 1867. Arbitrarily + large amounts of data in the stream can be processed under constant + memory usage. + +

    The format of the stream is defined in the following way:
    + + + multipart-body := preamble 1*encapsulation close-delimiter epilogue
    + encapsulation := delimiter body CRLF
    + delimiter := "--" boundary CRLF
    + close-delimiter := "--" boundary "--"
    + preamble := <ignore>
    + epilogue := <ignore>
    + body := header-part CRLF body-part
    + header-part := 1*header CRLF
    + header := header-name ":" header-value
    + header-name := <printable ascii characters except ":">
    + header-value := <any ascii characters except CR & LF>
    + body-data := <arbitrary data>
    +
    + +

    Note that body-data can contain another mulipart entity. There + is limited support for single pass processing of such nested + streams. The nested stream is required to have a + boundary token of the same length as the parent stream (see setBoundary(byte[])). + +

    Here is an example of usage of this class.
    + +

    +   try {
    +     MultipartStream multipartStream = new MultipartStream(input, boundary);
    +     boolean nextPart = multipartStream.skipPreamble();
    +     OutputStream output;
    +     while(nextPart) {
    +       String header = multipartStream.readHeaders();
    +       // process headers
    +       // create some output stream
    +       multipartStream.readBodyData(output);
    +       nextPart = multipartStream.readBoundary();
    +     }
    +   } catch(MultipartStream.MalformedStreamException e) {
    +     // the stream failed to follow required syntax
    +   } catch(IOException e) {
    +     // a read or write error occurred
    +   }
    + 
    +
    +
    Version:
    +
    $Id: MultipartStream.java 1745065 2016-05-22 14:56:37Z britter $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        CR

        +
        public static final byte CR
        +
        The Carriage Return ASCII character value.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        LF

        +
        public static final byte LF
        +
        The Line Feed ASCII character value.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        DASH

        +
        public static final byte DASH
        +
        The dash (-) ASCII character value.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        HEADER_PART_SIZE_MAX

        +
        public static final int HEADER_PART_SIZE_MAX
        +
        The maximum length of header-part that will be + processed (10 kilobytes = 10240 bytes.).
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        DEFAULT_BUFSIZE

        +
        protected static final int DEFAULT_BUFSIZE
        +
        The default length of the buffer used for processing a request.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      + + + +
        +
      • +

        HEADER_SEPARATOR

        +
        protected static final byte[] HEADER_SEPARATOR
        +
        A byte sequence that marks the end of header-part + (CRLFCRLF).
        +
      • +
      + + + +
        +
      • +

        FIELD_SEPARATOR

        +
        protected static final byte[] FIELD_SEPARATOR
        +
        A byte sequence that that follows a delimiter that will be + followed by an encapsulation (CRLF).
        +
      • +
      + + + +
        +
      • +

        STREAM_TERMINATOR

        +
        protected static final byte[] STREAM_TERMINATOR
        +
        A byte sequence that that follows a delimiter of the last + encapsulation in the stream (--).
        +
      • +
      + + + +
        +
      • +

        BOUNDARY_PREFIX

        +
        protected static final byte[] BOUNDARY_PREFIX
        +
        A byte sequence that precedes a boundary (CRLF--).
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + + + + + +
        +
      • +

        MultipartStream

        +
        @Deprecated
        +public MultipartStream(InputStream input,
        +                                   byte[] boundary,
        +                                   int bufSize)
        + +

        Constructs a MultipartStream with a custom size buffer + and no progress notifier. + +

        Note that the buffer must be at least big enough to contain the + boundary string, plus 4 characters for CR/LF and double dash, plus at + least one byte of data. Too small a buffer size setting will degrade + performance.

        +
        +
        Parameters:
        +
        input - The InputStream to serve as a data source.
        +
        boundary - The token used for dividing the stream into + encapsulations.
        +
        bufSize - The size of the buffer to be used, in bytes.
        +
        +
      • +
      + + + +
        +
      • +

        MultipartStream

        +
        public MultipartStream(InputStream input,
        +                       byte[] boundary,
        +                       int bufSize,
        +                       MultipartStream.ProgressNotifier pNotifier)
        +

        Constructs a MultipartStream with a custom size buffer. + +

        Note that the buffer must be at least big enough to contain the + boundary string, plus 4 characters for CR/LF and double dash, plus at + least one byte of data. Too small a buffer size setting will degrade + performance.

        +
        +
        Parameters:
        +
        input - The InputStream to serve as a data source.
        +
        boundary - The token used for dividing the stream into + encapsulations.
        +
        bufSize - The size of the buffer to be used, in bytes.
        +
        pNotifier - The notifier, which is used for calling the + progress listener, if any.
        +
        Throws:
        +
        IllegalArgumentException - If the buffer size is too small
        +
        Since:
        +
        1.3.1
        +
        +
      • +
      + + + + +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getHeaderEncoding

        +
        public String getHeaderEncoding()
        +
        Retrieves the character encoding used when reading the headers of an + individual part. When not specified, or null, the platform + default encoding is used.
        +
        +
        Returns:
        +
        The encoding used to read part headers.
        +
        +
      • +
      + + + +
        +
      • +

        setHeaderEncoding

        +
        public void setHeaderEncoding(String encoding)
        +
        Specifies the character encoding to be used when reading the headers of + individual parts. When not specified, or null, the platform + default encoding is used.
        +
        +
        Parameters:
        +
        encoding - The encoding used to read part headers.
        +
        +
      • +
      + + + +
        +
      • +

        readByte

        +
        public byte readByte()
        +              throws IOException
        +
        Reads a byte from the buffer, and refills it as + necessary.
        +
        +
        Returns:
        +
        The next byte from the input stream.
        +
        Throws:
        +
        IOException - if there is no more data available.
        +
        +
      • +
      + + + + + + + +
        +
      • +

        setBoundary

        +
        public void setBoundary(byte[] boundary)
        +                 throws MultipartStream.IllegalBoundaryException
        +

        Changes the boundary token used for partitioning the stream. + +

        This method allows single pass processing of nested multipart + streams. + +

        The boundary token of the nested stream is required + to be of the same length as the boundary token in parent stream. + +

        Restoring the parent stream boundary token after processing of a + nested stream is left to the application.

        +
        +
        Parameters:
        +
        boundary - The boundary to be used for parsing of the nested + stream.
        +
        Throws:
        +
        MultipartStream.IllegalBoundaryException - if the boundary + has a different length than the one + being currently parsed.
        +
        +
      • +
      + + + + + + + + + + + + + + + +
        +
      • +

        skipPreamble

        +
        public boolean skipPreamble()
        +                     throws IOException
        +
        Finds the beginning of the first encapsulation.
        +
        +
        Returns:
        +
        true if an encapsulation was found in + the stream.
        +
        Throws:
        +
        IOException - if an i/o error occurs.
        +
        +
      • +
      + + + +
        +
      • +

        arrayequals

        +
        public static boolean arrayequals(byte[] a,
        +                                  byte[] b,
        +                                  int count)
        +
        Compares count first bytes in the arrays + a and b.
        +
        +
        Parameters:
        +
        a - The first array to compare.
        +
        b - The second array to compare.
        +
        count - How many bytes should be compared.
        +
        Returns:
        +
        true if count first bytes in arrays + a and b are equal.
        +
        +
      • +
      + + + +
        +
      • +

        findByte

        +
        protected int findByte(byte value,
        +                       int pos)
        +
        Searches for a byte of specified value in the buffer, + starting at the specified position.
        +
        +
        Parameters:
        +
        value - The value to find.
        +
        pos - The starting position for searching.
        +
        Returns:
        +
        The position of byte found, counting from beginning of the + buffer, or -1 if not found.
        +
        +
      • +
      + + + +
        +
      • +

        findSeparator

        +
        protected int findSeparator()
        +
        Searches for the boundary in the buffer + region delimited by head and tail.
        +
        +
        Returns:
        +
        The position of the boundary found, counting from the + beginning of the buffer, or -1 if + not found.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/ParameterParser.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/ParameterParser.html new file mode 100644 index 0000000..3f777ad --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/ParameterParser.html @@ -0,0 +1,438 @@ + + + + + + +ParameterParser (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Class ParameterParser

+
+
+ +
+
    +
  • +
    +
    +
    public class ParameterParser
    +extends Object
    +
    A simple parser intended to parse sequences of name/value pairs. + + Parameter values are expected to be enclosed in quotes if they + contain unsafe characters, such as '=' characters or separators. + Parameter values are optional and can be omitted. + +

    + param1 = value; param2 = "anything goes; really"; param3 +

    +
    +
    Version:
    +
    $Id: ParameterParser.java 1565253 2014-02-06 13:48:16Z ggregory $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ParameterParser

        +
        public ParameterParser()
        +
        Default ParameterParser constructor.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        isLowerCaseNames

        +
        public boolean isLowerCaseNames()
        +
        Returns true if parameter names are to be converted to lower + case when name/value pairs are parsed.
        +
        +
        Returns:
        +
        true if parameter names are to be + converted to lower case when name/value pairs are parsed. + Otherwise returns false
        +
        +
      • +
      + + + +
        +
      • +

        setLowerCaseNames

        +
        public void setLowerCaseNames(boolean b)
        +
        Sets the flag if parameter names are to be converted to lower case when + name/value pairs are parsed.
        +
        +
        Parameters:
        +
        b - true if parameter names are to be + converted to lower case when name/value pairs are parsed. + false otherwise.
        +
        +
      • +
      + + + +
        +
      • +

        parse

        +
        public Map<String,String> parse(String str,
        +                                char[] separators)
        +
        Extracts a map of name/value pairs from the given string. Names are + expected to be unique. Multiple separators may be specified and + the earliest found in the input string is used.
        +
        +
        Parameters:
        +
        str - the string that contains a sequence of name/value pairs
        +
        separators - the name/value pairs separators
        +
        Returns:
        +
        a map of name/value pairs
        +
        +
      • +
      + + + +
        +
      • +

        parse

        +
        public Map<String,String> parse(String str,
        +                                char separator)
        +
        Extracts a map of name/value pairs from the given string. Names are + expected to be unique.
        +
        +
        Parameters:
        +
        str - the string that contains a sequence of name/value pairs
        +
        separator - the name/value pairs separator
        +
        Returns:
        +
        a map of name/value pairs
        +
        +
      • +
      + + + +
        +
      • +

        parse

        +
        public Map<String,String> parse(char[] charArray,
        +                                char separator)
        +
        Extracts a map of name/value pairs from the given array of + characters. Names are expected to be unique.
        +
        +
        Parameters:
        +
        charArray - the array of characters that contains a sequence of + name/value pairs
        +
        separator - the name/value pairs separator
        +
        Returns:
        +
        a map of name/value pairs
        +
        +
      • +
      + + + +
        +
      • +

        parse

        +
        public Map<String,String> parse(char[] charArray,
        +                                int offset,
        +                                int length,
        +                                char separator)
        +
        Extracts a map of name/value pairs from the given array of + characters. Names are expected to be unique.
        +
        +
        Parameters:
        +
        charArray - the array of characters that contains a sequence of + name/value pairs
        +
        offset - - the initial offset.
        +
        length - - the length.
        +
        separator - the name/value pairs separator
        +
        Returns:
        +
        a map of name/value pairs
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/ProgressListener.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/ProgressListener.html new file mode 100644 index 0000000..2d71a5e --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/ProgressListener.html @@ -0,0 +1,244 @@ + + + + + + +ProgressListener (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Interface ProgressListener

+
+
+
+
    +
  • +
    +
    +
    public interface ProgressListener
    +
    The ProgressListener may be used to display a progress bar + or do stuff like that.
    +
    +
    Version:
    +
    $Id: ProgressListener.java 1454691 2013-03-09 12:15:54Z simonetripodi $
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + +
      All Methods Instance Methods Abstract Methods 
      Modifier and TypeMethod and Description
      voidupdate(long pBytesRead, + long pContentLength, + int pItems) +
      Updates the listeners status information.
      +
      +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        update

        +
        void update(long pBytesRead,
        +            long pContentLength,
        +            int pItems)
        +
        Updates the listeners status information.
        +
        +
        Parameters:
        +
        pBytesRead - The total number of bytes, which have been read + so far.
        +
        pContentLength - The total number of bytes, which are being + read. May be -1, if this number is unknown.
        +
        pItems - The number of the field, which is currently being + read. (0 = no item so far, 1 = first item is being read, ...)
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/RequestContext.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/RequestContext.html new file mode 100644 index 0000000..dac2a58 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/RequestContext.html @@ -0,0 +1,313 @@ + + + + + + +RequestContext (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Interface RequestContext

+
+
+
+
    +
  • +
    +
    All Known Subinterfaces:
    +
    UploadContext
    +
    +
    +
    All Known Implementing Classes:
    +
    PortletRequestContext, ServletRequestContext
    +
    +
    +
    +
    public interface RequestContext
    +

    Abstracts access to the request information needed for file uploads. This + interface should be implemented for each type of request that may be + handled by FileUpload, such as servlets and portlets.

    +
    +
    Since:
    +
    FileUpload 1.1
    +
    Version:
    +
    $Id: RequestContext.java 1455861 2013-03-13 10:12:09Z simonetripodi $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getCharacterEncoding

        +
        String getCharacterEncoding()
        +
        Retrieve the character encoding for the request.
        +
        +
        Returns:
        +
        The character encoding for the request.
        +
        +
      • +
      + + + +
        +
      • +

        getContentType

        +
        String getContentType()
        +
        Retrieve the content type of the request.
        +
        +
        Returns:
        +
        The content type of the request.
        +
        +
      • +
      + + + +
        +
      • +

        getContentLength

        +
        @Deprecated
        +int getContentLength()
        +
        Deprecated. 1.3 Use UploadContext.contentLength() instead
        +
        Retrieve the content length of the request.
        +
        +
        Returns:
        +
        The content length of the request.
        +
        +
      • +
      + + + +
        +
      • +

        getInputStream

        +
        InputStream getInputStream()
        +                    throws IOException
        +
        Retrieve the input stream for the request.
        +
        +
        Returns:
        +
        The input stream for the request.
        +
        Throws:
        +
        IOException - if a problem occurs.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/UploadContext.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/UploadContext.html new file mode 100644 index 0000000..7eff9d8 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/UploadContext.html @@ -0,0 +1,257 @@ + + + + + + +UploadContext (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload
+

Interface UploadContext

+
+
+
+
    +
  • +
    +
    All Superinterfaces:
    +
    RequestContext
    +
    +
    +
    All Known Implementing Classes:
    +
    PortletRequestContext, ServletRequestContext
    +
    +
    +
    +
    public interface UploadContext
    +extends RequestContext
    +
    Enhanced access to the request information needed for file uploads, + which fixes the Content Length data access in RequestContext. + + The reason of introducing this new interface is just for backward compatibility + and it might vanish for a refactored 2.x version moving the new method into + RequestContext again.
    +
    +
    Since:
    +
    1.3
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        contentLength

        +
        long contentLength()
        +
        Retrieve the content length of the request.
        +
        +
        Returns:
        +
        The content length of the request.
        +
        Since:
        +
        1.3
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/DefaultFileItem.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/DefaultFileItem.html new file mode 100644 index 0000000..9e94466 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/DefaultFileItem.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.DefaultFileItem (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.DefaultFileItem

+
+
No usage of org.apache.commons.fileupload.DefaultFileItem
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/DefaultFileItemFactory.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/DefaultFileItemFactory.html new file mode 100644 index 0000000..4b9d919 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/DefaultFileItemFactory.html @@ -0,0 +1,171 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.DefaultFileItemFactory (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.DefaultFileItemFactory

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/DiskFileUpload.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/DiskFileUpload.html new file mode 100644 index 0000000..84e7c57 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/DiskFileUpload.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.DiskFileUpload (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.DiskFileUpload

+
+
No usage of org.apache.commons.fileupload.DiskFileUpload
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItem.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItem.html new file mode 100644 index 0000000..c6bb83e --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItem.html @@ -0,0 +1,379 @@ + + + + + + +Uses of Interface org.apache.commons.fileupload.FileItem (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Interface
org.apache.commons.fileupload.FileItem

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemFactory.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemFactory.html new file mode 100644 index 0000000..6a11289 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemFactory.html @@ -0,0 +1,331 @@ + + + + + + +Uses of Interface org.apache.commons.fileupload.FileItemFactory (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Interface
org.apache.commons.fileupload.FileItemFactory

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemHeaders.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemHeaders.html new file mode 100644 index 0000000..86aeffd --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemHeaders.html @@ -0,0 +1,279 @@ + + + + + + +Uses of Interface org.apache.commons.fileupload.FileItemHeaders (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Interface
org.apache.commons.fileupload.FileItemHeaders

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemHeadersSupport.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemHeadersSupport.html new file mode 100644 index 0000000..1ee1739 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemHeadersSupport.html @@ -0,0 +1,226 @@ + + + + + + +Uses of Interface org.apache.commons.fileupload.FileItemHeadersSupport (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Interface
org.apache.commons.fileupload.FileItemHeadersSupport

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemIterator.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemIterator.html new file mode 100644 index 0000000..85a7f9e --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemIterator.html @@ -0,0 +1,232 @@ + + + + + + +Uses of Interface org.apache.commons.fileupload.FileItemIterator (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Interface
org.apache.commons.fileupload.FileItemIterator

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemStream.ItemSkippedException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemStream.ItemSkippedException.html new file mode 100644 index 0000000..8e56721 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemStream.ItemSkippedException.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.FileItemStream.ItemSkippedException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.FileItemStream.ItemSkippedException

+
+
No usage of org.apache.commons.fileupload.FileItemStream.ItemSkippedException
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemStream.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemStream.html new file mode 100644 index 0000000..f10948b --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileItemStream.html @@ -0,0 +1,171 @@ + + + + + + +Uses of Interface org.apache.commons.fileupload.FileItemStream (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Interface
org.apache.commons.fileupload.FileItemStream

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUpload.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUpload.html new file mode 100644 index 0000000..c8da3ec --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUpload.html @@ -0,0 +1,201 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.FileUpload (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.FileUpload

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.FileSizeLimitExceededException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.FileSizeLimitExceededException.html new file mode 100644 index 0000000..5cb28c8 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.FileSizeLimitExceededException.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException

+
+
No usage of org.apache.commons.fileupload.FileUploadBase.FileSizeLimitExceededException
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.FileUploadIOException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.FileUploadIOException.html new file mode 100644 index 0000000..0d195cd --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.FileUploadIOException.html @@ -0,0 +1,179 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.FileUploadBase.FileUploadIOException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.FileUploadBase.FileUploadIOException

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.IOFileUploadException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.IOFileUploadException.html new file mode 100644 index 0000000..d7e9a7f --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.IOFileUploadException.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.FileUploadBase.IOFileUploadException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.FileUploadBase.IOFileUploadException

+
+
No usage of org.apache.commons.fileupload.FileUploadBase.IOFileUploadException
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.InvalidContentTypeException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.InvalidContentTypeException.html new file mode 100644 index 0000000..de9d29f --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.InvalidContentTypeException.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.FileUploadBase.InvalidContentTypeException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.FileUploadBase.InvalidContentTypeException

+
+
No usage of org.apache.commons.fileupload.FileUploadBase.InvalidContentTypeException
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.SizeException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.SizeException.html new file mode 100644 index 0000000..b8db5b9 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.SizeException.html @@ -0,0 +1,177 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.FileUploadBase.SizeException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.FileUploadBase.SizeException

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.SizeLimitExceededException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.SizeLimitExceededException.html new file mode 100644 index 0000000..67235f9 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.SizeLimitExceededException.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException

+
+
No usage of org.apache.commons.fileupload.FileUploadBase.SizeLimitExceededException
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.UnknownSizeException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.UnknownSizeException.html new file mode 100644 index 0000000..9e2cbe7 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.UnknownSizeException.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.FileUploadBase.UnknownSizeException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.FileUploadBase.UnknownSizeException

+
+
No usage of org.apache.commons.fileupload.FileUploadBase.UnknownSizeException
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.html new file mode 100644 index 0000000..f0e635f --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadBase.html @@ -0,0 +1,238 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.FileUploadBase (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.FileUploadBase

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadException.html new file mode 100644 index 0000000..ddebb99 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/FileUploadException.html @@ -0,0 +1,379 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.FileUploadException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.FileUploadException

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/InvalidFileNameException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/InvalidFileNameException.html new file mode 100644 index 0000000..66df855 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/InvalidFileNameException.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.InvalidFileNameException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.InvalidFileNameException

+
+
No usage of org.apache.commons.fileupload.InvalidFileNameException
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.IllegalBoundaryException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.IllegalBoundaryException.html new file mode 100644 index 0000000..20ee9c9 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.IllegalBoundaryException.html @@ -0,0 +1,171 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.MultipartStream.IllegalBoundaryException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.MultipartStream.IllegalBoundaryException

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.ItemInputStream.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.ItemInputStream.html new file mode 100644 index 0000000..7386bbc --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.ItemInputStream.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.MultipartStream.ItemInputStream (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.MultipartStream.ItemInputStream

+
+
No usage of org.apache.commons.fileupload.MultipartStream.ItemInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.MalformedStreamException.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.MalformedStreamException.html new file mode 100644 index 0000000..8f631a2 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.MalformedStreamException.html @@ -0,0 +1,194 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.MultipartStream.MalformedStreamException (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.MultipartStream.MalformedStreamException

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.ProgressNotifier.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.ProgressNotifier.html new file mode 100644 index 0000000..6a54f75 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.ProgressNotifier.html @@ -0,0 +1,172 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.MultipartStream.ProgressNotifier (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.MultipartStream.ProgressNotifier

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.html new file mode 100644 index 0000000..6598bf7 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/MultipartStream.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.MultipartStream (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.MultipartStream

+
+
No usage of org.apache.commons.fileupload.MultipartStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/ParameterParser.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/ParameterParser.html new file mode 100644 index 0000000..2993c47 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/ParameterParser.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.ParameterParser (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.ParameterParser

+
+
No usage of org.apache.commons.fileupload.ParameterParser
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/ProgressListener.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/ProgressListener.html new file mode 100644 index 0000000..02f6bcd --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/ProgressListener.html @@ -0,0 +1,186 @@ + + + + + + +Uses of Interface org.apache.commons.fileupload.ProgressListener (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Interface
org.apache.commons.fileupload.ProgressListener

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/RequestContext.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/RequestContext.html new file mode 100644 index 0000000..8e3c945 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/RequestContext.html @@ -0,0 +1,269 @@ + + + + + + +Uses of Interface org.apache.commons.fileupload.RequestContext (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Interface
org.apache.commons.fileupload.RequestContext

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/UploadContext.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/UploadContext.html new file mode 100644 index 0000000..a56b56f --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/class-use/UploadContext.html @@ -0,0 +1,203 @@ + + + + + + +Uses of Interface org.apache.commons.fileupload.UploadContext (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Interface
org.apache.commons.fileupload.UploadContext

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/DiskFileItem.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/DiskFileItem.html new file mode 100644 index 0000000..c6fe985 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/DiskFileItem.html @@ -0,0 +1,941 @@ + + + + + + +DiskFileItem (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload.disk
+

Class DiskFileItem

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Serializable, FileItem, FileItemHeadersSupport
    +
    +
    +
    Direct Known Subclasses:
    +
    DefaultFileItem
    +
    +
    +
    +
    public class DiskFileItem
    +extends Object
    +implements FileItem
    +

    The default implementation of the + FileItem interface. + +

    After retrieving an instance of this class from a DiskFileItemFactory instance (see + #parseRequest(javax.servlet.http.HttpServletRequest)), you may + either request all contents of file at once using get() or + request an InputStream with + getInputStream() and process the file without attempting to load + it into memory, which may come handy with large files. + +

    Temporary files, which are created for file items, should be + deleted later on. The best way to do this is using a + FileCleaningTracker, which you can set on the + DiskFileItemFactory. However, if you do use such a tracker, + then you must consider the following: Temporary files are automatically + deleted as soon as they are no longer needed. (More precisely, when the + corresponding instance of File is garbage collected.) + This is done by the so-called reaper thread, which is started and stopped + automatically by the FileCleaningTracker when + there are files to be tracked. + It might make sense to terminate that thread, for example, if + your web application ends. See the section on "Resource cleanup" + in the users guide of commons-fileupload.

    +
    +
    Since:
    +
    FileUpload 1.1
    +
    Version:
    +
    $Id: DiskFileItem.java 1565192 2014-02-06 12:14:16Z markt $
    +
    See Also:
    +
    Serialized Form
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static StringDEFAULT_CHARSET +
      Default content charset to be used when no explicit charset + parameter is provided by the sender.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + +
      Constructors 
      Constructor and Description
      DiskFileItem(String fieldName, + String contentType, + boolean isFormField, + String fileName, + int sizeThreshold, + File repository) +
      Constructs a new DiskFileItem instance.
      +
      +
    • +
    + +
      +
    • + + +

      Method Summary

      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
      All Methods Instance Methods Concrete Methods 
      Modifier and TypeMethod and Description
      voiddelete() +
      Deletes the underlying storage for a file item, including deleting any + associated temporary disk file.
      +
      protected voidfinalize() +
      Removes the file contents from the temporary storage.
      +
      byte[]get() +
      Returns the contents of the file as an array of bytes.
      +
      StringgetCharSet() +
      Returns the content charset passed by the agent or null if + not defined.
      +
      StringgetContentType() +
      Returns the content type passed by the agent or null if + not defined.
      +
      StringgetFieldName() +
      Returns the name of the field in the multipart form corresponding to + this file item.
      +
      FileItemHeadersgetHeaders() +
      Returns the file item headers.
      +
      InputStreamgetInputStream() +
      Returns an InputStream that can be + used to retrieve the contents of the file.
      +
      StringgetName() +
      Returns the original filename in the client's filesystem.
      +
      OutputStreamgetOutputStream() +
      Returns an OutputStream that can + be used for storing the contents of the file.
      +
      longgetSize() +
      Returns the size of the file.
      +
      FilegetStoreLocation() +
      Returns the File object for the FileItem's + data's temporary location on the disk.
      +
      StringgetString() +
      Returns the contents of the file as a String, using the default + character encoding.
      +
      StringgetString(String charset) +
      Returns the contents of the file as a String, using the specified + encoding.
      +
      protected FilegetTempFile() +
      Creates and returns a File representing a uniquely + named temporary file in the configured repository path.
      +
      booleanisFormField() +
      Determines whether or not a FileItem instance represents + a simple form field.
      +
      booleanisInMemory() +
      Provides a hint as to whether or not the file contents will be read + from memory.
      +
      voidsetFieldName(String fieldName) +
      Sets the field name used to reference this file item.
      +
      voidsetFormField(boolean state) +
      Specifies whether or not a FileItem instance represents + a simple form field.
      +
      voidsetHeaders(FileItemHeaders pHeaders) +
      Sets the file item headers.
      +
      StringtoString() +
      Returns a string representation of this object.
      +
      voidwrite(File file) +
      A convenience method to write an uploaded item to disk.
      +
      + +
    • +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        DEFAULT_CHARSET

        +
        public static final String DEFAULT_CHARSET
        +
        Default content charset to be used when no explicit charset + parameter is provided by the sender. Media subtypes of the + "text" type are defined to have a default charset value of + "ISO-8859-1" when received via HTTP.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DiskFileItem

        +
        public DiskFileItem(String fieldName,
        +                    String contentType,
        +                    boolean isFormField,
        +                    String fileName,
        +                    int sizeThreshold,
        +                    File repository)
        +
        Constructs a new DiskFileItem instance.
        +
        +
        Parameters:
        +
        fieldName - The name of the form field.
        +
        contentType - The content type passed by the browser or + null if not specified.
        +
        isFormField - Whether or not this item is a plain form field, as + opposed to a file upload.
        +
        fileName - The original filename in the user's filesystem, or + null if not specified.
        +
        sizeThreshold - The threshold, in bytes, below which items will be + retained in memory and above which they will be + stored as a file.
        +
        repository - The data repository, which is the directory in + which files will be created, should the item size + exceed the threshold.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + + + + + +
        +
      • +

        getContentType

        +
        public String getContentType()
        +
        Returns the content type passed by the agent or null if + not defined.
        +
        +
        Specified by:
        +
        getContentType in interface FileItem
        +
        Returns:
        +
        The content type passed by the agent or null if + not defined.
        +
        +
      • +
      + + + +
        +
      • +

        getCharSet

        +
        public String getCharSet()
        +
        Returns the content charset passed by the agent or null if + not defined.
        +
        +
        Returns:
        +
        The content charset passed by the agent or null if + not defined.
        +
        +
      • +
      + + + +
        +
      • +

        getName

        +
        public String getName()
        +
        Returns the original filename in the client's filesystem.
        +
        +
        Specified by:
        +
        getName in interface FileItem
        +
        Returns:
        +
        The original filename in the client's filesystem.
        +
        Throws:
        +
        InvalidFileNameException - The file name contains a NUL character, + which might be an indicator of a security attack. If you intend to + use the file name anyways, catch the exception and use + InvalidFileNameException.getName().
        +
        +
      • +
      + + + +
        +
      • +

        isInMemory

        +
        public boolean isInMemory()
        +
        Provides a hint as to whether or not the file contents will be read + from memory.
        +
        +
        Specified by:
        +
        isInMemory in interface FileItem
        +
        Returns:
        +
        true if the file contents will be read + from memory; false otherwise.
        +
        +
      • +
      + + + +
        +
      • +

        getSize

        +
        public long getSize()
        +
        Returns the size of the file.
        +
        +
        Specified by:
        +
        getSize in interface FileItem
        +
        Returns:
        +
        The size of the file, in bytes.
        +
        +
      • +
      + + + +
        +
      • +

        get

        +
        public byte[] get()
        +
        Returns the contents of the file as an array of bytes. If the + contents of the file were not yet cached in memory, they will be + loaded from the disk storage and cached.
        +
        +
        Specified by:
        +
        get in interface FileItem
        +
        Returns:
        +
        The contents of the file as an array of bytes.
        +
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public String getString(String charset)
        +                 throws UnsupportedEncodingException
        +
        Returns the contents of the file as a String, using the specified + encoding. This method uses get() to retrieve the + contents of the file.
        +
        +
        Specified by:
        +
        getString in interface FileItem
        +
        Parameters:
        +
        charset - The charset to use.
        +
        Returns:
        +
        The contents of the file, as a string.
        +
        Throws:
        +
        UnsupportedEncodingException - if the requested character + encoding is not available.
        +
        +
      • +
      + + + +
        +
      • +

        getString

        +
        public String getString()
        +
        Returns the contents of the file as a String, using the default + character encoding. This method uses get() to retrieve the + contents of the file. + + TODO Consider making this method throw UnsupportedEncodingException.
        +
        +
        Specified by:
        +
        getString in interface FileItem
        +
        Returns:
        +
        The contents of the file, as a string.
        +
        +
      • +
      + + + +
        +
      • +

        write

        +
        public void write(File file)
        +           throws Exception
        +
        A convenience method to write an uploaded item to disk. The client code + is not concerned with whether or not the item is stored in memory, or on + disk in a temporary location. They just want to write the uploaded item + to a file. +

        + This implementation first attempts to rename the uploaded item to the + specified destination file, if the item was originally written to disk. + Otherwise, the data will be copied to the specified file. +

        + This method is only guaranteed to work once, the first time it + is invoked for a particular item. This is because, in the event that the + method renames a temporary file, that file will no longer be available + to copy or rename again at a later time.

        +
        +
        Specified by:
        +
        write in interface FileItem
        +
        Parameters:
        +
        file - The File into which the uploaded item should + be stored.
        +
        Throws:
        +
        Exception - if an error occurs.
        +
        +
      • +
      + + + +
        +
      • +

        delete

        +
        public void delete()
        +
        Deletes the underlying storage for a file item, including deleting any + associated temporary disk file. Although this storage will be deleted + automatically when the FileItem instance is garbage + collected, this method can be used to ensure that this is done at an + earlier time, thus preserving system resources.
        +
        +
        Specified by:
        +
        delete in interface FileItem
        +
        +
      • +
      + + + + + + + +
        +
      • +

        setFieldName

        +
        public void setFieldName(String fieldName)
        +
        Sets the field name used to reference this file item.
        +
        +
        Specified by:
        +
        setFieldName in interface FileItem
        +
        Parameters:
        +
        fieldName - The name of the form field.
        +
        See Also:
        +
        getFieldName()
        +
        +
      • +
      + + + +
        +
      • +

        isFormField

        +
        public boolean isFormField()
        +
        Determines whether or not a FileItem instance represents + a simple form field.
        +
        +
        Specified by:
        +
        isFormField in interface FileItem
        +
        Returns:
        +
        true if the instance represents a simple form + field; false if it represents an uploaded file.
        +
        See Also:
        +
        setFormField(boolean)
        +
        +
      • +
      + + + +
        +
      • +

        setFormField

        +
        public void setFormField(boolean state)
        +
        Specifies whether or not a FileItem instance represents + a simple form field.
        +
        +
        Specified by:
        +
        setFormField in interface FileItem
        +
        Parameters:
        +
        state - true if the instance represents a simple form + field; false if it represents an uploaded file.
        +
        See Also:
        +
        isFormField()
        +
        +
      • +
      + + + + + + + +
        +
      • +

        getStoreLocation

        +
        public File getStoreLocation()
        +
        Returns the File object for the FileItem's + data's temporary location on the disk. Note that for + FileItems that have their data stored in memory, + this method will return null. When handling large + files, you can use File.renameTo(java.io.File) to + move the file to new location without copying the data, if the + source and destination locations reside within the same logical + volume.
        +
        +
        Returns:
        +
        The data file, or null if the data is stored in + memory.
        +
        +
      • +
      + + + +
        +
      • +

        finalize

        +
        protected void finalize()
        +
        Removes the file contents from the temporary storage.
        +
        +
        Overrides:
        +
        finalize in class Object
        +
        +
      • +
      + + + +
        +
      • +

        getTempFile

        +
        protected File getTempFile()
        +
        Creates and returns a File representing a uniquely + named temporary file in the configured repository path. The lifetime of + the file is tied to the lifetime of the FileItem instance; + the file will be deleted when the instance is garbage collected.
        +
        +
        Returns:
        +
        The File to be used for temporary storage.
        +
        +
      • +
      + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Returns a string representation of this object.
        +
        +
        Overrides:
        +
        toString in class Object
        +
        Returns:
        +
        a string representation of this object.
        +
        +
      • +
      + + + + + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/DiskFileItemFactory.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/DiskFileItemFactory.html new file mode 100644 index 0000000..b71bd32 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/DiskFileItemFactory.html @@ -0,0 +1,568 @@ + + + + + + +DiskFileItemFactory (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload.disk
+

Class DiskFileItemFactory

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.fileupload.disk.DiskFileItemFactory
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    FileItemFactory
    +
    +
    +
    Direct Known Subclasses:
    +
    DefaultFileItemFactory
    +
    +
    +
    +
    public class DiskFileItemFactory
    +extends Object
    +implements FileItemFactory
    +

    The default FileItemFactory + implementation. This implementation creates + FileItem instances which keep their + content either in memory, for smaller items, or in a temporary file on disk, + for larger items. The size threshold, above which content will be stored on + disk, is configurable, as is the directory in which temporary files will be + created.

    + +

    If not otherwise configured, the default configuration values are as + follows:

    +
      +
    • Size threshold is 10KB.
    • +
    • Repository is the system default temp directory, as returned by + System.getProperty("java.io.tmpdir").
    • +
    +

    + NOTE: Files are created in the system default temp directory with + predictable names. This means that a local attacker with write access to that + directory can perform a TOUTOC attack to replace any uploaded file with a + file of the attackers choice. The implications of this will depend on how the + uploaded file is used but could be significant. When using this + implementation in an environment with local, untrusted users, + setRepository(File) MUST be used to configure a repository location + that is not publicly writable. In a Servlet container the location identified + by the ServletContext attribute javax.servlet.context.tempdir + may be used. +

    + +

    Temporary files, which are created for file items, should be + deleted later on. The best way to do this is using a + FileCleaningTracker, which you can set on the + DiskFileItemFactory. However, if you do use such a tracker, + then you must consider the following: Temporary files are automatically + deleted as soon as they are no longer needed. (More precisely, when the + corresponding instance of File is garbage collected.) + This is done by the so-called reaper thread, which is started and stopped + automatically by the FileCleaningTracker when there are files to be + tracked. + It might make sense to terminate that thread, for example, if + your web application ends. See the section on "Resource cleanup" + in the users guide of commons-fileupload.

    +
    +
    Since:
    +
    FileUpload 1.1
    +
    Version:
    +
    $Id: DiskFileItemFactory.java 1564788 2014-02-05 14:36:41Z markt $
    +
    +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Summary

      + + + + + + + + + + +
      Fields 
      Modifier and TypeField and Description
      static intDEFAULT_SIZE_THRESHOLD +
      The default threshold above which uploads will be stored on disk.
      +
      +
    • +
    + +
      +
    • + + +

      Constructor Summary

      + + + + + + + + + + + +
      Constructors 
      Constructor and Description
      DiskFileItemFactory() +
      Constructs an unconfigured instance of this class.
      +
      DiskFileItemFactory(int sizeThreshold, + File repository) +
      Constructs a preconfigured instance of this class.
      +
      +
    • +
    + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        DEFAULT_SIZE_THRESHOLD

        +
        public static final int DEFAULT_SIZE_THRESHOLD
        +
        The default threshold above which uploads will be stored on disk.
        +
        +
        See Also:
        +
        Constant Field Values
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        DiskFileItemFactory

        +
        public DiskFileItemFactory()
        +
        Constructs an unconfigured instance of this class. The resulting factory + may be configured by calling the appropriate setter methods.
        +
      • +
      + + + +
        +
      • +

        DiskFileItemFactory

        +
        public DiskFileItemFactory(int sizeThreshold,
        +                           File repository)
        +
        Constructs a preconfigured instance of this class.
        +
        +
        Parameters:
        +
        sizeThreshold - The threshold, in bytes, below which items will be + retained in memory and above which they will be + stored as a file.
        +
        repository - The data repository, which is the directory in + which files will be created, should the item size + exceed the threshold.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getRepository

        +
        public File getRepository()
        +
        Returns the directory used to temporarily store files that are larger + than the configured size threshold.
        +
        +
        Returns:
        +
        The directory in which temporary files will be located.
        +
        See Also:
        +
        setRepository(java.io.File)
        +
        +
      • +
      + + + +
        +
      • +

        setRepository

        +
        public void setRepository(File repository)
        +
        Sets the directory used to temporarily store files that are larger + than the configured size threshold.
        +
        +
        Parameters:
        +
        repository - The directory in which temporary files will be located.
        +
        See Also:
        +
        getRepository()
        +
        +
      • +
      + + + +
        +
      • +

        getSizeThreshold

        +
        public int getSizeThreshold()
        +
        Returns the size threshold beyond which files are written directly to + disk. The default value is 10240 bytes.
        +
        +
        Returns:
        +
        The size threshold, in bytes.
        +
        See Also:
        +
        setSizeThreshold(int)
        +
        +
      • +
      + + + +
        +
      • +

        setSizeThreshold

        +
        public void setSizeThreshold(int sizeThreshold)
        +
        Sets the size threshold beyond which files are written directly to disk.
        +
        +
        Parameters:
        +
        sizeThreshold - The size threshold, in bytes.
        +
        See Also:
        +
        getSizeThreshold()
        +
        +
      • +
      + + + +
        +
      • +

        createItem

        +
        public FileItem createItem(String fieldName,
        +                           String contentType,
        +                           boolean isFormField,
        +                           String fileName)
        +
        Create a new DiskFileItem + instance from the supplied parameters and the local factory + configuration.
        +
        +
        Specified by:
        +
        createItem in interface FileItemFactory
        +
        Parameters:
        +
        fieldName - The name of the form field.
        +
        contentType - The content type of the form field.
        +
        isFormField - true if this is a plain form field; + false otherwise.
        +
        fileName - The name of the uploaded file, if any, as supplied + by the browser or other client.
        +
        Returns:
        +
        The newly created file item.
        +
        +
      • +
      + + + +
        +
      • +

        getFileCleaningTracker

        +
        public org.apache.commons.io.FileCleaningTracker getFileCleaningTracker()
        +
        Returns the tracker, which is responsible for deleting temporary + files.
        +
        +
        Returns:
        +
        An instance of FileCleaningTracker, or null + (default), if temporary files aren't tracked.
        +
        +
      • +
      + + + +
        +
      • +

        setFileCleaningTracker

        +
        public void setFileCleaningTracker(org.apache.commons.io.FileCleaningTracker pTracker)
        +
        Sets the tracker, which is responsible for deleting temporary + files.
        +
        +
        Parameters:
        +
        pTracker - An instance of FileCleaningTracker, + which will from now on track the created files, or null + (default), to disable tracking.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/class-use/DiskFileItem.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/class-use/DiskFileItem.html new file mode 100644 index 0000000..1bdfd37 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/class-use/DiskFileItem.html @@ -0,0 +1,173 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.disk.DiskFileItem (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.disk.DiskFileItem

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/class-use/DiskFileItemFactory.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/class-use/DiskFileItemFactory.html new file mode 100644 index 0000000..c27f0d2 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/class-use/DiskFileItemFactory.html @@ -0,0 +1,173 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.disk.DiskFileItemFactory (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.disk.DiskFileItemFactory

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-frame.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-frame.html new file mode 100644 index 0000000..f74508e --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-frame.html @@ -0,0 +1,21 @@ + + + + + + +org.apache.commons.fileupload.disk (Apache Commons FileUpload 1.3.2 API) + + + + +

org.apache.commons.fileupload.disk

+ + + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-summary.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-summary.html new file mode 100644 index 0000000..6cd917a --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-summary.html @@ -0,0 +1,198 @@ + + + + + + +org.apache.commons.fileupload.disk (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Package org.apache.commons.fileupload.disk

+
+
+ A disk-based implementation of the + FileItem + interface.
+
+

See: Description

+
+
+ + + + +

Package org.apache.commons.fileupload.disk Description

+

+ A disk-based implementation of the + FileItem + interface. This implementation retains smaller items in memory, while + writing larger ones to disk. The threshold between these two is + configurable, as is the location of files that are written to disk. +

+

+ In typical usage, an instance of + DiskFileItemFactory + would be created, configured, and then passed to a + FileUpload + implementation such as + ServletFileUpload + or + PortletFileUpload. +

+

+ The following code fragment demonstrates this usage. +

+
+        DiskFileItemFactory factory = new DiskFileItemFactory();
+        // maximum size that will be stored in memory
+        factory.setSizeThreshold(4096);
+        // the location for saving data that is larger than getSizeThreshold()
+        factory.setRepository(new File("/tmp"));
+
+        ServletFileUpload upload = new ServletFileUpload(factory);
+ 
+

+ Please see the FileUpload + User Guide + for further details and examples of how to use this package. +

+
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-tree.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-tree.html new file mode 100644 index 0000000..fa50a77 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-tree.html @@ -0,0 +1,139 @@ + + + + + + +org.apache.commons.fileupload.disk Class Hierarchy (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Hierarchy For Package org.apache.commons.fileupload.disk

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-use.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-use.html new file mode 100644 index 0000000..81eab51 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/disk/package-use.html @@ -0,0 +1,171 @@ + + + + + + +Uses of Package org.apache.commons.fileupload.disk (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Package
org.apache.commons.fileupload.disk

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-frame.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-frame.html new file mode 100644 index 0000000..e3a7653 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-frame.html @@ -0,0 +1,54 @@ + + + + + + +org.apache.commons.fileupload (Apache Commons FileUpload 1.3.2 API) + + + + +

org.apache.commons.fileupload

+ + + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-summary.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-summary.html new file mode 100644 index 0000000..15c10bf --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-summary.html @@ -0,0 +1,428 @@ + + + + + + +org.apache.commons.fileupload (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Package org.apache.commons.fileupload

+
+
+ A component for handling HTML file uploads as specified by + RFC 1867.
+
+

See: Description

+
+
+ + + + +

Package org.apache.commons.fileupload Description

+

+ A component for handling HTML file uploads as specified by + RFC 1867. + This component provides support for uploads within both servlets (JSR 53) + and portlets (JSR 168). +

+

+ While this package provides the generic functionality for file uploads, + these classes are not typically used directly. Instead, normal usage + involves one of the provided extensions of + FileUpload such as + ServletFileUpload + or + PortletFileUpload, + together with a factory for + FileItem instances, + such as + DiskFileItemFactory. +

+

+ The following is a brief example of typical usage in a servlet, storing + the uploaded files on disk. +

+
public void doPost(HttpServletRequest req, HttpServletResponse res) {
+   DiskFileItemFactory factory = new DiskFileItemFactory();
+   // maximum size that will be stored in memory
+   factory.setSizeThreshold(4096);
+   // the location for saving data that is larger than getSizeThreshold()
+   factory.setRepository(new File("/tmp"));
+
+   ServletFileUpload upload = new ServletFileUpload(factory);
+   // maximum size before a FileUploadException will be thrown
+   upload.setSizeMax(1000000);
+
+   List fileItems = upload.parseRequest(req);
+   // assume we know there are two files. The first file is a small
+   // text file, the second is unknown and is written to a file on
+   // the server
+   Iterator i = fileItems.iterator();
+   String comment = ((FileItem)i.next()).getString();
+   FileItem fi = (FileItem)i.next();
+   // filename on the client
+   String fileName = fi.getName();
+   // save comment and filename to database
+   ...
+   // write the file
+   fi.write(new File("/www/uploads/", fileName));
+ }
+ 
+

+ In the example above, the first file is loaded into memory as a + String. Before calling the getString method, + the data may have been in memory or on disk depending on its size. The + second file we assume it will be large and therefore never explicitly + load it into memory, though if it is less than 4096 bytes it will be + in memory before it is written to its final location. When writing to + the final location, if the data is larger than the threshold, an attempt + is made to rename the temporary file to the given location. If it cannot + be renamed, it is streamed to the new location. +

+

+ Please see the FileUpload + User Guide + for further details and examples of how to use this package. +

+
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-tree.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-tree.html new file mode 100644 index 0000000..0d925f2 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-tree.html @@ -0,0 +1,218 @@ + + + + + + +org.apache.commons.fileupload Class Hierarchy (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Hierarchy For Package org.apache.commons.fileupload

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-use.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-use.html new file mode 100644 index 0000000..90147f0 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/package-use.html @@ -0,0 +1,452 @@ + + + + + + +Uses of Package org.apache.commons.fileupload (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Package
org.apache.commons.fileupload

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/PortletFileUpload.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/PortletFileUpload.html new file mode 100644 index 0000000..f628324 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/PortletFileUpload.html @@ -0,0 +1,481 @@ + + + + + + +PortletFileUpload (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload.portlet
+

Class PortletFileUpload

+
+
+ +
+
    +
  • +
    +
    +
    public class PortletFileUpload
    +extends FileUpload
    +

    High level API for processing file uploads.

    + +

    This class handles multiple files per single HTML widget, sent using + multipart/mixed encoding type, as specified by + RFC 1867. Use + #parseRequest(javax.servlet.http.HttpServletRequest) to acquire a list + of FileItems associated + with a given HTML widget.

    + +

    How the data for individual parts is stored is determined by the factory + used to create them; a given part may be in memory, on disk, or somewhere + else.

    +
    +
    Since:
    +
    FileUpload 1.1
    +
    Version:
    +
    $Id: PortletFileUpload.java 1455537 2013-03-12 14:06:11Z simonetripodi $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PortletFileUpload

        +
        public PortletFileUpload()
        +
        Constructs an uninitialised instance of this class. A factory must be + configured, using setFileItemFactory(), before attempting + to parse requests.
        +
        +
        See Also:
        +
        FileUpload.FileUpload(FileItemFactory)
        +
        +
      • +
      + + + +
        +
      • +

        PortletFileUpload

        +
        public PortletFileUpload(FileItemFactory fileItemFactory)
        +
        Constructs an instance of this class which uses the supplied factory to + create FileItem instances.
        +
        +
        Parameters:
        +
        fileItemFactory - The factory to use for creating file items.
        +
        See Also:
        +
        FileUpload.FileUpload()
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        isMultipartContent

        +
        public static final boolean isMultipartContent(javax.portlet.ActionRequest request)
        +
        Utility method that determines whether the request contains multipart + content.
        +
        +
        Parameters:
        +
        request - The portlet request to be evaluated. Must be non-null.
        +
        Returns:
        +
        true if the request is multipart; + false otherwise.
        +
        +
      • +
      + + + +
        +
      • +

        parseRequest

        +
        public List<FileItem> parseRequest(javax.portlet.ActionRequest request)
        +                            throws FileUploadException
        +
        Processes an RFC 1867 + compliant multipart/form-data stream.
        +
        +
        Parameters:
        +
        request - The portlet request to be parsed.
        +
        Returns:
        +
        A list of FileItem instances parsed from the + request, in the order that they were transmitted.
        +
        Throws:
        +
        FileUploadException - if there are problems reading/parsing + the request or storing files.
        +
        +
      • +
      + + + +
        +
      • +

        parseParameterMap

        +
        public Map<String,List<FileItem>> parseParameterMap(javax.portlet.ActionRequest request)
        +                                             throws FileUploadException
        +
        Processes an RFC 1867 + compliant multipart/form-data stream.
        +
        +
        Parameters:
        +
        request - The portlet request to be parsed.
        +
        Returns:
        +
        A map of FileItem instances parsed from the request.
        +
        Throws:
        +
        FileUploadException - if there are problems reading/parsing + the request or storing files.
        +
        Since:
        +
        1.3
        +
        +
      • +
      + + + +
        +
      • +

        getItemIterator

        +
        public FileItemIterator getItemIterator(javax.portlet.ActionRequest request)
        +                                 throws FileUploadException,
        +                                        IOException
        +
        Processes an RFC 1867 + compliant multipart/form-data stream.
        +
        +
        Parameters:
        +
        request - The portlet request to be parsed.
        +
        Returns:
        +
        An iterator to instances of FileItemStream + parsed from the request, in the order that they were + transmitted.
        +
        Throws:
        +
        FileUploadException - if there are problems reading/parsing + the request or storing files.
        +
        IOException - An I/O error occurred. This may be a network + error while communicating with the client or a problem while + storing the uploaded content.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/PortletRequestContext.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/PortletRequestContext.html new file mode 100644 index 0000000..fbd54ce --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/PortletRequestContext.html @@ -0,0 +1,420 @@ + + + + + + +PortletRequestContext (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload.portlet
+

Class PortletRequestContext

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.fileupload.portlet.PortletRequestContext
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    RequestContext, UploadContext
    +
    +
    +
    +
    public class PortletRequestContext
    +extends Object
    +implements UploadContext
    +

    Provides access to the request information needed for a request made to + a portlet.

    +
    +
    Since:
    +
    FileUpload 1.1
    +
    Version:
    +
    $Id: PortletRequestContext.java 1564788 2014-02-05 14:36:41Z markt $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        PortletRequestContext

        +
        public PortletRequestContext(javax.portlet.ActionRequest request)
        +
        Construct a context for this request.
        +
        +
        Parameters:
        +
        request - The request to which this context applies.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getCharacterEncoding

        +
        public String getCharacterEncoding()
        +
        Retrieve the character encoding for the request.
        +
        +
        Specified by:
        +
        getCharacterEncoding in interface RequestContext
        +
        Returns:
        +
        The character encoding for the request.
        +
        +
      • +
      + + + +
        +
      • +

        getContentType

        +
        public String getContentType()
        +
        Retrieve the content type of the request.
        +
        +
        Specified by:
        +
        getContentType in interface RequestContext
        +
        Returns:
        +
        The content type of the request.
        +
        +
      • +
      + + + + + + + +
        +
      • +

        contentLength

        +
        public long contentLength()
        +
        Retrieve the content length of the request.
        +
        +
        Specified by:
        +
        contentLength in interface UploadContext
        +
        Returns:
        +
        The content length of the request.
        +
        Since:
        +
        1.3
        +
        +
      • +
      + + + + + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Returns a string representation of this object.
        +
        +
        Overrides:
        +
        toString in class Object
        +
        Returns:
        +
        a string representation of this object.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/class-use/PortletFileUpload.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/class-use/PortletFileUpload.html new file mode 100644 index 0000000..d6e1ffc --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/class-use/PortletFileUpload.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.portlet.PortletFileUpload (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.portlet.PortletFileUpload

+
+
No usage of org.apache.commons.fileupload.portlet.PortletFileUpload
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/class-use/PortletRequestContext.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/class-use/PortletRequestContext.html new file mode 100644 index 0000000..cbbdbdd --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/class-use/PortletRequestContext.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.portlet.PortletRequestContext (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.portlet.PortletRequestContext

+
+
No usage of org.apache.commons.fileupload.portlet.PortletRequestContext
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-frame.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-frame.html new file mode 100644 index 0000000..97d644e --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-frame.html @@ -0,0 +1,21 @@ + + + + + + +org.apache.commons.fileupload.portlet (Apache Commons FileUpload 1.3.2 API) + + + + +

org.apache.commons.fileupload.portlet

+ + + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-summary.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-summary.html new file mode 100644 index 0000000..68b59ad --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-summary.html @@ -0,0 +1,188 @@ + + + + + + +org.apache.commons.fileupload.portlet (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Package org.apache.commons.fileupload.portlet

+
+
+ An implementation of + FileUpload + for use in portlets conforming to JSR 168.
+
+

See: Description

+
+
+
    +
  • + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    PortletFileUpload +
    High level API for processing file uploads.
    +
    PortletRequestContext +
    Provides access to the request information needed for a request made to + a portlet.
    +
    +
  • +
+ + + +

Package org.apache.commons.fileupload.portlet Description

+

+ An implementation of + FileUpload + for use in portlets conforming to JSR 168. This implementation requires + only access to the portlet's current ActionRequest instance, + and a suitable + FileItemFactory + implementation, such as + DiskFileItemFactory. +

+

+ The following code fragment demonstrates typical usage. +

+
+       DiskFileItemFactory factory = new DiskFileItemFactory();
+        // Configure the factory here, if desired.
+        PortletFileUpload upload = new PortletFileUpload(factory);
+        // Configure the uploader here, if desired.
+        List fileItems = upload.parseRequest(request);
+ 
+

+ Please see the FileUpload + User Guide + for further details and examples of how to use this package. +

+
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-tree.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-tree.html new file mode 100644 index 0000000..dd82e06 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-tree.html @@ -0,0 +1,147 @@ + + + + + + +org.apache.commons.fileupload.portlet Class Hierarchy (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Hierarchy For Package org.apache.commons.fileupload.portlet

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-use.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-use.html new file mode 100644 index 0000000..f2021a2 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/portlet/package-use.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Package org.apache.commons.fileupload.portlet (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Package
org.apache.commons.fileupload.portlet

+
+
No usage of org.apache.commons.fileupload.portlet
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/FileCleanerCleanup.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/FileCleanerCleanup.html new file mode 100644 index 0000000..24e809b --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/FileCleanerCleanup.html @@ -0,0 +1,409 @@ + + + + + + +FileCleanerCleanup (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload.servlet
+

Class FileCleanerCleanup

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.fileupload.servlet.FileCleanerCleanup
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    EventListener, ServletContextListener
    +
    +
    +
    +
    public class FileCleanerCleanup
    +extends Object
    +implements ServletContextListener
    +
    A servlet context listener, which ensures that the + FileCleaningTracker's reaper thread is terminated, + when the web application is destroyed.
    +
    +
    Version:
    +
    $Id: FileCleanerCleanup.java 1564788 2014-02-05 14:36:41Z markt $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Field Detail

      + + + +
        +
      • +

        FILE_CLEANING_TRACKER_ATTRIBUTE

        +
        public static final String FILE_CLEANING_TRACKER_ATTRIBUTE
        +
        Attribute name, which is used for storing an instance of + FileCleaningTracker in the web application.
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileCleanerCleanup

        +
        public FileCleanerCleanup()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getFileCleaningTracker

        +
        public static org.apache.commons.io.FileCleaningTracker getFileCleaningTracker(ServletContext pServletContext)
        +
        Returns the instance of FileCleaningTracker, which is + associated with the given ServletContext.
        +
        +
        Parameters:
        +
        pServletContext - The servlet context to query
        +
        Returns:
        +
        The contexts tracker
        +
        +
      • +
      + + + +
        +
      • +

        setFileCleaningTracker

        +
        public static void setFileCleaningTracker(ServletContext pServletContext,
        +                                          org.apache.commons.io.FileCleaningTracker pTracker)
        +
        Sets the instance of FileCleaningTracker, which is + associated with the given ServletContext.
        +
        +
        Parameters:
        +
        pServletContext - The servlet context to modify
        +
        pTracker - The tracker to set
        +
        +
      • +
      + + + + + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/ServletFileUpload.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/ServletFileUpload.html new file mode 100644 index 0000000..fbb8975 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/ServletFileUpload.html @@ -0,0 +1,479 @@ + + + + + + +ServletFileUpload (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload.servlet
+

Class ServletFileUpload

+
+
+ +
+
    +
  • +
    +
    +
    public class ServletFileUpload
    +extends FileUpload
    +

    High level API for processing file uploads.

    + +

    This class handles multiple files per single HTML widget, sent using + multipart/mixed encoding type, as specified by + RFC 1867. Use parseRequest(HttpServletRequest) to acquire a list of FileItems associated with a given HTML + widget.

    + +

    How the data for individual parts is stored is determined by the factory + used to create them; a given part may be in memory, on disk, or somewhere + else.

    +
    +
    Version:
    +
    $Id: ServletFileUpload.java 1455949 2013-03-13 14:14:44Z simonetripodi $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ServletFileUpload

        +
        public ServletFileUpload()
        +
        Constructs an uninitialised instance of this class. A factory must be + configured, using setFileItemFactory(), before attempting + to parse requests.
        +
        +
        See Also:
        +
        FileUpload.FileUpload(FileItemFactory)
        +
        +
      • +
      + + + +
        +
      • +

        ServletFileUpload

        +
        public ServletFileUpload(FileItemFactory fileItemFactory)
        +
        Constructs an instance of this class which uses the supplied factory to + create FileItem instances.
        +
        +
        Parameters:
        +
        fileItemFactory - The factory to use for creating file items.
        +
        See Also:
        +
        FileUpload.FileUpload()
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        isMultipartContent

        +
        public static final boolean isMultipartContent(HttpServletRequest request)
        +
        Utility method that determines whether the request contains multipart + content.
        +
        +
        Parameters:
        +
        request - The servlet request to be evaluated. Must be non-null.
        +
        Returns:
        +
        true if the request is multipart; + false otherwise.
        +
        +
      • +
      + + + + + + + +
        +
      • +

        parseParameterMap

        +
        public Map<String,List<FileItem>> parseParameterMap(HttpServletRequest request)
        +                                             throws FileUploadException
        +
        Processes an RFC 1867 + compliant multipart/form-data stream.
        +
        +
        Parameters:
        +
        request - The servlet request to be parsed.
        +
        Returns:
        +
        A map of FileItem instances parsed from the request.
        +
        Throws:
        +
        FileUploadException - if there are problems reading/parsing + the request or storing files.
        +
        Since:
        +
        1.3
        +
        +
      • +
      + + + +
        +
      • +

        getItemIterator

        +
        public FileItemIterator getItemIterator(HttpServletRequest request)
        +                                 throws FileUploadException,
        +                                        IOException
        +
        Processes an RFC 1867 + compliant multipart/form-data stream.
        +
        +
        Parameters:
        +
        request - The servlet request to be parsed.
        +
        Returns:
        +
        An iterator to instances of FileItemStream + parsed from the request, in the order that they were + transmitted.
        +
        Throws:
        +
        FileUploadException - if there are problems reading/parsing + the request or storing files.
        +
        IOException - An I/O error occurred. This may be a network + error while communicating with the client or a problem while + storing the uploaded content.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/ServletRequestContext.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/ServletRequestContext.html new file mode 100644 index 0000000..ff916d8 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/ServletRequestContext.html @@ -0,0 +1,420 @@ + + + + + + +ServletRequestContext (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload.servlet
+

Class ServletRequestContext

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.fileupload.servlet.ServletRequestContext
    • +
    +
  • +
+
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    RequestContext, UploadContext
    +
    +
    +
    +
    public class ServletRequestContext
    +extends Object
    +implements UploadContext
    +

    Provides access to the request information needed for a request made to + an HTTP servlet.

    +
    +
    Since:
    +
    FileUpload 1.1
    +
    Version:
    +
    $Id: ServletRequestContext.java 1564788 2014-02-05 14:36:41Z markt $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        ServletRequestContext

        +
        public ServletRequestContext(HttpServletRequest request)
        +
        Construct a context for this request.
        +
        +
        Parameters:
        +
        request - The request to which this context applies.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getCharacterEncoding

        +
        public String getCharacterEncoding()
        +
        Retrieve the character encoding for the request.
        +
        +
        Specified by:
        +
        getCharacterEncoding in interface RequestContext
        +
        Returns:
        +
        The character encoding for the request.
        +
        +
      • +
      + + + +
        +
      • +

        getContentType

        +
        public String getContentType()
        +
        Retrieve the content type of the request.
        +
        +
        Specified by:
        +
        getContentType in interface RequestContext
        +
        Returns:
        +
        The content type of the request.
        +
        +
      • +
      + + + + + + + +
        +
      • +

        contentLength

        +
        public long contentLength()
        +
        Retrieve the content length of the request.
        +
        +
        Specified by:
        +
        contentLength in interface UploadContext
        +
        Returns:
        +
        The content length of the request.
        +
        Since:
        +
        1.3
        +
        +
      • +
      + + + + + + + +
        +
      • +

        toString

        +
        public String toString()
        +
        Returns a string representation of this object.
        +
        +
        Overrides:
        +
        toString in class Object
        +
        Returns:
        +
        a string representation of this object.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/class-use/FileCleanerCleanup.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/class-use/FileCleanerCleanup.html new file mode 100644 index 0000000..1f888c8 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/class-use/FileCleanerCleanup.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.servlet.FileCleanerCleanup (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.servlet.FileCleanerCleanup

+
+
No usage of org.apache.commons.fileupload.servlet.FileCleanerCleanup
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/class-use/ServletFileUpload.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/class-use/ServletFileUpload.html new file mode 100644 index 0000000..97576fb --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/class-use/ServletFileUpload.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.servlet.ServletFileUpload (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.servlet.ServletFileUpload

+
+
No usage of org.apache.commons.fileupload.servlet.ServletFileUpload
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/class-use/ServletRequestContext.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/class-use/ServletRequestContext.html new file mode 100644 index 0000000..42189cd --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/class-use/ServletRequestContext.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.servlet.ServletRequestContext (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.servlet.ServletRequestContext

+
+
No usage of org.apache.commons.fileupload.servlet.ServletRequestContext
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-frame.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-frame.html new file mode 100644 index 0000000..1fc6457 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-frame.html @@ -0,0 +1,22 @@ + + + + + + +org.apache.commons.fileupload.servlet (Apache Commons FileUpload 1.3.2 API) + + + + +

org.apache.commons.fileupload.servlet

+ + + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-summary.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-summary.html new file mode 100644 index 0000000..ce74bc0 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-summary.html @@ -0,0 +1,196 @@ + + + + + + +org.apache.commons.fileupload.servlet (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Package org.apache.commons.fileupload.servlet

+
+
+ An implementation of + FileUpload + for use in servlets conforming to JSR 53.
+
+

See: Description

+
+
+
    +
  • + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    FileCleanerCleanup +
    A servlet context listener, which ensures that the + FileCleaningTracker's reaper thread is terminated, + when the web application is destroyed.
    +
    ServletFileUpload +
    High level API for processing file uploads.
    +
    ServletRequestContext +
    Provides access to the request information needed for a request made to + an HTTP servlet.
    +
    +
  • +
+ + + +

Package org.apache.commons.fileupload.servlet Description

+

+ An implementation of + FileUpload + for use in servlets conforming to JSR 53. This implementation requires + only access to the servlet's current HttpServletRequest + instance, and a suitable + FileItemFactory + implementation, such as + DiskFileItemFactory. +

+

+ The following code fragment demonstrates typical usage. +

+
+        DiskFileItemFactory factory = new DiskFileItemFactory();
+        // Configure the factory here, if desired.
+        ServletFileUpload upload = new ServletFileUpload(factory);
+        // Configure the uploader here, if desired.
+        List fileItems = upload.parseRequest(request);
+ 
+

+ Please see the FileUpload + User Guide + for further details and examples of how to use this package. +

+
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-tree.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-tree.html new file mode 100644 index 0000000..0b11a73 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-tree.html @@ -0,0 +1,148 @@ + + + + + + +org.apache.commons.fileupload.servlet Class Hierarchy (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Hierarchy For Package org.apache.commons.fileupload.servlet

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-use.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-use.html new file mode 100644 index 0000000..4bd21df --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/servlet/package-use.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Package org.apache.commons.fileupload.servlet (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Package
org.apache.commons.fileupload.servlet

+
+
No usage of org.apache.commons.fileupload.servlet
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/Closeable.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/Closeable.html new file mode 100644 index 0000000..51ab6cf --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/Closeable.html @@ -0,0 +1,258 @@ + + + + + + +Closeable (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload.util
+

Interface Closeable

+
+
+
+
    +
  • +
    +
    +
    public interface Closeable
    +
    Interface of an object, which may be closed.
    +
    +
    Version:
    +
    $Id: Closeable.java 1454691 2013-03-09 12:15:54Z simonetripodi $
    +
    +
  • +
+
+
+
    +
  • + + +
  • +
+
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        close

        +
        void close()
        +    throws IOException
        +
        Closes the object.
        +
        +
        Throws:
        +
        IOException - An I/O error occurred.
        +
        +
      • +
      + + + +
        +
      • +

        isClosed

        +
        boolean isClosed()
        +          throws IOException
        +
        Returns, whether the object is already closed.
        +
        +
        Returns:
        +
        True, if the object is closed, otherwise false.
        +
        Throws:
        +
        IOException - An I/O error occurred.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/FileItemHeadersImpl.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/FileItemHeadersImpl.html new file mode 100644 index 0000000..4f054e6 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/FileItemHeadersImpl.html @@ -0,0 +1,390 @@ + + + + + + +FileItemHeadersImpl (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload.util
+

Class FileItemHeadersImpl

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.fileupload.util.FileItemHeadersImpl
    • +
    +
  • +
+
+ +
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        FileItemHeadersImpl

        +
        public FileItemHeadersImpl()
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        getHeader

        +
        public String getHeader(String name)
        +
        Returns the value of the specified part header as a String. + + If the part did not include a header of the specified name, this method + return null. If there are multiple headers with the same + name, this method returns the first header in the item. The header + name is case insensitive.
        +
        +
        Specified by:
        +
        getHeader in interface FileItemHeaders
        +
        Parameters:
        +
        name - a String specifying the header name
        +
        Returns:
        +
        a String containing the value of the requested + header, or null if the item does not have a header + of that name
        +
        +
      • +
      + + + +
        +
      • +

        getHeaderNames

        +
        public Iterator<String> getHeaderNames()
        +

        + Returns an Iterator of all the header names. +

        +
        +
        Specified by:
        +
        getHeaderNames in interface FileItemHeaders
        +
        Returns:
        +
        an Iterator containing all of the names of + headers provided with this file item. If the item does not have + any headers return an empty Iterator
        +
        +
      • +
      + + + +
        +
      • +

        getHeaders

        +
        public Iterator<String> getHeaders(String name)
        +

        + Returns all the values of the specified item header as an + Iterator of String objects. +

        +

        + If the item did not include any headers of the specified name, this + method returns an empty Iterator. The header name is + case insensitive. +

        +
        +
        Specified by:
        +
        getHeaders in interface FileItemHeaders
        +
        Parameters:
        +
        name - a String specifying the header name
        +
        Returns:
        +
        an Iterator containing the values of the + requested header. If the item does not have any headers of + that name, return an empty Iterator
        +
        +
      • +
      + + + +
        +
      • +

        addHeader

        +
        public void addHeader(String name,
        +                      String value)
        +
        Method to add header values to this instance.
        +
        +
        Parameters:
        +
        name - name of this header
        +
        value - value of this header
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/LimitedInputStream.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/LimitedInputStream.html new file mode 100644 index 0000000..5371548 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/LimitedInputStream.html @@ -0,0 +1,484 @@ + + + + + + +LimitedInputStream (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload.util
+

Class LimitedInputStream

+
+
+ +
+
    +
  • +
    +
    All Implemented Interfaces:
    +
    Closeable, AutoCloseable
    +
    +
    +
    +
    public abstract class LimitedInputStream
    +extends FilterInputStream
    +implements Closeable
    +
    An input stream, which limits its data size. This stream is + used, if the content length is unknown.
    +
    +
    Version:
    +
    $Id: LimitedInputStream.java 1565292 2014-02-06 14:51:59Z ggregory $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Constructor Detail

      + + + +
        +
      • +

        LimitedInputStream

        +
        public LimitedInputStream(InputStream inputStream,
        +                          long pSizeMax)
        +
        Creates a new instance.
        +
        +
        Parameters:
        +
        inputStream - The input stream, which shall be limited.
        +
        pSizeMax - The limit; no more than this number of bytes + shall be returned by the source stream.
        +
        +
      • +
      +
    • +
    + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        raiseError

        +
        protected abstract void raiseError(long pSizeMax,
        +                                   long pCount)
        +                            throws IOException
        +
        Called to indicate, that the input streams limit has + been exceeded.
        +
        +
        Parameters:
        +
        pSizeMax - The input streams limit, in bytes.
        +
        pCount - The actual number of bytes.
        +
        Throws:
        +
        IOException - The called method is expected + to raise an IOException.
        +
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read()
        +         throws IOException
        +
        Reads the next byte of data from this input stream. The value + byte is returned as an int in the range + 0 to 255. If no byte is available + because the end of the stream has been reached, the value + -1 is returned. This method blocks until input data + is available, the end of the stream is detected, or an exception + is thrown. +

        + This method + simply performs in.read() and returns the result.

        +
        +
        Overrides:
        +
        read in class FilterInputStream
        +
        Returns:
        +
        the next byte of data, or -1 if the end of the + stream is reached.
        +
        Throws:
        +
        IOException - if an I/O error occurs.
        +
        See Also:
        +
        FilterInputStream.in
        +
        +
      • +
      + + + +
        +
      • +

        read

        +
        public int read(byte[] b,
        +                int off,
        +                int len)
        +         throws IOException
        +
        Reads up to len bytes of data from this input stream + into an array of bytes. If len is not zero, the method + blocks until some input is available; otherwise, no + bytes are read and 0 is returned. +

        + This method simply performs in.read(b, off, len) + and returns the result.

        +
        +
        Overrides:
        +
        read in class FilterInputStream
        +
        Parameters:
        +
        b - the buffer into which the data is read.
        +
        off - The start offset in the destination array + b.
        +
        len - the maximum number of bytes read.
        +
        Returns:
        +
        the total number of bytes read into the buffer, or + -1 if there is no more data because the end of + the stream has been reached.
        +
        Throws:
        +
        NullPointerException - If b is null.
        +
        IndexOutOfBoundsException - If off is negative, + len is negative, or len is greater than + b.length - off
        +
        IOException - if an I/O error occurs.
        +
        See Also:
        +
        FilterInputStream.in
        +
        +
      • +
      + + + +
        +
      • +

        isClosed

        +
        public boolean isClosed()
        +                 throws IOException
        +
        Returns, whether this stream is already closed.
        +
        +
        Returns:
        +
        True, if the stream is closed, otherwise false.
        +
        Throws:
        +
        IOException - An I/O error occurred.
        +
        +
      • +
      + + + + +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/Streams.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/Streams.html new file mode 100644 index 0000000..caf950d --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/Streams.html @@ -0,0 +1,409 @@ + + + + + + +Streams (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload.util
+

Class Streams

+
+
+ +
+
    +
  • +
    +
    +
    public final class Streams
    +extends Object
    +
    Utility class for working with streams.
    +
    +
    Version:
    +
    $Id: Streams.java 1565332 2014-02-06 16:42:19Z ggregory $
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        copy

        +
        public static long copy(InputStream inputStream,
        +                        OutputStream outputStream,
        +                        boolean closeOutputStream)
        +                 throws IOException
        +
        Copies the contents of the given InputStream + to the given OutputStream. Shortcut for +
        +   copy(pInputStream, pOutputStream, new byte[8192]);
        + 
        +
        +
        Parameters:
        +
        inputStream - The input stream, which is being read. + It is guaranteed, that InputStream.close() is called + on the stream.
        +
        outputStream - The output stream, to which data should + be written. May be null, in which case the input streams + contents are simply discarded.
        +
        closeOutputStream - True guarantees, that OutputStream.close() + is called on the stream. False indicates, that only + OutputStream.flush() should be called finally.
        +
        Returns:
        +
        Number of bytes, which have been copied.
        +
        Throws:
        +
        IOException - An I/O error occurred.
        +
        +
      • +
      + + + +
        +
      • +

        copy

        +
        public static long copy(InputStream inputStream,
        +                        OutputStream outputStream,
        +                        boolean closeOutputStream,
        +                        byte[] buffer)
        +                 throws IOException
        +
        Copies the contents of the given InputStream + to the given OutputStream.
        +
        +
        Parameters:
        +
        inputStream - The input stream, which is being read. + It is guaranteed, that InputStream.close() is called + on the stream.
        +
        outputStream - The output stream, to which data should + be written. May be null, in which case the input streams + contents are simply discarded.
        +
        closeOutputStream - True guarantees, that OutputStream.close() + is called on the stream. False indicates, that only + OutputStream.flush() should be called finally.
        +
        buffer - Temporary buffer, which is to be used for + copying data.
        +
        Returns:
        +
        Number of bytes, which have been copied.
        +
        Throws:
        +
        IOException - An I/O error occurred.
        +
        +
      • +
      + + + +
        +
      • +

        asString

        +
        public static String asString(InputStream inputStream)
        +                       throws IOException
        +
        This convenience method allows to read a + FileItemStream's + content into a string. The platform's default character encoding + is used for converting bytes into characters.
        +
        +
        Parameters:
        +
        inputStream - The input stream to read.
        +
        Returns:
        +
        The streams contents, as a string.
        +
        Throws:
        +
        IOException - An I/O error occurred.
        +
        See Also:
        +
        asString(InputStream, String)
        +
        +
      • +
      + + + +
        +
      • +

        asString

        +
        public static String asString(InputStream inputStream,
        +                              String encoding)
        +                       throws IOException
        +
        This convenience method allows to read a + FileItemStream's + content into a string, using the given character encoding.
        +
        +
        Parameters:
        +
        inputStream - The input stream to read.
        +
        encoding - The character encoding, typically "UTF-8".
        +
        Returns:
        +
        The streams contents, as a string.
        +
        Throws:
        +
        IOException - An I/O error occurred.
        +
        See Also:
        +
        asString(InputStream)
        +
        +
      • +
      + + + +
        +
      • +

        checkFileName

        +
        public static String checkFileName(String fileName)
        +
        Checks, whether the given file name is valid in the sense, + that it doesn't contain any NUL characters. If the file name + is valid, it will be returned without any modifications. Otherwise, + an InvalidFileNameException is raised.
        +
        +
        Parameters:
        +
        fileName - The file name to check
        +
        Returns:
        +
        Unmodified file name, if valid.
        +
        Throws:
        +
        InvalidFileNameException - The file name was found to be invalid.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/Closeable.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/Closeable.html new file mode 100644 index 0000000..ad931f0 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/Closeable.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Interface org.apache.commons.fileupload.util.Closeable (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Interface
org.apache.commons.fileupload.util.Closeable

+
+
No usage of org.apache.commons.fileupload.util.Closeable
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/FileItemHeadersImpl.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/FileItemHeadersImpl.html new file mode 100644 index 0000000..53f77b9 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/FileItemHeadersImpl.html @@ -0,0 +1,171 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.util.FileItemHeadersImpl (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.util.FileItemHeadersImpl

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/LimitedInputStream.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/LimitedInputStream.html new file mode 100644 index 0000000..c1c99c5 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/LimitedInputStream.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.util.LimitedInputStream (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.util.LimitedInputStream

+
+
No usage of org.apache.commons.fileupload.util.LimitedInputStream
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/Streams.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/Streams.html new file mode 100644 index 0000000..91c93c2 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/class-use/Streams.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.util.Streams (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.util.Streams

+
+
No usage of org.apache.commons.fileupload.util.Streams
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/MimeUtility.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/MimeUtility.html new file mode 100644 index 0000000..ad9fac3 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/MimeUtility.html @@ -0,0 +1,259 @@ + + + + + + +MimeUtility (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + + +
+
org.apache.commons.fileupload.util.mime
+

Class MimeUtility

+
+
+
    +
  • java.lang.Object
  • +
  • +
      +
    • org.apache.commons.fileupload.util.mime.MimeUtility
    • +
    +
  • +
+
+
    +
  • +
    +
    +
    public final class MimeUtility
    +extends Object
    +
    Utility class to decode MIME texts.
    +
    +
    Since:
    +
    1.3
    +
    +
  • +
+
+
+ +
+
+
    +
  • + +
      +
    • + + +

      Method Detail

      + + + +
        +
      • +

        decodeText

        +
        public static String decodeText(String text)
        +                         throws UnsupportedEncodingException
        +
        Decode a string of text obtained from a mail header into + its proper form. The text generally will consist of a + string of tokens, some of which may be encoded using + base64 encoding.
        +
        +
        Parameters:
        +
        text - The text to decode.
        +
        Returns:
        +
        The decoded text string.
        +
        Throws:
        +
        UnsupportedEncodingException - if the detected encoding in the input text is not supported.
        +
        +
      • +
      +
    • +
    +
  • +
+
+
+ + + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/class-use/MimeUtility.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/class-use/MimeUtility.html new file mode 100644 index 0000000..dec7480 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/class-use/MimeUtility.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Class org.apache.commons.fileupload.util.mime.MimeUtility (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Class
org.apache.commons.fileupload.util.mime.MimeUtility

+
+
No usage of org.apache.commons.fileupload.util.mime.MimeUtility
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-frame.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-frame.html new file mode 100644 index 0000000..06c2264 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-frame.html @@ -0,0 +1,20 @@ + + + + + + +org.apache.commons.fileupload.util.mime (Apache Commons FileUpload 1.3.2 API) + + + + +

org.apache.commons.fileupload.util.mime

+
+

Classes

+ +
+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-summary.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-summary.html new file mode 100644 index 0000000..10f0dd8 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-summary.html @@ -0,0 +1,156 @@ + + + + + + +org.apache.commons.fileupload.util.mime (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Package org.apache.commons.fileupload.util.mime

+
+
MIME decoder implementation, imported and retailed from + Apache Geronimo.
+
+

See: Description

+
+
+
    +
  • + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    MimeUtility +
    Utility class to decode MIME texts.
    +
    +
  • +
+ + + +

Package org.apache.commons.fileupload.util.mime Description

+
MIME decoder implementation, imported and retailed from + Apache Geronimo.
+
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-tree.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-tree.html new file mode 100644 index 0000000..e94b20a --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-tree.html @@ -0,0 +1,138 @@ + + + + + + +org.apache.commons.fileupload.util.mime Class Hierarchy (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Hierarchy For Package org.apache.commons.fileupload.util.mime

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-use.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-use.html new file mode 100644 index 0000000..82de720 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/mime/package-use.html @@ -0,0 +1,125 @@ + + + + + + +Uses of Package org.apache.commons.fileupload.util.mime (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Package
org.apache.commons.fileupload.util.mime

+
+
No usage of org.apache.commons.fileupload.util.mime
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-frame.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-frame.html new file mode 100644 index 0000000..80e3379 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-frame.html @@ -0,0 +1,26 @@ + + + + + + +org.apache.commons.fileupload.util (Apache Commons FileUpload 1.3.2 API) + + + + +

org.apache.commons.fileupload.util

+
+

Interfaces

+ +

Classes

+ +
+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-summary.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-summary.html new file mode 100644 index 0000000..1dee4cb --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-summary.html @@ -0,0 +1,187 @@ + + + + + + +org.apache.commons.fileupload.util (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Package org.apache.commons.fileupload.util

+
+
This package contains various IO related utility classes + or methods, which are basically reusable and not necessarily + restricted to the scope of a file upload.
+
+

See: Description

+
+
+
    +
  • + + + + + + + + + + + + +
    Interface Summary 
    InterfaceDescription
    Closeable +
    Interface of an object, which may be closed.
    +
    +
  • +
  • + + + + + + + + + + + + + + + + + + + + +
    Class Summary 
    ClassDescription
    FileItemHeadersImpl +
    Default implementation of the FileItemHeaders interface.
    +
    LimitedInputStream +
    An input stream, which limits its data size.
    +
    Streams +
    Utility class for working with streams.
    +
    +
  • +
+ + + +

Package org.apache.commons.fileupload.util Description

+
This package contains various IO related utility classes + or methods, which are basically reusable and not necessarily + restricted to the scope of a file upload.
+
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-tree.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-tree.html new file mode 100644 index 0000000..aae5ed1 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-tree.html @@ -0,0 +1,152 @@ + + + + + + +org.apache.commons.fileupload.util Class Hierarchy (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Hierarchy For Package org.apache.commons.fileupload.util

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +

Interface Hierarchy

+
    +
  • org.apache.commons.fileupload.util.Closeable
  • +
+
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-use.html b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-use.html new file mode 100644 index 0000000..a96f385 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/org/apache/commons/fileupload/util/package-use.html @@ -0,0 +1,164 @@ + + + + + + +Uses of Package org.apache.commons.fileupload.util (Apache Commons FileUpload 1.3.2 API) + + + + + + + + + + +
+

Uses of Package
org.apache.commons.fileupload.util

+
+
+ +
+ + + + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/overview-frame.html b/docs/licenses/Apache FileUploader/site/apidocs/overview-frame.html new file mode 100644 index 0000000..5b92db8 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/overview-frame.html @@ -0,0 +1,26 @@ + + + + + + +Overview List (Apache Commons FileUpload 1.3.2 API) + + + + + + +

 

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/overview-summary.html b/docs/licenses/Apache FileUploader/site/apidocs/overview-summary.html new file mode 100644 index 0000000..b496f03 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/overview-summary.html @@ -0,0 +1,185 @@ + + + + + + +Overview (Apache Commons FileUpload 1.3.2 API) + + + + + + + +
+ + + + + + + +
+ + +
+

Apache Commons FileUpload 1.3.2 API

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Packages 
PackageDescription
org.apache.commons.fileupload +
+ A component for handling HTML file uploads as specified by + RFC 1867.
+
org.apache.commons.fileupload.disk +
+ A disk-based implementation of the + FileItem + interface.
+
org.apache.commons.fileupload.portlet +
+ An implementation of + FileUpload + for use in portlets conforming to JSR 168.
+
org.apache.commons.fileupload.servlet +
+ An implementation of + FileUpload + for use in servlets conforming to JSR 53.
+
org.apache.commons.fileupload.util +
This package contains various IO related utility classes + or methods, which are basically reusable and not necessarily + restricted to the scope of a file upload.
+
org.apache.commons.fileupload.util.mime +
MIME decoder implementation, imported and retailed from + Apache Geronimo.
+
+
+ +
+ + + + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/overview-tree.html b/docs/licenses/Apache FileUploader/site/apidocs/overview-tree.html new file mode 100644 index 0000000..a9f9a30 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/overview-tree.html @@ -0,0 +1,240 @@ + + + + + + +Class Hierarchy (Apache Commons FileUpload 1.3.2 API) + + + + + + + +
+ + + + + + + +
+ + + +
+

Class Hierarchy

+ +

Interface Hierarchy

+ +
+ +
+ + + + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/package-list b/docs/licenses/Apache FileUploader/site/apidocs/package-list new file mode 100644 index 0000000..5d03197 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/package-list @@ -0,0 +1,6 @@ +org.apache.commons.fileupload +org.apache.commons.fileupload.disk +org.apache.commons.fileupload.portlet +org.apache.commons.fileupload.servlet +org.apache.commons.fileupload.util +org.apache.commons.fileupload.util.mime diff --git a/docs/licenses/Apache FileUploader/site/apidocs/script.js b/docs/licenses/Apache FileUploader/site/apidocs/script.js new file mode 100644 index 0000000..b346356 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/script.js @@ -0,0 +1,30 @@ +function show(type) +{ + count = 0; + for (var key in methods) { + var row = document.getElementById(key); + if ((methods[key] & type) != 0) { + row.style.display = ''; + row.className = (count++ % 2) ? rowColor : altColor; + } + else + row.style.display = 'none'; + } + updateTabs(type); +} + +function updateTabs(type) +{ + for (var value in tabs) { + var sNode = document.getElementById(tabs[value][0]); + var spanNode = sNode.firstChild; + if (value == type) { + sNode.className = activeTableTab; + spanNode.innerHTML = tabs[value][1]; + } + else { + sNode.className = tableTab; + spanNode.innerHTML = "" + tabs[value][1] + ""; + } + } +} diff --git a/docs/licenses/Apache FileUploader/site/apidocs/serialized-form.html b/docs/licenses/Apache FileUploader/site/apidocs/serialized-form.html new file mode 100644 index 0000000..43b6643 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/serialized-form.html @@ -0,0 +1,464 @@ + + + + + + +Serialized Form (Apache Commons FileUpload 1.3.2 API) + + + + + + + +
+ + + + + + + +
+ + +
+

Serialized Form

+
+
+ +
+ +
+ + + + + + + +
+ + +

Copyright © 2002–2016 The Apache Software Foundation. All rights reserved.

+ + diff --git a/docs/licenses/Apache FileUploader/site/apidocs/stylesheet.css b/docs/licenses/Apache FileUploader/site/apidocs/stylesheet.css new file mode 100644 index 0000000..98055b2 --- /dev/null +++ b/docs/licenses/Apache FileUploader/site/apidocs/stylesheet.css @@ -0,0 +1,574 @@ +/* Javadoc style sheet */ +/* +Overall document style +*/ + +@import url('resources/fonts/dejavu.css'); + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a:hover, a:focus { + text-decoration:none; + color:#bb7a2a; +} +a:active { + text-decoration:none; + color:#4A6782; +} +a[name] { + color:#353833; +} +a[name]:hover { + text-decoration:none; + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; + font-style:italic; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +table tr td dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +/* +Document title and Copyright styles +*/ +.clear { + clear:both; + height:0px; + overflow:hidden; +} +.aboutLanguage { + float:right; + padding:0px 21px; + font-size:11px; + z-index:200; + margin-top:-9px; +} +.legalCopy { + margin-left:.5em; +} +.bar a, .bar a:link, .bar a:visited, .bar a:active { + color:#FFFFFF; + text-decoration:none; +} +.bar a:hover, .bar a:focus { + color:#bb7a2a; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* +Navigation bar styles +*/ +.bar { + background-color:#4D7A97; + color:#FFFFFF; + padding:.8em .5em .4em .8em; + height:auto;/*height:1.8em;*/ + font-size:11px; + margin:0; +} +.topNav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.bottomNav { + margin-top:10px; + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.subNav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.subNav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +ul.navList, ul.subNavList { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.navList li{ + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +ul.subNavList li{ + list-style:none; + float:left; +} +.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.topNav a:hover, .bottomNav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.navBarCell1Rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skipNav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* +Page header and footer styles +*/ +.header, .footer { + clear:both; + margin:0 20px; + padding:5px 0 0 0; +} +.indexHeader { + margin:10px; + position:relative; +} +.indexHeader span{ + margin-right:15px; +} +.indexHeader h1 { + font-size:13px; +} +.title { + color:#2c4557; + margin:10px 0; +} +.subTitle { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.footer ul { + margin:20px 0 5px 0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* +Heading styles +*/ +div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList ul.blockList li.blockList h3 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +ul.blockList ul.blockList li.blockList h3 { + padding:0; + margin:15px 0; +} +ul.blockList li.blockList h2 { + padding:0px 0 20px 0; +} +/* +Page layout container styles +*/ +.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer { + clear:both; + padding:10px 20px; + position:relative; +} +.indexContainer { + margin:10px; + position:relative; + font-size:12px; +} +.indexContainer h2 { + font-size:13px; + padding:0 0 3px 0; +} +.indexContainer ul { + margin:0; + padding:0; +} +.indexContainer ul li { + list-style:none; + padding-top:2px; +} +.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt { + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd { + margin:5px 0 10px 0px; + font-size:14px; + font-family:'DejaVu Sans Mono',monospace; +} +.serializedFormContainer dl.nameValue dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +.serializedFormContainer dl.nameValue dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* +List styles +*/ +ul.horizontal li { + display:inline; + font-size:0.9em; +} +ul.inheritance { + margin:0; + padding:0; +} +ul.inheritance li { + display:inline; + list-style:none; +} +ul.inheritance li ul.inheritance { + margin-left:15px; + padding-left:15px; + padding-top:1px; +} +ul.blockList, ul.blockListLast { + margin:10px 0 10px 0; + padding:0; +} +ul.blockList li.blockList, ul.blockListLast li.blockList { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList { + padding:0px 20px 5px 10px; + border:1px solid #ededed; + background-color:#f8f8f8; +} +ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockList { + margin-left:0; + padding-left:0; + padding-bottom:15px; + border:none; +} +ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast { + list-style:none; + border-bottom:none; + padding-bottom:0; +} +table tr td dl, table tr td dl dt, table tr td dl dd { + margin-top:0; + margin-bottom:1px; +} +/* +Table styles +*/ +.overviewSummary, .memberSummary, .typeSummary, .useSummary, .constantsSummary, .deprecatedSummary { + width:100%; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.overviewSummary, .memberSummary { + padding:0px; +} +.overviewSummary caption, .memberSummary caption, .typeSummary caption, +.useSummary caption, .constantsSummary caption, .deprecatedSummary caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.overviewSummary caption a:link, .memberSummary caption a:link, .typeSummary caption a:link, +.useSummary caption a:link, .constantsSummary caption a:link, .deprecatedSummary caption a:link, +.overviewSummary caption a:hover, .memberSummary caption a:hover, .typeSummary caption a:hover, +.useSummary caption a:hover, .constantsSummary caption a:hover, .deprecatedSummary caption a:hover, +.overviewSummary caption a:active, .memberSummary caption a:active, .typeSummary caption a:active, +.useSummary caption a:active, .constantsSummary caption a:active, .deprecatedSummary caption a:active, +.overviewSummary caption a:visited, .memberSummary caption a:visited, .typeSummary caption a:visited, +.useSummary caption a:visited, .constantsSummary caption a:visited, .deprecatedSummary caption a:visited { + color:#FFFFFF; +} +.overviewSummary caption span, .memberSummary caption span, .typeSummary caption span, +.useSummary caption span, .constantsSummary caption span, .deprecatedSummary caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} +.memberSummary caption span.activeTableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#F8981D; + height:16px; +} +.memberSummary caption span.tableTab span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + margin-right:3px; + display:inline-block; + float:left; + background-color:#4D7A97; + height:16px; +} +.memberSummary caption span.tableTab, .memberSummary caption span.activeTableTab { + padding-top:0px; + padding-left:0px; + padding-right:0px; + background-image:none; + float:none; + display:inline; +} +.overviewSummary .tabEnd, .memberSummary .tabEnd, .typeSummary .tabEnd, +.useSummary .tabEnd, .constantsSummary .tabEnd, .deprecatedSummary .tabEnd { + display:none; + width:5px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .activeTableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + float:left; + background-color:#F8981D; +} +.memberSummary .tableTab .tabEnd { + display:none; + width:5px; + margin-right:3px; + position:relative; + background-color:#4D7A97; + float:left; + +} +.overviewSummary td, .memberSummary td, .typeSummary td, +.useSummary td, .constantsSummary td, .deprecatedSummary td { + text-align:left; + padding:0px 0px 12px 10px; +} +th.colOne, th.colFirst, th.colLast, .useSummary th, .constantsSummary th, +td.colOne, td.colFirst, td.colLast, .useSummary td, .constantsSummary td{ + vertical-align:top; + padding-right:0px; + padding-top:8px; + padding-bottom:3px; +} +th.colFirst, th.colLast, th.colOne, .constantsSummary th { + background:#dee3e9; + text-align:left; + padding:8px 3px 3px 7px; +} +td.colFirst, th.colFirst { + white-space:nowrap; + font-size:13px; +} +td.colLast, th.colLast { + font-size:13px; +} +td.colOne, th.colOne { + font-size:13px; +} +.overviewSummary td.colFirst, .overviewSummary th.colFirst, +.useSummary td.colFirst, .useSummary th.colFirst, +.overviewSummary td.colOne, .overviewSummary th.colOne, +.memberSummary td.colFirst, .memberSummary th.colFirst, +.memberSummary td.colOne, .memberSummary th.colOne, +.typeSummary td.colFirst{ + width:25%; + vertical-align:top; +} +td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { + font-weight:bold; +} +.tableSubHeadingColor { + background-color:#EEEEFF; +} +.altColor { + background-color:#FFFFFF; +} +.rowColor { + background-color:#EEEEEF; +} +/* +Content styles +*/ +.description pre { + margin-top:0; +} +.deprecatedContent { + margin:0; + padding:10px 0; +} +.docSummary { + padding:0; +} + +ul.blockList ul.blockList ul.blockList li.blockList h3 { + font-style:normal; +} + +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} + +td.colLast div { + padding-top:0px; +} + + +td.colLast a { + padding-bottom:3px; +} +/* +Formatting effect styles +*/ +.sourceLineNo { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:3px 10px 2px 0px; + color:#474747; +} +.deprecatedLabel, .descfrmTypeLabel, .memberNameLabel, .memberNameLink, +.overrideSpecifyLabel, .packageHierarchyLabel, .paramLabel, .returnLabel, +.seeLabel, .simpleTagLabel, .throwsLabel, .typeNameLabel, .typeNameLink { + font-weight:bold; +} +.deprecationComment, .emphasizedPhrase, .interfaceName { + font-style:italic; +} + +div.block div.block span.deprecationComment, div.block div.block span.emphasizedPhrase, +div.block div.block span.interfaceName { + font-style:normal; +} + +div.contentContainer ul.blockList li.blockList h2{ + padding-bottom:0px; +} diff --git a/docs/licenses/Apache Tomcat/LICENSE b/docs/licenses/Apache Tomcat/LICENSE new file mode 100644 index 0000000..e6a6baf --- /dev/null +++ b/docs/licenses/Apache Tomcat/LICENSE @@ -0,0 +1,1061 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + +APACHE TOMCAT SUBCOMPONENTS: + +Apache Tomcat includes a number of subcomponents with separate copyright notices +and license terms. Your use of these subcomponents is subject to the terms and +conditions of the following licenses. + + +For the Eclipse JDT Core Batch Compiler (ecj-x.x.x.jar) component: + +Eclipse Public License - v 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation +distributed under this Agreement, and + +b) in the case of each subsequent Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and are +distributed by that particular Contributor. A Contribution 'originates' from a +Contributor if it was added to the Program by such Contributor itself or anyone +acting on such Contributor's behalf. Contributions do not include additions to +the Program which: (i) are separate modules of software distributed in +conjunction with the Program under their own license agreement, and (ii) are not +derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents" mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free copyright license to +reproduce, prepare derivative works of, publicly display, publicly perform, +distribute and sublicense the Contribution of such Contributor, if any, and such +derivative works, in source code and object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed +Patents to make, use, sell, offer to sell, import and otherwise transfer the +Contribution of such Contributor, if any, in source code and object code form. +This patent license shall apply to the combination of the Contribution and the +Program if, at the time the Contribution is added by the Contributor, such +addition of the Contribution causes such combination to be covered by the +Licensed Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the licenses to +its Contributions set forth herein, no assurances are provided by any +Contributor that the Program does not infringe the patent or other intellectual +property rights of any other entity. Each Contributor disclaims any liability to +Recipient for claims brought by any other entity based on infringement of +intellectual property rights or otherwise. As a condition to exercising the +rights and licenses granted hereunder, each Recipient hereby assumes sole +responsibility to secure any other intellectual property rights needed, if any. +For example, if a third party patent license is required to allow Recipient to +distribute the Program, it is Recipient's responsibility to acquire that license +before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient copyright +rights in its Contribution, if any, to grant the copyright license set forth in +this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its +own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties and +conditions, express and implied, including warranties or conditions of title and +non-infringement, and implied warranties or conditions of merchantability and +fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and consequential +damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are offered by +that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such Contributor, +and informs licensees how to obtain it in a reasonable manner on or through a +medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the +Program. + +Each Contributor must identify itself as the originator of its Contribution, if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, if +a Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, damages +and costs (collectively "Losses") arising from claims, lawsuits and other legal +actions brought by a third party against the Indemnified Contributor to the +extent caused by the acts or omissions of such Commercial Contributor in +connection with its distribution of the Program in a commercial product +offering. The obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. In order +to qualify, an Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial Contributor +to control, and cooperate with the Commercial Contributor in, the defense and +any related settlement negotiations. The Indemnified Contributor may +participate in any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If that +Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such +Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a court +requires any other Contributor to pay any damages as a result, the Commercial +Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its exercise of +rights under this Agreement , including but not limited to the risks and costs +of program errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS +GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable +law, it shall not affect the validity or enforceability of the remainder of the +terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such +provision valid and enforceable. + +If Recipient institutes patent litigation against any entity (including a +cross-claim or counterclaim in a lawsuit) alleging that the Program itself +(excluding combinations of the Program with other software or hardware) +infringes such Recipient's patent(s), then such Recipient's rights granted under +Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to +comply with any of the material terms or conditions of this Agreement and does +not cure such failure in a reasonable period of time after becoming aware of +such noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement +and any licenses granted by Recipient relating to the Program shall continue and +survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to time. +No one other than the Agreement Steward has the right to modify this Agreement. +The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation +may assign the responsibility to serve as the Agreement Steward to a suitable +separate entity. Each new version of the Agreement will be given a +distinguishing version number. The Program (including Contributions) may always +be distributed subject to the version of the Agreement under which it was +received. In addition, after a new version of the Agreement is published, +Contributor may elect to distribute the Program (including its Contributions) +under the new version. Except as expressly stated in Sections 2(a) and 2(b) +above, Recipient receives no rights or licenses to the intellectual property of +any Contributor under this Agreement, whether expressly, by implication, +estoppel or otherwise. All rights in the Program not expressly granted under +this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial in +any resulting litigation. + + +For the Windows Installer component: + + * All NSIS source code, plug-ins, documentation, examples, header files and + graphics, with the exception of the compression modules and where + otherwise noted, are licensed under the zlib/libpng license. + * The zlib compression module for NSIS is licensed under the zlib/libpng + license. + * The bzip2 compression module for NSIS is licensed under the bzip2 license. + * The lzma compression module for NSIS is licensed under the Common Public + License version 1.0. + +zlib/libpng license + +This software is provided 'as-is', without any express or implied warranty. In +no event will the authors be held liable for any damages arising from the use of +this software. + +Permission is granted to anyone to use this software for any purpose, including +commercial applications, and to alter it and redistribute it freely, subject to +the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not claim + that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + +bzip2 license + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + 2. The origin of this software must not be misrepresented; you must not claim + that you wrote the original software. If you use this software in a + product, an acknowledgment in the product documentation would be + appreciated but is not required. + 3. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 4. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED +WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT +SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT +OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. + +Julian Seward, Cambridge, UK. + +jseward@acm.org +Common Public License version 1.0 + +THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC +LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM +CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT. + +1. DEFINITIONS + +"Contribution" means: + +a) in the case of the initial Contributor, the initial code and documentation +distributed under this Agreement, and b) in the case of each subsequent +Contributor: + +i) changes to the Program, and + +ii) additions to the Program; + +where such changes and/or additions to the Program originate from and are +distributed by that particular Contributor. A Contribution 'originates' from a +Contributor if it was added to the Program by such Contributor itself or anyone +acting on such Contributor's behalf. Contributions do not include additions to +the Program which: (i) are separate modules of software distributed in +conjunction with the Program under their own license agreement, and (ii) are not +derivative works of the Program. + +"Contributor" means any person or entity that distributes the Program. + +"Licensed Patents " mean patent claims licensable by a Contributor which are +necessarily infringed by the use or sale of its Contribution alone or when +combined with the Program. + +"Program" means the Contributions distributed in accordance with this Agreement. + +"Recipient" means anyone who receives the Program under this Agreement, +including all Contributors. + +2. GRANT OF RIGHTS + +a) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free copyright license to +reproduce, prepare derivative works of, publicly display, publicly perform, +distribute and sublicense the Contribution of such Contributor, if any, and such +derivative works, in source code and object code form. + +b) Subject to the terms of this Agreement, each Contributor hereby grants +Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed +Patents to make, use, sell, offer to sell, import and otherwise transfer the +Contribution of such Contributor, if any, in source code and object code form. +This patent license shall apply to the combination of the Contribution and the +Program if, at the time the Contribution is added by the Contributor, such +addition of the Contribution causes such combination to be covered by the +Licensed Patents. The patent license shall not apply to any other combinations +which include the Contribution. No hardware per se is licensed hereunder. + +c) Recipient understands that although each Contributor grants the licenses to +its Contributions set forth herein, no assurances are provided by any +Contributor that the Program does not infringe the patent or other intellectual +property rights of any other entity. Each Contributor disclaims any liability to +Recipient for claims brought by any other entity based on infringement of +intellectual property rights or otherwise. As a condition to exercising the +rights and licenses granted hereunder, each Recipient hereby assumes sole +responsibility to secure any other intellectual property rights needed, if any. +For example, if a third party patent license is required to allow Recipient to +distribute the Program, it is Recipient's responsibility to acquire that license +before distributing the Program. + +d) Each Contributor represents that to its knowledge it has sufficient copyright +rights in its Contribution, if any, to grant the copyright license set forth in +this Agreement. + +3. REQUIREMENTS + +A Contributor may choose to distribute the Program in object code form under its +own license agreement, provided that: + +a) it complies with the terms and conditions of this Agreement; and + +b) its license agreement: + +i) effectively disclaims on behalf of all Contributors all warranties and +conditions, express and implied, including warranties or conditions of title and +non-infringement, and implied warranties or conditions of merchantability and +fitness for a particular purpose; + +ii) effectively excludes on behalf of all Contributors all liability for +damages, including direct, indirect, special, incidental and consequential +damages, such as lost profits; + +iii) states that any provisions which differ from this Agreement are offered by +that Contributor alone and not by any other party; and + +iv) states that source code for the Program is available from such Contributor, +and informs licensees how to obtain it in a reasonable manner on or through a +medium customarily used for software exchange. + +When the Program is made available in source code form: + +a) it must be made available under this Agreement; and + +b) a copy of this Agreement must be included with each copy of the Program. + +Contributors may not remove or alter any copyright notices contained within the +Program. + +Each Contributor must identify itself as the originator of its Contribution, if +any, in a manner that reasonably allows subsequent Recipients to identify the +originator of the Contribution. + +4. COMMERCIAL DISTRIBUTION + +Commercial distributors of software may accept certain responsibilities with +respect to end users, business partners and the like. While this license is +intended to facilitate the commercial use of the Program, the Contributor who +includes the Program in a commercial product offering should do so in a manner +which does not create potential liability for other Contributors. Therefore, if +a Contributor includes the Program in a commercial product offering, such +Contributor ("Commercial Contributor") hereby agrees to defend and indemnify +every other Contributor ("Indemnified Contributor") against any losses, damages +and costs (collectively "Losses") arising from claims, lawsuits and other legal +actions brought by a third party against the Indemnified Contributor to the +extent caused by the acts or omissions of such Commercial Contributor in +connection with its distribution of the Program in a commercial product +offering. The obligations in this section do not apply to any claims or Losses +relating to any actual or alleged intellectual property infringement. In order +to qualify, an Indemnified Contributor must: a) promptly notify the Commercial +Contributor in writing of such claim, and b) allow the Commercial Contributor to +control, and cooperate with the Commercial Contributor in, the defense and any +related settlement negotiations. The Indemnified Contributor may participate in +any such claim at its own expense. + +For example, a Contributor might include the Program in a commercial product +offering, Product X. That Contributor is then a Commercial Contributor. If that +Commercial Contributor then makes performance claims, or offers warranties +related to Product X, those performance claims and warranties are such +Commercial Contributor's responsibility alone. Under this section, the +Commercial Contributor would have to defend claims against the other +Contributors related to those performance claims and warranties, and if a court +requires any other Contributor to pay any damages as a result, the Commercial +Contributor must pay those damages. + +5. NO WARRANTY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR +IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, +NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each +Recipient is solely responsible for determining the appropriateness of using and +distributing the Program and assumes all risks associated with its exercise of +rights under this Agreement, including but not limited to the risks and costs of +program errors, compliance with applicable laws, damage to or loss of data, +programs or equipment, and unavailability or interruption of operations. + +6. DISCLAIMER OF LIABILITY + +EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY +CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST +PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS +GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. GENERAL + +If any provision of this Agreement is invalid or unenforceable under applicable +law, it shall not affect the validity or enforceability of the remainder of the +terms of this Agreement, and without further action by the parties hereto, such +provision shall be reformed to the minimum extent necessary to make such +provision valid and enforceable. + +If Recipient institutes patent litigation against a Contributor with respect to +a patent applicable to software (including a cross-claim or counterclaim in a +lawsuit), then any patent licenses granted by that Contributor to such Recipient +under this Agreement shall terminate as of the date such litigation is filed. In +addition, if Recipient institutes patent litigation against any entity +(including a cross-claim or counterclaim in a lawsuit) alleging that the Program +itself (excluding combinations of the Program with other software or hardware) +infringes such Recipient's patent(s), then such Recipient's rights granted under +Section 2(b) shall terminate as of the date such litigation is filed. + +All Recipient's rights under this Agreement shall terminate if it fails to +comply with any of the material terms or conditions of this Agreement and does +not cure such failure in a reasonable period of time after becoming aware of +such noncompliance. If all Recipient's rights under this Agreement terminate, +Recipient agrees to cease use and distribution of the Program as soon as +reasonably practicable. However, Recipient's obligations under this Agreement +and any licenses granted by Recipient relating to the Program shall continue and +survive. + +Everyone is permitted to copy and distribute copies of this Agreement, but in +order to avoid inconsistency the Agreement is copyrighted and may only be +modified in the following manner. The Agreement Steward reserves the right to +publish new versions (including revisions) of this Agreement from time to time. +No one other than the Agreement Steward has the right to modify this Agreement. +IBM is the initial Agreement Steward. IBM may assign the responsibility to serve +as the Agreement Steward to a suitable separate entity. Each new version of the +Agreement will be given a distinguishing version number. The Program (including +Contributions) may always be distributed subject to the version of the Agreement +under which it was received. In addition, after a new version of the Agreement +is published, Contributor may elect to distribute the Program (including its +Contributions) under the new version. Except as expressly stated in Sections +2(a) and 2(b) above, Recipient receives no rights or licenses to the +intellectual property of any Contributor under this Agreement, whether +expressly, by implication, estoppel or otherwise. All rights in the Program not +expressly granted under this Agreement are reserved. + +This Agreement is governed by the laws of the State of New York and the +intellectual property laws of the United States of America. No party to this +Agreement will bring a legal action under this Agreement more than one year +after the cause of action arose. Each party waives its rights to a jury trial in +any resulting litigation. + +Special exception for LZMA compression module + +Igor Pavlov and Amir Szekely, the authors of the LZMA compression module for +NSIS, expressly permit you to statically or dynamically link your code (or bind +by name) to the files from the LZMA compression module for NSIS without +subjecting your linked code to the terms of the Common Public license version +1.0. Any modifications or additions to files from the LZMA compression module +for NSIS, however, are subject to the terms of the Common Public License version +1.0. + + +For the following XML Schemas for Java EE Deployment Descriptors: + - javaee_5.xsd + - javaee_web_services_1_2.xsd + - javaee_web_services_client_1_2.xsd + - javaee_6.xsd + - javaee_web_services_1_3.xsd + - javaee_web_services_client_1_3.xsd + - jsp_2_2.xsd + - web-app_3_0.xsd + - web-common_3_0.xsd + - web-fragment_3_0.xsd + - javaee_7.xsd + - javaee_web_services_1_4.xsd + - javaee_web_services_client_1_4.xsd + - jsp_2_3.xsd + - web-app_3_1.xsd + - web-common_3_1.xsd + - web-fragment_3_1.xsd + - javaee_8.xsd + - web-app_4_0.xsd + - web-common_4_0.xsd + - web-fragment_4_0.xsd + +COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0 + +1. Definitions. + + 1.1. Contributor. means each individual or entity that creates or contributes + to the creation of Modifications. + + 1.2. Contributor Version. means the combination of the Original Software, + prior Modifications used by a Contributor (if any), and the + Modifications made by that particular Contributor. + + 1.3. Covered Software. means (a) the Original Software, or (b) Modifications, + or (c) the combination of files containing Original Software with files + containing Modifications, in each case including portions thereof. + + 1.4. Executable. means the Covered Software in any form other than Source + Code. + + 1.5. Initial Developer. means the individual or entity that first makes + Original Software available under this License. + + 1.6. Larger Work. means a work which combines Covered Software or portions + thereof with code not governed by the terms of this License. + + 1.7. License. means this document. + + 1.8. Licensable. means having the right to grant, to the maximum extent + possible, whether at the time of the initial grant or subsequently + acquired, any and all of the rights conveyed herein. + + 1.9. Modifications. means the Source Code and Executable form of any of the + following: + + A. Any file that results from an addition to, deletion from or + modification of the contents of a file containing Original Software + or previous Modifications; + + B. Any new file that contains any part of the Original Software or + previous Modification; or + + C. Any new file that is contributed or otherwise made available under + the terms of this License. + + 1.10. Original Software. means the Source Code and Executable form of + computer software code that is originally released under this License. + + 1.11. Patent Claims. means any patent claim(s), now owned or hereafter + acquired, including without limitation, method, process, and apparatus + claims, in any patent Licensable by grantor. + + 1.12. Source Code. means (a) the common form of computer software code in + which modifications are made and (b) associated documentation included + in or with such code. + + 1.13. You. (or .Your.) means an individual or a legal entity exercising + rights under, and complying with all of the terms of, this License. For + legal entities, .You. includes any entity which controls, is controlled + by, or is under common control with You. For purposes of this + definition, .control. means (a) the power, direct or indirect, to cause + the direction or management of such entity, whether by contract or + otherwise, or (b) ownership of more than fifty percent (50%) of the + outstanding shares or beneficial ownership of such entity. + +2. License Grants. + + 2.1. The Initial Developer Grant. + + Conditioned upon Your compliance with Section 3.1 below and subject to + third party intellectual property claims, the Initial Developer hereby + grants You a world-wide, royalty-free, non-exclusive license: + + (a) under intellectual property rights (other than patent or trademark) + Licensable by Initial Developer, to use, reproduce, modify, display, + perform, sublicense and distribute the Original Software (or + portions thereof), with or without Modifications, and/or as part of + a Larger Work; and + + (b) under Patent Claims infringed by the making, using or selling of + Original Software, to make, have made, use, practice, sell, and + offer for sale, and/or otherwise dispose of the Original Software + (or portions thereof). + + (c) The licenses granted in Sections 2.1(a) and (b) are effective on the + date Initial Developer first distributes or otherwise makes the + Original Software available to a third party under the terms of this + License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is granted: + (1) for code that You delete from the Original Software, or (2) for + infringements caused by: (i) the modification of the Original + Software, or (ii) the combination of the Original Software with + other software or devices. + + 2.2. Contributor Grant. + + Conditioned upon Your compliance with Section 3.1 below and subject to third + party intellectual property claims, each Contributor hereby grants You a + world-wide, royalty-free, non-exclusive license: + + (a) under intellectual property rights (other than patent or trademark) + Licensable by Contributor to use, reproduce, modify, display, + perform, sublicense and distribute the Modifications created by such + Contributor (or portions thereof), either on an unmodified basis, + with other Modifications, as Covered Software and/or as part of a + Larger Work; and + + (b) under Patent Claims infringed by the making, using, or selling of + Modifications made by that Contributor either alone and/or in + combination with its Contributor Version (or portions of such + combination), to make, use, sell, offer for sale, have made, and/or + otherwise dispose of: (1) Modifications made by that Contributor (or + portions thereof); and (2) the combination of Modifications made by + that Contributor with its Contributor Version (or portions of such + combination). + + (c) The licenses granted in Sections 2.2(a) and 2.2(b) are effective on + the date Contributor first distributes or otherwise makes the + Modifications available to a third party. + + (d) Notwithstanding Section 2.2(b) above, no patent license is granted: + (1) for any code that Contributor has deleted from the Contributor + Version; (2) for infringements caused by: (i) third party + modifications of Contributor Version, or (ii) the combination of + Modifications made by that Contributor with other software (except + as part of the Contributor Version) or other devices; or (3) under + Patent Claims infringed by Covered Software in the absence of + Modifications made by that Contributor. + +3. Distribution Obligations. + + 3.1. Availability of Source Code. + Any Covered Software that You distribute or otherwise make available in + Executable form must also be made available in Source Code form and that + Source Code form must be distributed only under the terms of this License. + You must include a copy of this License with every copy of the Source Code + form of the Covered Software You distribute or otherwise make available. + You must inform recipients of any such Covered Software in Executable form + as to how they can obtain such Covered Software in Source Code form in a + reasonable manner on or through a medium customarily used for software + exchange. + + 3.2. Modifications. + The Modifications that You create or to which You contribute are governed + by the terms of this License. You represent that You believe Your + Modifications are Your original creation(s) and/or You have sufficient + rights to grant the rights conveyed by this License. + + 3.3. Required Notices. + You must include a notice in each of Your Modifications that identifies + You as the Contributor of the Modification. You may not remove or alter + any copyright, patent or trademark notices contained within the Covered + Software, or any notices of licensing or any descriptive text giving + attribution to any Contributor or the Initial Developer. + + 3.4. Application of Additional Terms. + You may not offer or impose any terms on any Covered Software in Source + Code form that alters or restricts the applicable version of this License + or the recipients. rights hereunder. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability obligations to + one or more recipients of Covered Software. However, you may do so only on + Your own behalf, and not on behalf of the Initial Developer or any + Contributor. You must make it absolutely clear that any such warranty, + support, indemnity or liability obligation is offered by You alone, and + You hereby agree to indemnify the Initial Developer and every Contributor + for any liability incurred by the Initial Developer or such Contributor as + a result of warranty, support, indemnity or liability terms You offer. + + 3.5. Distribution of Executable Versions. + You may distribute the Executable form of the Covered Software under the + terms of this License or under the terms of a license of Your choice, + which may contain terms different from this License, provided that You are + in compliance with the terms of this License and that the license for the + Executable form does not attempt to limit or alter the recipient.s rights + in the Source Code form from the rights set forth in this License. If You + distribute the Covered Software in Executable form under a different + license, You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial Developer + or Contributor. You hereby agree to indemnify the Initial Developer and + every Contributor for any liability incurred by the Initial Developer or + such Contributor as a result of any such terms You offer. + + 3.6. Larger Works. + You may create a Larger Work by combining Covered Software with other code + not governed by the terms of this License and distribute the Larger Work + as a single product. In such a case, You must make sure the requirements + of this License are fulfilled for the Covered Software. + +4. Versions of the License. + + 4.1. New Versions. + Sun Microsystems, Inc. is the initial license steward and may publish + revised and/or new versions of this License from time to time. Each + version will be given a distinguishing version number. Except as provided + in Section 4.3, no one other than the license steward has the right to + modify this License. + + 4.2. Effect of New Versions. + You may always continue to use, distribute or otherwise make the Covered + Software available under the terms of the version of the License under + which You originally received the Covered Software. If the Initial + Developer includes a notice in the Original Software prohibiting it from + being distributed or otherwise made available under any subsequent version + of the License, You must distribute and make the Covered Software + available under the terms of the version of the License under which You + originally received the Covered Software. Otherwise, You may also choose + to use, distribute or otherwise make the Covered Software available under + the terms of any subsequent version of the License published by the + license steward. + + 4.3. Modified Versions. + When You are an Initial Developer and You want to create a new license for + Your Original Software, You may create and use a modified version of this + License if You: (a) rename the license and remove any references to the + name of the license steward (except to note that the license differs from + this License); and (b) otherwise make it clear that the license contains + terms which differ from this License. + +5. DISCLAIMER OF WARRANTY. + + COVERED SOFTWARE IS PROVIDED UNDER THIS LICENSE ON AN .AS IS. BASIS, WITHOUT + WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT + LIMITATION, WARRANTIES THAT THE COVERED SOFTWARE IS FREE OF DEFECTS, + MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK + AS TO THE QUALITY AND PERFORMANCE OF THE COVERED SOFTWARE IS WITH YOU. SHOULD + ANY COVERED SOFTWARE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL + DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY + SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN + ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED SOFTWARE IS AUTHORIZED + HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +6. TERMINATION. + + 6.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to + cure such breach within 30 days of becoming aware of the breach. + Provisions which, by their nature, must remain in effect beyond the + termination of this License shall survive. + + 6.2. If You assert a patent infringement claim (excluding declaratory + judgment actions) against Initial Developer or a Contributor (the + Initial Developer or Contributor against whom You assert such claim + is referred to as .Participant.) alleging that the Participant + Software (meaning the Contributor Version where the Participant is a + Contributor or the Original Software where the Participant is the + Initial Developer) directly or indirectly infringes any patent, then + any and all rights granted directly or indirectly to You by such + Participant, the Initial Developer (if the Initial Developer is not + the Participant) and all Contributors under Sections 2.1 and/or 2.2 + of this License shall, upon 60 days notice from Participant terminate + prospectively and automatically at the expiration of such 60 day + notice period, unless if within such 60 day period You withdraw Your + claim with respect to the Participant Software against such + Participant either unilaterally or pursuant to a written agreement + with Participant. + + 6.3. In the event of termination under Sections 6.1 or 6.2 above, all end + user licenses that have been validly granted by You or any + distributor hereunder prior to termination (excluding licenses + granted to You by any distributor) shall survive termination. + +7. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING + NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY + OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED SOFTWARE, OR ANY SUPPLIER OF + ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, + INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT + LIMITATION, DAMAGES FOR LOST PROFITS, LOSS OF GOODWILL, WORK STOPPAGE, + COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR + LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF + SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR + DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY.S NEGLIGENCE TO THE EXTENT + APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS + EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +8. U.S. GOVERNMENT END USERS. + + The Covered Software is a .commercial item,. as that term is defined in 48 + C.F.R. 2.101 (Oct. 1995), consisting of .commercial computer software. (as + that term is defined at 48 C.F.R. ? 252.227-7014(a)(1)) and commercial + computer software documentation. as such terms are used in 48 C.F.R. 12.212 + (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 + through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered + Software with only those rights set forth herein. This U.S. Government Rights + clause is in lieu of, and supersedes, any other FAR, DFAR, or other clause or + provision that addresses Government rights in computer software under this + License. + +9. MISCELLANEOUS. + + This License represents the complete agreement concerning subject matter + hereof. If any provision of this License is held to be unenforceable, such + provision shall be reformed only to the extent necessary to make it + enforceable. This License shall be governed by the law of the jurisdiction + specified in a notice contained within the Original Software (except to the + extent applicable law, if any, provides otherwise), excluding such + jurisdiction's conflict-of-law provisions. Any litigation relating to this + License shall be subject to the jurisdiction of the courts located in the + jurisdiction and venue specified in a notice contained within the Original + Software, with the losing party responsible for costs, including, without + limitation, court costs and reasonable attorneys. fees and expenses. The + application of the United Nations Convention on Contracts for the + International Sale of Goods is expressly excluded. Any law or regulation + which provides that the language of a contract shall be construed against + the drafter shall not apply to this License. You agree that You alone are + responsible for compliance with the United States export administration + regulations (and the export control laws and regulation of any other + countries) when You use, distribute or otherwise make available any Covered + Software. + +10. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is responsible + for claims and damages arising, directly or indirectly, out of its + utilization of rights under this License and You agree to work with Initial + Developer and Contributors to distribute such responsibility on an equitable + basis. Nothing herein is intended or shall be deemed to constitute any + admission of liability. + + NOTICE PURSUANT TO SECTION 9 OF THE COMMON DEVELOPMENT AND DISTRIBUTION + LICENSE (CDDL) + + The code released under the CDDL shall be governed by the laws of the State + of California (excluding conflict-of-law provisions). Any litigation relating + to this License shall be subject to the jurisdiction of the Federal Courts of + the Northern District of California and the state courts of the State of + California, with venue lying in Santa Clara County, California. + diff --git a/docs/licenses/Apache Tomcat/NOTICE b/docs/licenses/Apache Tomcat/NOTICE new file mode 100644 index 0000000..3610c97 --- /dev/null +++ b/docs/licenses/Apache Tomcat/NOTICE @@ -0,0 +1,55 @@ +Apache Tomcat +Copyright 1999-2016 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). + +This software contains code derived from netty-native +developed by the Netty project +(http://netty.io, https://github.com/netty/netty-tcnative/) +and from finagle-native developed at Twitter +(https://github.com/twitter/finagle). + +The Windows Installer is built with the Nullsoft +Scriptable Install System (NSIS), which is +open source software. The original software and +related information is available at +http://nsis.sourceforge.net. + +Java compilation software for JSP pages is provided by the Eclipse +JDT Core Batch Compiler component, which is open source software. +The original software and related information is available at +http://www.eclipse.org/jdt/core/. + +For portions of the Tomcat JNI OpenSSL API and the OpenSSL JSSE integration +The org.apache.tomcat.jni and the org.apache.tomcat.net.openssl packages +are derivative work originating from the Netty project and the finagle-native +project developed at Twitter +* Copyright 2014 The Netty Project +* Copyright 2014 Twitter + +The original XML Schemas for Java EE Deployment Descriptors: + - javaee_5.xsd + - javaee_web_services_1_2.xsd + - javaee_web_services_client_1_2.xsd + - javaee_6.xsd + - javaee_web_services_1_3.xsd + - javaee_web_services_client_1_3.xsd + - jsp_2_2.xsd + - web-app_3_0.xsd + - web-common_3_0.xsd + - web-fragment_3_0.xsd + - javaee_7.xsd + - javaee_web_services_1_4.xsd + - javaee_web_services_client_1_4.xsd + - jsp_2_3.xsd + - web-app_3_1.xsd + - web-common_3_1.xsd + - web-fragment_3_1.xsd + - javaee_8.xsd + - web-app_4_0.xsd + - web-common_4_0.xsd + - web-fragment_4_0.xsd + +may be obtained from: +http://www.oracle.com/webfolder/technetwork/jsc/xml/ns/javaee/index.html diff --git a/docs/licenses/Apache Tomcat/RELEASE-NOTES b/docs/licenses/Apache Tomcat/RELEASE-NOTES new file mode 100644 index 0000000..4d5da54 --- /dev/null +++ b/docs/licenses/Apache Tomcat/RELEASE-NOTES @@ -0,0 +1,172 @@ +================================================================================ + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +================================================================================ + + + Apache Tomcat Version 9.0.0.M11 + Release Notes + + +========= +CONTENTS: +========= + +* Dependency Changes +* API Stability +* Bundled APIs +* Web application reloading and static fields in shared libraries +* Security manager URLs +* Symlinking static resources +* Viewing the Tomcat Change Log +* Cryptographic software notice +* When all else fails + + +=================== +Dependency Changes: +=================== +Tomcat 9.0 is designed to run on Java SE 8 and later. + + +============== +API Stability: +============== + +The public interfaces for the following classes are fixed and will not be +changed at all during the remaining lifetime of the 9.x series: +- None + +The public interfaces for the following classes may be added to in order to +resolve bugs and/or add new features. No existing interface method will be +removed or changed although it may be deprecated. +- None + +Note: As Tomcat 9 matures, the above list will be added to. The list is not + considered complete at this time. + +The remaining classes are considered part of the Tomcat internals and may change +without notice between point releases. + + +============= +Bundled APIs: +============= +A standard installation of Tomcat 9.0 makes all of the following APIs available +for use by web applications (by placing them in "lib"): +* annotations-api.jar (Annotations package) +* catalina.jar (Tomcat Catalina implementation) +* catalina-ant.jar (Tomcat Catalina Ant tasks) +* catalina-ha.jar (High availability package) +* catalina-storeconfig.jar (Generation of XML configuration from current state) +* catalina-tribes.jar (Group communication) +* ecj-4.5.1.jar (Eclipse JDT Java compiler) +* el-api.jar (EL 3.0 API) +* jasper.jar (Jasper 2 Compiler and Runtime) +* jasper-el.jar (Jasper 2 EL implementation) +* jsp-api.jar (JSP 2.3 API) +* servlet-api.jar (Servlet 4.0 API) +* tomcat-api.jar (Interfaces shared by Catalina and Jasper) +* tomcat-coyote.jar (Tomcat connectors and utility classes) +* tomcat-dbcp.jar (package renamed database connection pool based on Commons DBCP) +* tomcat-jdbc.jar (Tomcat's database connection pooling solution) +* tomcat-jni.jar (Interface to the native component of the APR/native connector) +* tomcat-util.jar (Various utilities) +* tomcat-websocket.jar (WebSocket 1.1 implementation) +* websocket-api.jar (WebSocket 1.1 API) + +You can make additional APIs available to all of your web applications by +putting unpacked classes into a "classes" directory (not created by default), +or by placing them in JAR files in the "lib" directory. + +To override the XML parser implementation or interfaces, use the appropriate +feature for your JVM. For Java <= 8 use the endorsed standards override +feature. For Java 9+ use the upgradeable modules feature. + + +================================================================ +Web application reloading and static fields in shared libraries: +================================================================ +Some shared libraries (many are part of the JDK) keep references to objects +instantiated by the web application. To avoid class loading related problems +(ClassCastExceptions, messages indicating that the classloader +is stopped, etc.), the shared libraries state should be reinitialized. + +Something which might help is to avoid putting classes which would be +referenced by a shared static field in the web application classloader, +and putting them in the shared classloader instead (JARs should be put in the +"lib" folder, and classes should be put in the "classes" folder). + + +====================== +Security manager URLs: +====================== +In order to grant security permissions to JARs located inside the +web application repository, use URLs of of the following format +in your policy file: + +file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar + + +============================ +Symlinking static resources: +============================ +By default, Unix symlinks will not work when used in a web application to link +resources located outside the web application root directory. + +This behavior is optional, and the "allowLinking" flag may be used to disable +the check. + + +============================== +Viewing the Tomcat Change Log: +============================== +The full change log is available from http://tomcat.apache.org and is also +included in the documentation web application. + + +============================= +Cryptographic software notice +============================= +This distribution includes cryptographic software. The country in +which you currently reside may have restrictions on the import, +possession, use, and/or re-export to another country, of +encryption software. BEFORE using any encryption software, please +check your country's laws, regulations and policies concerning the +import, possession, or use, and re-export of encryption software, to +see if this is permitted. See for more +information. + +The U.S. Government Department of Commerce, Bureau of Industry and +Security (BIS), has classified this software as Export Commodity +Control Number (ECCN) 5D002.C.1, which includes information security +software using or performing cryptographic functions with asymmetric +algorithms. The form and manner of this Apache Software Foundation +distribution makes it eligible for export under the License Exception +ENC Technology Software Unrestricted (TSU) exception (see the BIS +Export Administration Regulations, Section 740.13) for both object +code and source code. + +The following provides more details on the included cryptographic +software: + - Tomcat includes code designed to work with JSSE + - Tomcat includes code designed to work with OpenSSL + + +==================== +When all else fails: +==================== +See the FAQ +http://tomcat.apache.org/faq/
+ +