在創建我的類時,我想使用src文件夾中名爲「techs.xml」的xml文件中的數據填充數組。在Android中打開XML文件 - .exists()始終爲false
public class MainActivity extends Activity {
private static String username;
public ArrayList<Tech> techList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LogInDialog login = new LogInDialog();
login.show(getFragmentManager(), null);
FileInputStream myInputStream;
File file = new File("src/techs.xml");
File file1 = new File("C:\\Users\\Joe\\My Document\\Classes\\CIS 408 - Mobile Appl Dev\\CII\\src\\techs.xml");
System.out.println(file.exists());
System.out.println(file.getAbsolutePath());
System.out.println(file1.exists());
System.out.println(file1.getAbsolutePath());
try {
myInputStream = new FileInputStream(file);
System.out.println("wat");
techList = new ArrayList(TechParser.parse(myInputStream));
} catch (Exception e) {
e.printStackTrace();
}
}
}
在相關區域的logcat的輸出是這樣的:
04-30 18:29:07.703: I/Process(7846): Sending signal. PID: 7846 SIG: 9
04-30 18:29:10.923: I/System.out(7921): false
04-30 18:29:10.923: I/System.out(7921): /src/techs.xml
04-30 18:29:10.933: I/System.out(7921): false
04-30 18:29:10.933: I/System.out(7921): /C:\Users\Joe\My Document\Classes\CIS 408 - Mobile Appl Dev\CII\src\techs.xml
04-30 18:29:10.933: W/System.err(7921): java.io.FileNotFoundException: /src/techs.xml: open failed: ENOENT (No such file or directory)
04-30 18:29:10.933: W/System.err(7921): at libcore.io.IoBridge.open(IoBridge.java:406)
04-30 18:29:10.933: W/System.err(7921): at java.io.FileInputStream.<init>(FileInputStream.java:78)
04-30 18:29:10.933: W/System.err(7921): at com.example.cii.MainActivity.onCreate(MainActivity.java:35)
04-30 18:29:10.933: W/System.err(7921): at android.app.Activity.performCreate(Activity.java:4492)
04-30 18:29:10.933: W/System.err(7921): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
04-30 18:29:10.933: W/System.err(7921): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
04-30 18:29:10.933: W/System.err(7921): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
04-30 18:29:10.943: W/System.err(7921): at android.app.ActivityThread.access$600(ActivityThread.java:123)
04-30 18:29:10.943: W/System.err(7921): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
04-30 18:29:10.943: W/System.err(7921): at android.os.Handler.dispatchMessage(Handler.java:99)
04-30 18:29:10.943: W/System.err(7921): at android.os.Looper.loop(Looper.java:137)
04-30 18:29:10.943: W/System.err(7921): at android.app.ActivityThread.main(ActivityThread.java:4424)
04-30 18:29:10.943: W/System.err(7921): at java.lang.reflect.Method.invokeNative(Native Method)
04-30 18:29:10.943: W/System.err(7921): at java.lang.reflect.Method.invoke(Method.java:511)
04-30 18:29:10.943: W/System.err(7921): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
04-30 18:29:10.943: W/System.err(7921): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
04-30 18:29:10.943: W/System.err(7921): at dalvik.system.NativeStart.main(Native Method)
04-30 18:29:10.943: W/System.err(7921): Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory)
04-30 18:29:10.943: W/System.err(7921): at libcore.io.Posix.open(Native Method)
04-30 18:29:10.943: W/System.err(7921): at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110)
04-30 18:29:10.943: W/System.err(7921): at libcore.io.IoBridge.open(IoBridge.java:390)
所以這裏的問題似乎是,雖然這是該文件夾(在文件根本不存在/ CII/SRC/techs.xml)。我使用了絕對版本的文件(我不想在最終版本中做)來測試它,它也返回false。任何人都不能給我任何提示,問題可能是什麼?
你不能引用src文件夾中的任意文件。一種選擇是將文件放入資產中,然後使用AssetManager爲其獲取輸入流。路徑'C:\ Users \ ...'在android上也不會工作,因爲它不會在你的電腦上顯示,它只會在Android設備上顯示,並且不會使用'C :' – FoamyGuy 2013-04-30 22:35:08
我結束了我的代碼以反映當前狀態,我做了一些我以前沒有反映過的變化,我的歉意。 這是有道理的,除了我沒有添加/ in/C:...系統本身。即使如此,/ src/techs.xml會是正確的嗎? @Foamy,哦,你不能?我從來沒有意識到這一點。然後我會查看AssetManager。 – user2337643 2013-04-30 22:36:20
@ user2337643你是對的'/ src/techs.xml'不正確。在你的回答中,你已經說過應該是別的東西('/ CII/src/techs.xml')。看起來你似乎錯過了這裏的基本路徑。 – 2013-05-02 07:55:59