我的应用生成文本文件并将其存储在内部存储中。
读取和写入文件没有问题,但是当我尝试使用(wlan)ftp将文件发送到笔记本电脑时,它会抛出异常File not found(no such file or directory )
。
然后在调试后我发现这是文件路径的问题。所以我像这样硬编码文件路径
String path=context.getFilesDir().getAbsolutePath();
File file = new File(path + File.separator + fileName);
RandomAccessFile rf = new RandomAccessFile(file,"rws");
file.getParentFile().mkdirs();
Log.d("Created In",path);// in log path i found "/data/data/com.meta.Myapp/files"
byte[] text = new byte[(int) file.length()];
rf.readFully(text);
rf.seek(0);
rf.writeBytes(data);
rf.write(text);
Log.d("write","writing file...");
rf.close();
sock = new Socket("192.168.2.2", 21);
// sendfile
String path="/data/data/com.meta.Myapp/files";
Log.d("Fetching From",path);
File myFile = new File ( path+ File.separator + fname);
byte [] mybytearray = new byte [(int)myFile.length()];
FileInputStream fis = new FileInputStream(myFile);
BufferedInputStream bis = new BufferedInputStream(fis);
bis.read(mybytearray,0,mybytearray.length);
OutputStream os = sock.getOutputStream();
Log.d("Sending","Sending in progress");
os.write(mybytearray,0,mybytearray.length);
os.flush();
sock.close();
现在这样做没问题。但我不应该使用硬编码文件路径。所以如何获取文件路径来获取文件。因为客户端部分在AsyncTask中运行<>我不能使用Context.getFilesDir().getPath()
,我不知道如何将上下文传递给AsyncTask<>那么我该如何解决这个问题