Ошибка Android-открыть не удалось ENOENT
Я пытаюсь сохранить некоторое покрытие блока, используя массив целых чисел, который просто сохраняет количество раз, когда блок выполняется. По какой-то причине, однако, когда я пытаюсь написать в некоторые файлы, которые я создал ("BlockForHelper.txt " например, который я сделал специально в Eclipse и разместил в каталоге проекта), я получаю эту ошибку:
java.io.FileNotFoundException: /nfs/guille/groce/users/nicholsk/workspace3/SQLTest/BlockForTest: open failed: ENOENT (No such file or directory)
at libcore.io.IoBridge.open(IoBridge.java:416)
at java.io.FileOutputStream.<init>(FileOutputStream.java:88)
at java.io.FileOutputStream.<init>(FileOutputStream.java:73)
at com.example.sql2.SQLTest.blockCoverage(SQLTest.java:149)
at com.example.sql2.test.SQLTestCase.testSuite(SQLTestCase.java:41)
at java.lang.reflect.Method.invokeNative(Native Method)
at android.test.InstrumentationTestCase.runMethod(InstrumentationTestCase.java:214)
at android.test.InstrumentationTestCase.runTest(InstrumentationTestCase.java:199)
at android.test.ActivityInstrumentationTestCase2.runTest(ActivityInstrumentationTestCase2.java:192)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1584)
Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
at libcore.io.Posix.open(Native Method)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
at libcore.io.IoBridge.open(IoBridge.java:400)
... 18 more
и дает мне ошибку:
public void blockCoverage() throws IOException
{
String coverage = "";
for (int x = 0; x < 20; x++)
coverage += x + " " + bb_count[x] + "n";
File file = new File("/nfs/guille/groce/users/nicholsk/workspace3/SQLTest/BlockForTest.txt");
Writer out = new OutputStreamWriter(new FileOutputStream(file)); // Here
try
{
out.write(coverage);
} finally {
out.close();
}
}
кто-нибудь знает, что может быть причиной этого?
2 ответов
С SDK, вы не можете писать в корень внутренней памяти. Это вызывает вашу ошибку.
изменить :
на основе вашего кода, чтобы использовать внутреннее хранилище с sdk:
final File dir = new File(context.getFilesDir() + "/nfs/guille/groce/users/nicholsk/workspace3/SQLTest");
dir.mkdirs(); //create folders where write files
final File file = new File(dir, "BlockForTest.txt");
поместите текстовый файл в каталог assets. Если нет assets dir, создайте его в корне проекта. Тогда вы можете использовать Context.getAssets().open("BlockForTest.txt");
чтобы открыть поток для этого файла.