Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Android Android Data Persistence File Storage Writing to Internal Storage

Nancy Melucci
PLUS
Nancy Melucci
Courses Plus Student 35,157 Points

Code posted in forums doesn't seem to pass...

If anyone is out there, the code posted above is NOT working for me. I am getting this error:

./FileUtilities.java:28: error: cannot find symbol if (fileToWrite.exists() == false) { copyResult = copyFile(in, out); } ^ symbol: variable fileToWrite location: class FileUtilities 1 error

Posting my code below. Thanks.

FileUtilities.java
import java.io.InputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

public class FileUtilities {

  public static boolean copyResult;

  public static void saveAssetImage(Context context, String assetName) {
    File fileToWrite = new File(context.getFilesDir(), assetName);
    AssetManager assetManager = context.getAssets();

    try {
      InputStream in = assetManager.open(assetName);
      FileOutputStream out = new FileOutputStream(fileToWrite);
      copyResult = copyFile(in, out);
    } catch(FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  private static boolean copyFile(InputStream in, FileOutputStream out) {
    // Copy magic intentionally omitted
     byte[] buffer = new byte[1024];
        int read;
    if (fileToWrite.exists() == false) { copyResult = copyFile(in, out); }

  }
}

2 Answers

I would suggest passing fileToWrite through the method call. The method CopyFile doesn't know what to do with that variable since it was not declared in that method.