我试图在我的示例Android应用程序中读取一个简单的文本文件.我使用下面编写的代码来读取简单的文本文件.
InputStream inputStream = openFileInput("test.txt");
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
Run Code Online (Sandbox Code Playgroud)
我的问题是:我应该将这个"test.txt"文件放在我的项目中?我已经尝试将文件放在文件夹下"res/raw","asset"但我得到了exception "FileNotFound"上面写的代码第一次执行时的执行.
谢谢您的帮助
如何在单元测试执行期间从assets文件夹访问文件?我的项目是使用Gradle构建的,我使用Robolectric来运行测试.似乎gradle正在认识到assets:

这就是我在努力阅读文件的方式:
public String readFileFromAssets(String fileName) throws IOException {
InputStream stream = getClass().getClassLoader().getResourceAsStream("assets/" + fileName);
Preconditions.checkNotNull(stream, "Stream is null");
BufferedReader reader = new BufferedReader(new InputStreamReader(stream, "UTF-8"));
return IOUtils.toString(reader);
}
Run Code Online (Sandbox Code Playgroud)
但stream总是如此null.我尝试了许多不同的方法,即使用不同的方法定义文件的路径.
非常感谢你提前.
我想在我的地图中添加多个标记,但我不知道如何.
目前,我正在使用它,它正常工作:
Marker m1 = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(38.609556, -1.139637))
.anchor(0.5f, 0.5f)
.title("Title1")
.snippet("Snippet1")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.logo1)));
Marker m2 = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(40.4272414,-3.7020037))
.anchor(0.5f, 0.5f)
.title("Title2")
.snippet("Snippet2")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.logo2)));
Marker m3 = googleMap.addMarker(new MarkerOptions()
.position(new LatLng(43.2568193,-2.9225534))
.anchor(0.5f, 0.5f)
.title("Title3")
.snippet("Snippet3")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.logo3)));
Run Code Online (Sandbox Code Playgroud)
但是当我想在我的地图中添加300个标记时,就会出现问题.一个接一个地做这件事非常烦人.
有没有办法从数组或任何东西读取标记?
另一个问题:我可以从外部文件中读取标记,因此我可以添加或更新标记而无需触及应用程序代码吗?
谢谢.
try {
FileReader fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line = null;
} catch (FileNotFoundException fnf) {
fnf.printStackTrace();
} finally {
fr.close();
}
Run Code Online (Sandbox Code Playgroud)
将fr.close()显示一个错误:
fr无法解决
我曾经读过在finally块中关闭一个文件是一个很好的做法.
那是做错了什么的?
我想实现一个应用程序,它将显示路线编号,骑手已登陆谷歌地图.因此,要查找路由号,我需要一些有关路由的信息,这些信息在JSON文件中定义.JSON文件中的信息将从应用程序中脱机处理和解析.它也应该与应用程序一起安装和卸载.JSON文件包含100多个route_direction.它看起来像下面的代码.我可以在哪个文件夹中存储JSON文件到我的Android项目中?存储这样的数据的最佳方法是什么?
JSON文件:
{"route_direction":[
{
1_ab:{
{
stopsName_arrivalTime:{"abc":{"mon-fri":[05:33,06:00,06:30,...],
"sat":[],
"son":[]
}
},
stops_loca:{lat:53.337994, long:10.600423} ,
},
{
stopsName_arrivalTime:{"def":{"mon-fri":[],
"sat":[],
"son":[]
}
},
stops_loca:{lat:53.740624, long:10.101322}
},
{
stopsName_arrivalTime:{"hgk":{"mon-fri":[],
"sat":[],
"son":[]
}
},
stops_loca:{lat:53.644834, long:10.203372}
}
}
},
{1_ba:{
{
stopsName_arrivalTime:{"hgk":{"mon-fri":[05:33,06:00,06:30],
"sat":[],
"son":[]
}
},
stops_loca:{lat:53.437994, long:10.400423} ,
},
{
stopsName_arrivalTime:{"def":{"mon-fri":[],
"sat":[],
"son":[]
}
},
stops_loca:{lat:53.540624, long:10.601322}
},
{
stopsName_arrivalTime:{"abc":{"mon-fri":[],
"sat":[],
"son":[]
}
},
stops_loca:{lat:53.244834, long:10.703372}
}
}
},........
]
}Run Code Online (Sandbox Code Playgroud)
我目前在纯Java程序中使用ResourceBundles。现在,我想在Android应用程序中使用相同的文件。当文件放置在例如/ sdcard /时,它可以按预期工作。有没有办法直接从已知的android文件夹结构中加载它们?例如从资产没有手动应对它们到SD卡?
这适用于sdcard:
File file = new File("/sdcard/");
URL[] urls = new URL[0];
try {
urls = new URL[]{file.toURI().toURL()};
} catch (MalformedURLException e) {
e.printStackTrace();
}
ClassLoader loader = new URLClassLoader(urls);
ResourceBundle rb = ResourceBundle.getBundle("test", Locale.DEFAULT, loader);
Run Code Online (Sandbox Code Playgroud)
该网址不适用于assests文件夹:
urls = new URL[]{new URL("file:///android_asset/test/")};
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助。
我在 Android Studio 的资产文件目录中可能有 wifi2.txt 文件。但是,当我尝试访问它时,我不断收到 NULLPointException。我的代码如下:(提前非常感谢)

//CSV FILE READING
File file = null;
try {
FileInputStream is = new FileInputStream(file);
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(getAssets().open("wifi2.txt")));
String line;
Log.e("Reader Stuff",reader.readLine());
while ((line = reader.readLine()) != null) {
Log.e("code",line);
String[] RowData = line.split(",");
LatLng centerXY = new LatLng(Double.valueOf(RowData[1]), Double.valueOf(RowData[2]));
if (RowData.length == 4) {
mMap.addMarker(new MarkerOptions().position(centerXY).title(String.valueOf(RowData[0]) + String.valueOf(RowData[3])).icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)));
}
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace(); …Run Code Online (Sandbox Code Playgroud) 我正在尝试从资产文件夹中读取pdf文件,但我不知道如何获取pdf文件的路径。我右键单击pdf文件,然后选择“复制路径”并粘贴
这是我的代码:
File file = new File("/Users/zulqarnainmustafa/Desktop/ReadPdfFile/app/src/main/assets/Introduction.pdf");
if (file.exists()){
Uri path = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(path, "application/pdf");
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
try {
this.startActivity(intent);
}
catch (ActivityNotFoundException e) {
Toast.makeText(this, "No application available to view PDF", Toast.LENGTH_LONG).show();
}
}else{
Toast.makeText(this, "File path not found", Toast.LENGTH_LONG).show();
}
Run Code Online (Sandbox Code Playgroud)
我总是找不到文件,请帮助我创建File对象,或者让我知道如何获取我也尝试过file:///android_asset/Introduction.pdf但没有成功的文件的确切路径。我也尝试使用Image.png,但从未成功过file.exists()。我正在使用Mac版本的Android Studio。谢谢
我正在开发一个应用程序,它将手机中的 .txt 文件作为输入并将其打印在 TextView 上,
public class MainActivity extends AppCompatActivity {
Button button;
Intent intent;private StringBuilder text = new StringBuilder();
private InputStream getResources(String s) {
return null;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("text/plain");
startActivityForResult(intent, 7);
Log.v("###", "parent " + getParent());
}
});
} @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
String Fpath = data.getDataString();
// final …Run Code Online (Sandbox Code Playgroud) android ×8
java ×3
assets ×1
google-maps ×1
gradle ×1
java-io ×1
json ×1
pdf ×1
robolectric ×1
text-files ×1