Dav*_*lds 2 io android xamarin
当我尝试在 Xamarin/Android 应用程序中写入文本文件时,我间歇性地遇到打开文件过多异常。据我所知,这是因为每个 Android 应用程序对其可以打开的文件数量都有限制,显然我的应用程序在某些情况下超出了该限制。因此,我必须让一些文件保持打开状态/没有在某个地方正确处理它们。我想知道是否可以以编程方式列出我的应用程序在任何给定时间打开的文件?显然操作系统知道这一点,是否可以在我的应用程序中执行此操作?这将帮助我找到问题所在。
感谢 fiddler,这就是我解决这个问题的方法,以防其他人将来需要这样做(在 C# / Xamarin 中):
private static List<string> m_commandData;
private static void GetOpenedFiles()
{
m_commandData = new List<string>();
RunCommand("lsof");
RunCommand("ps | grep TestNoFilesOpen");
}
private static void RunCommand(string command)
{
string data;
using (Java.Lang.Process process = Java.Lang.Runtime.GetRuntime().Exec(command))
{
Stream stream = process.InputStream;
StreamReader bodyReader = new StreamReader(stream);
data = bodyReader.ReadToEnd();
}
m_commandData.Add(data);
}
private static void WriteCommands()
{
for (int i = 0; i < m_commandData.Count; i++)
{
using (TextWriter tw = new StreamWriter(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath + "/NoFilesOpen/adb_" + i.ToString() + ".txt"))
{
tw.Write(m_commandData[i]);
tw.Close();
}
}
m_commandData = new List<string>();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2932 次 |
| 最近记录: |