讨教:为什么使用Android读取SD卡根目录的T.INI配置文件,读不了

Android 码拜 8年前 (2016-05-21) 1836次浏览
根据这个帖子:http://www.datouinfo.com/?p=1187
的方法。
本人做的一个读取SD卡根目录下面的ini配置文件内容

package com.example.ini;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
//加载输入输出库
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Map.Entry;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import android.os.Environment;
import java.io.File;
import java.io.IOException;
import org.dtools.ini.*;
public class MainActivity extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//插入本人的代码


		  boolean sdCardExist = Environment.getExternalStorageState()    
                  .equals(android.os.Environment.MEDIA_MOUNTED);  //判断sd卡能否存在  
if  (sdCardExist)    
{                                   
//sdDir = Environment.getExternalStorageDirectory();//获取跟目录  
    
			File sdCardDir = Environment.getExternalStorageDirectory();
		       System.out.println("sdCardDir  = "+sdCardDir);
		      // String filename = "/sdcard/" +  "T.ini";
			//String filename=sdCardDir+"/"+"T.ini";
			IniFile ini = new BasicIniFile(false);// 不使用大小写敏感
			IniFileReader reader = new IniFileReader(ini, new File(filename));

			try {
				reader.read();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			IniSection sec_sys = ini.getSection("system");
			String stationNum = sec_sys.getItem("stationNum").getValue();
			System.out.println("stationNum = " + stationNum);
			IniSection sec_station = ini.getSection("station");
			        for (IniItem item : sec_station.getItems()) {
			        	String name=item.getName();
			        	String value=item.getValue();
			            System.out.println(item.getName() + " = " + item.getValue());
			        }
}



	}
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}
}

配置文件加入了,读取许可:
<uses-permission android:name=”android.permission.READ_EXTERNAL_STORAGE”/>
T.Ini文件内容:
#############################################
# 预警显示系统配置文件 #
#############################################
[system]
#车站数量
stationNum = 5
#上行开始公里标
upStartPost = 100
#下行开始公里标
downStartPost = 100
[station]
#编号 = 车站名,公里标,上行股道数,下行股道数
station1 = 北京西站,100.077,2,2
station2 = 天津站,110.077,2,2
station3 = 廊坊站,120.077,2,2
station4 = 德州东站,130.077,2,2
station5 = 上海虹桥站,140.077,2,2
#############################################
完整源码云盘下载:
https://yunpan.cn/c6d2845EN8gTc  访问密码 8c56
研究了好几天 都没有读取到文件 真是崩溃了!
无可奈何 周末 加班了  请大家帮看看吧  非常感谢!

解决方案

30

你说读不了有没有先判断文件能否存在 然后在读取流,或有什么错误没。

50

应该是你配置文件的编码格式不对,需要修改成UTF8

20

本人去写IniFileReader 吧,你需要做的是第一步,以File的形式读取出inputstream出来,然后保存看看事实不会编码问题,不是继续去解析inputstream就ok了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明讨教:为什么使用Android读取SD卡根目录的T.INI配置文件,读不了
喜欢 (0)
[1034331897@qq.com]
分享 (0)