예제 #1
0
  static void testCopyInputStreamToFile(int size) throws IOException {
    Path tmpdir = createTempDirectory("blah");
    Path source = tmpdir.resolve("source");
    Path target = tmpdir.resolve("target");
    try {
      boolean testReplaceExisting = rand.nextBoolean();

      // create source file
      byte[] b = new byte[size];
      rand.nextBytes(b);
      write(source, b);

      // target file might already exist
      if (testReplaceExisting && rand.nextBoolean()) {
        write(target, new byte[rand.nextInt(512)]);
      }

      // copy from stream to file
      InputStream in = new FileInputStream(source.toFile());
      try {
        long n;
        if (testReplaceExisting) {
          n = copy(in, target, StandardCopyOption.REPLACE_EXISTING);
        } else {
          n = copy(in, target);
        }
        assertTrue(in.read() == -1); // EOF
        assertTrue(n == size);
        assertTrue(size(target) == size);
      } finally {
        in.close();
      }

      // check file
      byte[] read = readAllBytes(target);
      assertTrue(Arrays.equals(read, b));

    } finally {
      deleteIfExists(source);
      deleteIfExists(target);
      delete(tmpdir);
    }
  }
예제 #2
0
  static void testCopyFileToOuputStream(int size) throws IOException {
    Path source = createTempFile("blah", null);
    try {
      byte[] b = new byte[size];
      rand.nextBytes(b);
      write(source, b);

      ByteArrayOutputStream out = new ByteArrayOutputStream();

      long n = copy(source, out);
      assertTrue(n == size);
      assertTrue(out.size() == size);

      byte[] read = out.toByteArray();
      assertTrue(Arrays.equals(read, b));

      // check output stream is open
      out.write(0);
      assertTrue(out.size() == size + 1);
    } finally {
      delete(source);
    }
  }