diff --git a/src/main/java/com/android/tools/r8/bisect/Bisect.java b/src/main/java/com/android/tools/r8/bisect/Bisect.java
index 7a483ad..ca6b334 100644
--- a/src/main/java/com/android/tools/r8/bisect/Bisect.java
+++ b/src/main/java/com/android/tools/r8/bisect/Bisect.java
@@ -16,11 +16,11 @@
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.Timing;
 import com.google.common.io.CharStreams;
-import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.List;
@@ -91,12 +91,9 @@
     // Setup output directory (or write to a temp dir).
     Path output;
     if (options.output != null) {
-      output = options.output.toPath();
+      output = options.output;
     } else {
-      File temp = File.createTempFile("bisect", "", new File("/tmp"));
-      temp.delete();
-      temp.mkdir();
-      output = temp.toPath();
+      output = Files.createTempDirectory("bisect");
     }
 
     ExecutorService executor = Executors.newWorkStealingPool();
@@ -104,9 +101,8 @@
       DexApplication goodApp = readApp(options.goodBuild, executor);
       DexApplication badApp = readApp(options.badBuild, executor);
 
-      File stateFile = options.stateFile != null
-          ? options.stateFile
-          : output.resolve("bisect.state").toFile();
+      Path stateFile =
+          options.stateFile != null ? options.stateFile : output.resolve("bisect.state");
 
       // Setup initial (or saved) bisection state.
       BisectState state = new BisectState(goodApp, badApp, stateFile);
@@ -168,9 +164,9 @@
     throw new CompilationError("Failed to run command " + args);
   }
 
-  private DexApplication readApp(File apk, ExecutorService executor)
+  private DexApplication readApp(Path apk, ExecutorService executor)
       throws IOException, ExecutionException {
-    AndroidApp app = AndroidApp.builder().addProgramFiles(apk.toPath()).build();
+    AndroidApp app = AndroidApp.builder().addProgramFiles(apk).build();
     return new ApplicationReader(app, new InternalOptions(), timing).read(executor);
   }
 
diff --git a/src/main/java/com/android/tools/r8/bisect/BisectOptions.java b/src/main/java/com/android/tools/r8/bisect/BisectOptions.java
index 8bd2c90..4f59900 100644
--- a/src/main/java/com/android/tools/r8/bisect/BisectOptions.java
+++ b/src/main/java/com/android/tools/r8/bisect/BisectOptions.java
@@ -4,9 +4,11 @@
 package com.android.tools.r8.bisect;
 
 import com.android.tools.r8.errors.CompilationError;
-import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import joptsimple.OptionParser;
 import joptsimple.OptionSet;
 import joptsimple.OptionSpec;
@@ -21,11 +23,11 @@
   public static final String OUTPUT_FLAG = "output";
   public static final String COMMAND_FLAG = "command";
 
-  public final File goodBuild;
-  public final File badBuild;
-  public final File stateFile;
-  public final File command;
-  public final File output;
+  public final Path goodBuild;
+  public final Path badBuild;
+  public final Path stateFile;
+  public final Path command;
+  public final Path output;
   public final Result result;
 
   public enum Result { UNKNOWN, GOOD, BAD }
@@ -76,8 +78,8 @@
     }
   }
 
-  private BisectOptions(File goodBuild, File badBuild, File stateFile, File command, File output,
-      Result result) {
+  private BisectOptions(
+      Path goodBuild, Path badBuild, Path stateFile, Path command, Path output, Result result) {
     this.goodBuild = goodBuild;
     this.badBuild = badBuild;
     this.stateFile = stateFile;
@@ -93,17 +95,17 @@
       printHelp(System.out);
       return null;
     }
-    File goodBuild = exists(require(options, parser.goodBuild, BUILD_GOOD_FLAG), BUILD_GOOD_FLAG);
-    File badBuild = exists(require(options, parser.badBuild, BUILD_BAD_FLAG), BUILD_BAD_FLAG);
-    File stateFile = null;
+    Path goodBuild = exists(require(options, parser.goodBuild, BUILD_GOOD_FLAG), BUILD_GOOD_FLAG);
+    Path badBuild = exists(require(options, parser.badBuild, BUILD_BAD_FLAG), BUILD_BAD_FLAG);
+    Path stateFile = null;
     if (options.valueOf(parser.stateFile) != null) {
       stateFile = exists(options.valueOf(parser.stateFile), STATE_FLAG);
     }
-    File command = null;
+    Path command = null;
     if (options.valueOf(parser.command) != null) {
       command = exists(options.valueOf(parser.command), COMMAND_FLAG);
     }
-    File output = null;
+    Path output = null;
     if (options.valueOf(parser.output) != null) {
       output = directoryExists(options.valueOf(parser.output), OUTPUT_FLAG);
     }
@@ -129,17 +131,17 @@
     throw new CompilationError("Missing required option: --" + flag);
   }
 
