Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android的FileInputStream问题_Android_String_Fileinputstream - Fatal编程技术网

Android的FileInputStream问题

Android的FileInputStream问题,android,string,fileinputstream,Android,String,Fileinputstream,我是ADK的新手。最近我写了一个程序,从中获取字符串 其他设备。除了中文字符串外,没关系。谁能 是否帮助解决此问题 my codes look like this mFileDescriptor = mUsbManager.openAccessory(mAccessory); FileDescriptor fd = mFileDescriptor.getFileDescriptor(); mInputStream = new FileInputStream(fd); byte[] b =

我是ADK的新手。最近我写了一个程序,从中获取字符串 其他设备。除了中文字符串外,没关系。谁能 是否帮助解决此问题

my codes look like this
mFileDescriptor = mUsbManager.openAccessory(mAccessory);

FileDescriptor fd = mFileDescriptor.getFileDescriptor();

mInputStream = new FileInputStream(fd);

byte[] b = new byte[512];
int n;
String str;

while ((n = mInputStream.read(b)) != -1) 
{
......
str = (new String(b, 0, n, Charset.forName("UTF-8")));
......
}

中文用Unicode表示为多字节字符。因此,要正确地阅读它,您需要使用能够理解和解释多字节字符编码概念的特定读取器对象

基本上,您需要执行以下操作:

try {
    BufferedReader bufReader = new BufferedReader(
        new InputStreamReader(inputstream,Charset.forName("UTF-8")));
    String line = null;
    while ((line= bufReader.readLine())!= null) {
        System.out.println(line);
    }
} catch (IOException e) {
    e.printStackTrace();
}

谢谢你的回复。我已经修改过了,但仍然不起作用。我做错什么了吗?mFileDescriptor=mUsbManager.openAccessorymAccessory;如果mFileDescriptor!=null{FileDescriptor fd=mFileDescriptor.getFileDescriptor;mInputStream=new FileInputStreamfd;BufferedReader bufReader=new BufferedReadernew InputStreamReaderInputStream,Charset.forNameUTF-8;而str=bufReader.readLine!=null{}啊,我看到你正在使用AOA处理USB附件。好吧,UsbManager的InputStream还有一些问题等着你。虽然这个流在某种程度上符合流对象的JAVA规范,但根据我的经验,它在某种程度上不是包装普通磁盘文件的普通InputStream对象。请先尝试将从该输入流读取的数据写入文件,一旦文件中有大量数据,请尝试使用上述方法读取文件。非常感谢您的帮助。我将尝试先将字符串写入文件。