gpt4 book ai didi

android - 将文件写入 getFilesDir() 失败 - NoSuchElementException

转载 作者:行者123 更新时间:2023-11-30 03:43:39 26 4
gpt4 key购买 nike

这是我正在做的:

1- 从我的 Assets 中获取文件并将其放入字符串中 - 成功

2- 在 getFilesDir() 中创建一个文件 - 失败(还没有崩溃)

3- 使用 FileWriter 将我得到的字符串写入此文件 - 失败(尚未崩溃)

4- 读取我刚刚制作的新文件 - 失败(抛出 NoSuchElementException)

这是你必须看到的东西:

我用过的一个小有用的方法:

public String inputStreamToString(InputStream stream){

Scanner s = new Scanner(stream).useDelimiter("\\A");
String aa = s.next();
return aa;

}

MainActivity.java 的 fragment :

//B2 and text are a well defined Button and TextView respectively, ensured through previous testings
B2.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

AssetManager as = getAssets();
InputStream stream = null;
try {
stream = as.open("updater-script");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Scanner s = new Scanner(stream).useDelimiter("\\A");
String aa = s.next();
text.setText(aa);

File file = new File(getFilesDir() + "/updater-script");
try {
boolean b = file.createNewFile(); //returns false, indicating the file wasn't made
text.setText(text.getText()+String.valueOf(b));
new File(getFilesDir().getAbsolutePath()).mkdirs();
FileWriter write = new FileWriter(getFilesDir().toString()+File.pathSeparator+"updater-script");
Show(getFilesDir().toString());
write.write(aa);
write.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
B2.setOnLongClickListener(new View.OnLongClickListener() {

@Override
public boolean onLongClick(View v) {
File file = new File(getFilesDir(), "updater-script");
try {
FileInputStream in = new FileInputStream(file);
String aa = inputStreamToString(in);
text.setText(aa);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


return true;
}
});

我的 list :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="seaskyways.testingproject"
android:versionCode="1"
android:versionName="beta" >

<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="17" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STROAGE"/>
<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/Theme.Sherlock" >
<activity
android:name="seaskyways.testingproject.MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Holo"
android:uiOptions="splitActionBarWhenNarrow" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="seaskyways.testingproject.MenuActivity"
android:label="@string/title_activity_menu" >
</activity>
<activity
android:name="seaskyways.testingproject.Splash"
android:label="@string/title_activity_splash"
android:theme="@style/Theme.Sherlock.Dialog" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="seaskyways.testingproject.HorizontalScrollView"
android:label="@string/title_activity_splash" >
<intent-filter>
<action android:name="android.intent.action.HSV" />

<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="seaskyways.testingproject.ExpandableLists"
android:label="@string/title_activity_expandable_lists"
android:parentActivityName="seaskyways.testingproject.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="seaskyways.testingproject.MainActivity" />
</activity>
<activity
android:name="seaskyways.testingproject.SwipeStrips"
android:label="@string/title_activity_swipe_tabs"
android:parentActivityName="seaskyways.testingproject.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="seaskyways.testingproject.MainActivity" />
</activity>
<activity
android:name="seaskyways.testingproject.SwipeTabs"
android:label="@string/title_activity_swipe_tabs"
android:parentActivityName="seaskyways.testingproject.MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="seaskyways.testingproject.MainActivity" />
</activity>
</application>

</manifest>

堆栈跟踪:

03-11 21:23:08.241: E/AndroidRuntime(3958): FATAL EXCEPTION: main
03-11 21:23:08.241: E/AndroidRuntime(3958): java.util.NoSuchElementException
03-11 21:23:08.241: E/AndroidRuntime(3958): at java.util.Scanner.next(Scanner.java:1007)
03-11 21:23:08.241: E/AndroidRuntime(3958): at java.util.Scanner.next(Scanner.java:980)
03-11 21:23:08.241: E/AndroidRuntime(3958): at seaskyways.testingproject.MainActivity.inputStreamToString(MainActivity.java:44)
03-11 21:23:08.241: E/AndroidRuntime(3958): at seaskyways.testingproject.MainActivity$7.onLongClick(MainActivity.java:171)
03-11 21:23:08.241: E/AndroidRuntime(3958): at android.view.View.performLongClick(View.java:4240)
03-11 21:23:08.241: E/AndroidRuntime(3958): at android.widget.TextView.performLongClick(TextView.java:8060)
03-11 21:23:08.241: E/AndroidRuntime(3958): at android.view.View$CheckForLongPress.run(View.java:17339)
03-11 21:23:08.241: E/AndroidRuntime(3958): at android.os.Handler.handleCallback(Handler.java:725)
03-11 21:23:08.241: E/AndroidRuntime(3958): at android.os.Handler.dispatchMessage(Handler.java:92)
03-11 21:23:08.241: E/AndroidRuntime(3958): at android.os.Looper.loop(Looper.java:137)
03-11 21:23:08.241: E/AndroidRuntime(3958): at android.app.ActivityThread.main(ActivityThread.java:5237)
03-11 21:23:08.241: E/AndroidRuntime(3958): at java.lang.reflect.Method.invokeNative(Native Method)
03-11 21:23:08.241: E/AndroidRuntime(3958): at java.lang.reflect.Method.invoke(Method.java:511)
03-11 21:23:08.241: E/AndroidRuntime(3958): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:799)
03-11 21:23:08.241: E/AndroidRuntime(3958): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:566)
03-11 21:23:08.241: E/AndroidRuntime(3958): at dalvik.system.NativeStart.main(Native Method)

请不要有变通办法,因为我有 future 的计划...感谢您的帮助!如果您需要更多信息,请点击此处,评论框向下几厘米:P

最佳答案

来自 this documentation我知道您实际上应该使用 .hasNext() 保护您的 .next() 调用.

这里,例如:

public String inputStreamToString(InputStream stream){

Scanner s = new Scanner(stream).useDelimiter("\\A");
if (s.hasNext()){
return s.next();
}else{
return null;
}
}

而且,如果你的权限写对了,这个

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STROAGE"/>

权限实际上并不存在。应该是

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

关于android - 将文件写入 getFilesDir() 失败 - NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15347193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com