|
Java example source code file (FilesTest.java)
The FilesTest.java Java example source code/* * Copyright (C) 2007 The Guava Authors * * 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. */ package com.google.common.io; import static com.google.common.io.Files.createTempDir; import static com.google.common.io.Files.touch; import static com.google.common.truth.Truth.assertThat; import com.google.common.base.Charsets; import com.google.common.collect.ImmutableList; import com.google.common.hash.Hashing; import com.google.common.primitives.Bytes; import junit.framework.TestSuite; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel.MapMode; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; /** * Unit test for {@link Files}. * * @author Chris Nokleberg */ public class FilesTest extends IoTestCase { public static TestSuite suite() { TestSuite suite = new TestSuite(); suite.addTest(ByteSourceTester.tests("Files.asByteSource[File]", SourceSinkFactories.fileByteSourceFactory(), true)); suite.addTest(ByteSinkTester.tests("Files.asByteSink[File]", SourceSinkFactories.fileByteSinkFactory())); suite.addTest(ByteSinkTester.tests("Files.asByteSink[File, APPEND]", SourceSinkFactories.appendingFileByteSinkFactory())); suite.addTest(CharSourceTester.tests("Files.asCharSource[File, Charset]", SourceSinkFactories.fileCharSourceFactory(), false)); suite.addTest(CharSinkTester.tests("Files.asCharSink[File, Charset]", SourceSinkFactories.fileCharSinkFactory())); suite.addTest(CharSinkTester.tests("Files.asCharSink[File, Charset, APPEND]", SourceSinkFactories.appendingFileCharSinkFactory())); suite.addTestSuite(FilesTest.class); return suite; } public void testRoundTripSources() throws Exception { File asciiFile = getTestFile("ascii.txt"); ByteSource byteSource = Files.asByteSource(asciiFile); assertSame(byteSource, byteSource.asCharSource(Charsets.UTF_8).asByteSource(Charsets.UTF_8)); } public void testToByteArray() throws IOException { File asciiFile = getTestFile("ascii.txt"); File i18nFile = getTestFile("i18n.txt"); assertTrue(Arrays.equals(ASCII.getBytes(Charsets.US_ASCII), Files.toByteArray(asciiFile))); assertTrue(Arrays.equals(I18N.getBytes(Charsets.UTF_8), Files.toByteArray(i18nFile))); assertTrue(Arrays.equals(I18N.getBytes(Charsets.UTF_8), Files.asByteSource(i18nFile).read())); } public void testReadFile_withCorrectSize() throws IOException { File asciiFile = getTestFile("ascii.txt"); Closer closer = Closer.create(); try { InputStream in = closer.register(new FileInputStream(asciiFile)); byte[] bytes = Files.readFile(in, asciiFile.length()); assertTrue(Arrays.equals(ASCII.getBytes(Charsets.US_ASCII), bytes)); } catch (Throwable e) { throw closer.rethrow(e); } finally { closer.close(); } } public void testReadFile_withSmallerSize() throws IOException { File asciiFile = getTestFile("ascii.txt"); Closer closer = Closer.create(); try { InputStream in = closer.register(new FileInputStream(asciiFile)); byte[] bytes = Files.readFile(in, 10); assertTrue(Arrays.equals(ASCII.getBytes(Charsets.US_ASCII), bytes)); } catch (Throwable e) { throw closer.rethrow(e); } finally { closer.close(); } } public void testReadFile_withLargerSize() throws IOException { File asciiFile = getTestFile("ascii.txt"); Closer closer = Closer.create(); try { InputStream in = closer.register(new FileInputStream(asciiFile)); byte[] bytes = Files.readFile(in, 500); assertTrue(Arrays.equals(ASCII.getBytes(Charsets.US_ASCII), bytes)); } catch (Throwable e) { throw closer.rethrow(e); } finally { closer.close(); } } public void testReadFile_withSizeZero() throws IOException { File asciiFile = getTestFile("ascii.txt"); Closer closer = Closer.create(); try { InputStream in = closer.register(new FileInputStream(asciiFile)); byte[] bytes = Files.readFile(in, 0); assertTrue(Arrays.equals(ASCII.getBytes(Charsets.US_ASCII), bytes)); } catch (Throwable e) { throw closer.rethrow(e); } finally { closer.close(); } } /** * A {@link File} that provides a specialized value for {@link File#length()}. */ private static class BadLengthFile extends File { private final long badLength; public BadLengthFile(File delegate, long badLength) { super(delegate.getPath()); this.badLength = badLength; } @Override public long length() { return badLength; } private static final long serialVersionUID = 0; } public void testToString() throws IOException { File asciiFile = getTestFile("ascii.txt"); File i18nFile = getTestFile("i18n.txt"); assertEquals(ASCII, Files.toString(asciiFile, Charsets.US_ASCII)); assertEquals(I18N, Files.toString(i18nFile, Charsets.UTF_8)); assertThat(Files.toString(i18nFile, Charsets.US_ASCII)) .isNotEqualTo(I18N); } public void testWriteString() throws IOException { File temp = createTempFile(); Files.write(I18N, temp, Charsets.UTF_16LE); assertEquals(I18N, Files.toString(temp, Charsets.UTF_16LE)); } public void testWriteBytes() throws IOException { File temp = createTempFile(); byte[] data = newPreFilledByteArray(2000); Files.write(data, temp); assertTrue(Arrays.equals(data, Files.toByteArray(temp))); try { Files.write(null, temp); fail("expected exception"); } catch (NullPointerException expected) { } } public void testAppendString() throws IOException { File temp = createTempFile(); Files.append(I18N, temp, Charsets.UTF_16LE); assertEquals(I18N, Files.toString(temp, Charsets.UTF_16LE)); Files.append(I18N, temp, Charsets.UTF_16LE); assertEquals(I18N + I18N, Files.toString(temp, Charsets.UTF_16LE)); Files.append(I18N, temp, Charsets.UTF_16LE); assertEquals(I18N + I18N + I18N, Files.toString(temp, Charsets.UTF_16LE)); } public void testCopyToOutputStream() throws IOException { File i18nFile = getTestFile("i18n.txt"); ByteArrayOutputStream out = new ByteArrayOutputStream(); Files.copy(i18nFile, out); assertEquals(I18N, out.toString("UTF-8")); } public void testCopyToAppendable() throws IOException { File i18nFile = getTestFile("i18n.txt"); StringBuilder sb = new StringBuilder(); Files.copy(i18nFile, Charsets.UTF_8, sb); assertEquals(I18N, sb.toString()); } public void testCopyFile() throws IOException { File i18nFile = getTestFile("i18n.txt"); File temp = createTempFile(); Files.copy(i18nFile, temp); assertEquals(I18N, Files.toString(temp, Charsets.UTF_8)); } public void testCopyEqualFiles() throws IOException { File temp1 = createTempFile(); File temp2 = file(temp1.getPath()); assertEquals(temp1, temp2); Files.write(ASCII, temp1, Charsets.UTF_8); try { Files.copy(temp1, temp2); fail("Expected an IAE to be thrown but wasn't"); } catch (IllegalArgumentException expected) { } assertEquals(ASCII, Files.toString(temp1, Charsets.UTF_8)); } public void testCopySameFile() throws IOException { File temp = createTempFile(); Files.write(ASCII, temp, Charsets.UTF_8); try { Files.copy(temp, temp); fail("Expected an IAE to be thrown but wasn't"); } catch (IllegalArgumentException expected) { } assertEquals(ASCII, Files.toString(temp, Charsets.UTF_8)); } public void testCopyIdenticalFiles() throws IOException { File temp1 = createTempFile(); Files.write(ASCII, temp1, Charsets.UTF_8); File temp2 = createTempFile(); Files.write(ASCII, temp2, Charsets.UTF_8); Files.copy(temp1, temp2); assertEquals(ASCII, Files.toString(temp1, Charsets.UTF_8)); } public void testEqual() throws IOException { File asciiFile = getTestFile("ascii.txt"); File i18nFile = getTestFile("i18n.txt"); assertFalse(Files.equal(asciiFile, i18nFile)); assertTrue(Files.equal(asciiFile, asciiFile)); File temp = createTempFile(); Files.copy(asciiFile, temp); assertTrue(Files.equal(asciiFile, temp)); Files.copy(i18nFile, temp); assertTrue(Files.equal(i18nFile, temp)); Files.copy(asciiFile, temp); RandomAccessFile rf = new RandomAccessFile(temp, "rw"); rf.writeByte(0); rf.close(); assertEquals(asciiFile.length(), temp.length()); assertFalse(Files.equal(asciiFile, temp)); assertTrue(Files.asByteSource(asciiFile) .contentEquals(Files.asByteSource(asciiFile))); // 0-length files have special treatment (/proc, etc.) assertTrue(Files.equal(asciiFile, new BadLengthFile(asciiFile, 0))); } public void testNewReader() throws IOException { File asciiFile = getTestFile("ascii.txt"); try { Files.newReader(asciiFile, null); fail("expected exception"); } catch (NullPointerException expected) { } try { Files.newReader(null, Charsets.UTF_8); fail("expected exception"); } catch (NullPointerException expected) { } BufferedReader r = Files.newReader(asciiFile, Charsets.US_ASCII); try { assertEquals(ASCII, r.readLine()); } finally { r.close(); } } public void testNewWriter() throws IOException { File temp = createTempFile(); try { Files.newWriter(temp, null); fail("expected exception"); } catch (NullPointerException expected) { } try { Files.newWriter(null, Charsets.UTF_8); fail("expected exception"); } catch (NullPointerException expected) { } BufferedWriter w = Files.newWriter(temp, Charsets.UTF_8); try { w.write(I18N); } finally { w.close(); } File i18nFile = getTestFile("i18n.txt"); assertTrue(Files.equal(i18nFile, temp)); } public void testTouch() throws IOException { File temp = createTempFile(); assertTrue(temp.exists()); assertTrue(temp.delete()); assertFalse(temp.exists()); Files.touch(temp); assertTrue(temp.exists()); Files.touch(temp); assertTrue(temp.exists()); try { Files.touch(new File(temp.getPath()) { @Override public boolean setLastModified(long t) { return false; } private static final long serialVersionUID = 0; }); fail("expected exception"); } catch (IOException expected) { } } public void testTouchTime() throws IOException { File temp = createTempFile(); assertTrue(temp.exists()); temp.setLastModified(0); assertEquals(0, temp.lastModified()); Files.touch(temp); assertThat(temp.lastModified()).isNotEqualTo(0); } public void testCreateParentDirs_root() throws IOException { File file = root(); assertNull(file.getParentFile()); assertNull(file.getCanonicalFile().getParentFile()); Files.createParentDirs(file); } public void testCreateParentDirs_relativePath() throws IOException { File file = file("nonexistent.file"); assertNull(file.getParentFile()); assertNotNull(file.getCanonicalFile().getParentFile()); Files.createParentDirs(file); } public void testCreateParentDirs_noParentsNeeded() throws IOException { File file = file(getTempDir(), "nonexistent.file"); assertTrue(file.getParentFile().exists()); Files.createParentDirs(file); } public void testCreateParentDirs_oneParentNeeded() throws IOException { File file = file(getTempDir(), "parent", "nonexistent.file"); File parent = file.getParentFile(); assertFalse(parent.exists()); try { Files.createParentDirs(file); assertTrue(parent.exists()); } finally { assertTrue(parent.delete()); } } public void testCreateParentDirs_multipleParentsNeeded() throws IOException { File file = file(getTempDir(), "grandparent", "parent", "nonexistent.file"); File parent = file.getParentFile(); File grandparent = parent.getParentFile(); assertFalse(grandparent.exists()); Files.createParentDirs(file); assertTrue(parent.exists()); } public void testCreateParentDirs_nonDirectoryParentExists() throws IOException { File parent = getTestFile("ascii.txt"); assertTrue(parent.isFile()); File file = file(parent, "foo"); try { Files.createParentDirs(file); fail(); } catch (IOException expected) { } } public void testCreateTempDir() { File temp = Files.createTempDir(); assertTrue(temp.exists()); assertTrue(temp.isDirectory()); assertThat(temp.listFiles()).isEmpty(); assertTrue(temp.delete()); } public void testMove() throws IOException { File i18nFile = getTestFile("i18n.txt"); File temp1 = createTempFile(); File temp2 = createTempFile(); Files.copy(i18nFile, temp1); moveHelper(true, temp1, temp2); assertTrue(Files.equal(temp2, i18nFile)); } public void testMoveViaCopy() throws IOException { File i18nFile = getTestFile("i18n.txt"); File temp1 = createTempFile(); File temp2 = createTempFile(); Files.copy(i18nFile, temp1); moveHelper(true, new UnmovableFile(temp1, false, true), temp2); assertTrue(Files.equal(temp2, i18nFile)); } public void testMoveFailures() throws IOException { File temp1 = createTempFile(); File temp2 = createTempFile(); moveHelper(false, new UnmovableFile(temp1, false, false), temp2); moveHelper(false, new UnmovableFile(temp1, false, false), new UnmovableFile(temp2, true, false)); try { File asciiFile = getTestFile("ascii.txt"); moveHelper(false, asciiFile, asciiFile); fail("expected exception"); } catch (IllegalArgumentException expected) { } } private void moveHelper(boolean success, File from, File to) throws IOException { try { Files.move(from, to); if (success) { assertFalse(from.exists()); assertTrue(to.exists()); } else { fail("expected exception"); } } catch (IOException possiblyExpected) { if (success) { throw possiblyExpected; } } } private static class UnmovableFile extends File { private final boolean canRename; private final boolean canDelete; public UnmovableFile(File file, boolean canRename, boolean canDelete) { super(file.getPath()); this.canRename = canRename; this.canDelete = canDelete; } @Override public boolean renameTo(File to) { return canRename && super.renameTo(to); } @Override public boolean delete() { return canDelete && super.delete(); } private static final long serialVersionUID = 0; } public void testLineReading() throws IOException { File temp = createTempFile(); assertNull(Files.readFirstLine(temp, Charsets.UTF_8)); assertTrue(Files.readLines(temp, Charsets.UTF_8).isEmpty()); PrintWriter w = new PrintWriter(Files.newWriter(temp, Charsets.UTF_8)); w.println("hello"); w.println(""); w.println(" world "); w.println(""); w.close(); assertEquals("hello", Files.readFirstLine(temp, Charsets.UTF_8)); assertEquals(ImmutableList.of("hello", "", " world ", ""), Files.readLines(temp, Charsets.UTF_8)); assertTrue(temp.delete()); } public void testReadLines_withLineProcessor() throws IOException { File temp = createTempFile(); LineProcessor<List Other Java examples (source code examples)Here is a short list of links related to this Java FilesTest.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.