2010-11-21 84 views
0

親愛的所有人,我正在爲Android 2.2製作一個簡單的文件解碼器,它需要從頭中找到編碼文件的文件名。這個文件名應該被用作解碼文件的文件名(如你所期望的)。Java:由子串生成的字符串不被視爲硬編碼字符串

文件名由子字符串name=標識,所以實際名稱在此之後開始5個位置。該行由BufferedReader讀取並臨時存儲在currLine中。

出於某種原因,我無法理解,也沒有發現在網絡上,絃樂並不總是似乎是絃樂...

當我給的文件名作爲

String fileOutName = "testfile.txt";
System.out.println("fileOutName contains: "+ fileOutName);
System.out.println("fileOutName type: "+ fileOutName.getClass());

它的工作原理喜歡它應該。但是從文件中讀取它不工作:

String fileOutName = currLine.substring((currLine.indexOf("name=")+5));

沒有給出輸出文件,也沒有一個IO異常。該字符串被解析雖然正確:從System.out的調試線,我覺得這兩種情況下:

fileOutName contains: testfile.txt
fileOutName type: class java.lang.String

任何人有任何線索,爲什麼這是行不通的? :S

感謝

+0

你指定了正確的路徑嗎? – st0le 2010-11-21 12:17:25

+0

當您閱讀文件頭時,您可以發表一個代碼片段嗎? – 2010-11-21 12:20:01

回答

2

啊...當然substring程序也得到end of line角色,這顯然不能在一個文件名,但顯然不會被打印行:)

返回所以這由固定:

String fileOutName = currLine.substring((currLine.indexOf("name=")+5), currLine.length() -1);

感謝看着這個和評論,只是冒充答案打我的問題......任何人都可以請舉報我的答案一對嗎?看來在接下來的兩天我無法做到這一點。

+4

除您之外沒有人可以將您的答案標記爲正確。等待幾天=) – 2010-11-21 12:25:59

+0

而不是currLine.length()-1你可能會考慮String.trim()方法。這樣,所有前導空白和尾隨空白都被刪除。對我來說這是更可讀:) – extraneon 2010-11-21 12:51:36

+0

感謝您的答覆! @extraneon - 我仍然會使用-1,因爲格式允許空格。在name =之後,除了我之前包含的EOL之外,所有字符都應該被視爲所需的名稱。我會在未來記住它,因爲它絕對更具可讀性,謝謝:) – 2010-11-21 13:31:43