-  private static File exists(String path, String flag) {
-    File file = new File(path);
-    if (file.exists()) {
+  private static Path exists(String path, String flag) {
+    Path file = Paths.get(path);
+    if (Files.exists(file)) {
       return file;
     }
     throw new CompilationError("File --" + flag + ": " + file + " does not exist");
   }
 
-  private static File directoryExists(String path, String flag) {
-    File file = new File(path);
-    if (file.exists() && file.isDirectory()) {
+  private static Path directoryExists(String path, String flag) {
+    Path file = Paths.get(path);
+    if (Files.exists(file) && Files.isDirectory(file)) {
       return file;
     }
     throw new CompilationError("File --" + flag + ": " + file + " is not a valid directory");
diff --git a/src/main/java/com/android/tools/r8/bisect/BisectState.java b/src/main/java/com/android/tools/r8/bisect/BisectState.java
index cb3bf6e..5500637 100644
--- a/src/main/java/com/android/tools/r8/bisect/BisectState.java
+++ b/src/main/java/com/android/tools/r8/bisect/BisectState.java
@@ -15,12 +15,11 @@
 import com.google.common.collect.ImmutableMap;
 import com.google.common.hash.Hashing;
 import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
+import java.io.BufferedWriter;
 import java.io.IOException;
 import java.io.Writer;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
@@ -147,14 +146,14 @@
   private final DexApplication badApp;
   private final List<DexProgramClass> sortedGoodClasses;
   private final Map<DexType, Integer> indexMap;
-  private final File stateFile;
+  private final Path stateFile;
 
   private List<Run> runs = new ArrayList<>();
 
   // Computed data
   private Range nextRange = null;
 
-  public BisectState(DexApplication goodApp, DexApplication badApp, File stateFile) {
+  public BisectState(DexApplication goodApp, DexApplication badApp, Path stateFile) {
     this.badApp = badApp;
     this.stateFile = stateFile;
     signature = makeSignature(goodApp);
@@ -174,12 +173,12 @@
     if (stateFile == null) {
       return;
     }
-    if (!Files.exists(stateFile.toPath())) {
+    if (!Files.exists(stateFile)) {
       System.out.println("Assuming initial run for non-existent state file: " + stateFile);
       return;
     }
     List<String> data = new ArrayList<>();
-    try (BufferedReader reader = new BufferedReader(new FileReader(stateFile))) {
+    try (BufferedReader reader = Files.newBufferedReader(stateFile)) {
       if (!signature.equals(readSignature(reader))) {
         throw new CompilationError(
             "Bisection state file does not match the reference build signature");
@@ -310,7 +309,7 @@
     if (stateFile == null) {
       return;
     }
-    try (FileWriter writer = new FileWriter(stateFile, false)) {
+    try (BufferedWriter writer = Files.newBufferedWriter(stateFile)) {
       writer.write(signature);
       writer.write("\n");
       for (Run run : runs) {
diff --git a/src/test/java/com/android/tools/r8/bisect/BisectTest.java b/src/test/java/com/android/tools/r8/bisect/BisectTest.java
index 5c67c83..dd47a3e 100644
--- a/src/test/java/com/android/tools/r8/bisect/BisectTest.java
+++ b/src/test/java/com/android/tools/r8/bisect/BisectTest.java
@@ -79,7 +79,7 @@
         Timing timing = new Timing("bisect-test");
         DexApplication appGood = new ApplicationReader(goodInput, options, timing).read();
         DexApplication appBad = new ApplicationReader(badInput, options, timing).read();
-        BisectState state = new BisectState(appGood, appBad, stateFile.toFile());
+        BisectState state = new BisectState(appGood, appBad, stateFile);
         state.read();
         if (lastResult != Result.UNKNOWN) {
           state.setPreviousResult(lastResult);
