- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我编写了以下代码,使用 HADOOP 的 LocalFileSytem 将几个字节写入本地文件。我使用了 flush() ,据我所知,它会刷新 JVM 缓冲区,而 hsynch() 会刷新操作系统缓冲区,从而导致写入数据到磁盘。但在我的例子中,它的数据没有出现在文件“1.txt”中。但是当我使用 close() 关闭输出流时[暂时我已经在我的代码中注释掉] 数据完美地出现了。如果我对 flush() 和 hsynch() 的理解正确与否,请纠正我?如果正确,为什么数据没有出现?
package hdfsTrying.hdfstrying;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import com.google.protobuf.ByteString.Output;
public class LocalFileAccess {
public static void main(String arg[])
{
Path p = new Path("/home/priya/1.txt");
FileSystem fs;
Configuration cfg = new Configuration();
try
{
fs= FileSystem.getLocal(cfg);
FSDataOutputStream out = fs.create(p);
out.write("Hi This should be written to file 1.txt".getBytes());
out.flush();
out.hsync();
//out.close();
FileStatus fst[] = fs.listStatus(p);
for(FileStatus g:fst)
System.out.println(g.getPath());
}
catch(IOException io)
{
System.out.println("I am having exception");
System.out.println(io.getMessage());
}
}
}
最佳答案
当您使用flush
方法将文件写入磁盘时,它只会在达到一个 block 的数据量时才写入磁盘。因此,如果您的数据较小(这是您的情况),您需要调用 hsync
函数来强制同步所有缓冲区。但是,此方法仅适用于 1.x 以上的 Hadoop 版本,因为在此之前此方法仅调用了 hflush
。如果您的 Hadoop 版本较低,请尝试调用 sync
而不是 hsync
。
关于java - 数据未出现在使用 HADOOP LocalFileSystem 写入的文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20699118/
我尝试编写一些代码来检索图像文件(来自 Wikimedia Commons),将其存储在本地然后显示它。这是我的代码: window.requestFileSystem = window.r
在 PhoneGap 中,我使用 window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
我试图理解我所遇到的问题。我正在通过 Cordova 为 Android 开发一个应用程序。我寻找解决方案,但实际上还没有找到。 首先,我遇到了一个未定义的“requestFileSystem”问题,
我在 phonegap 2.6.0 中使用了此代码并且它有效,现在我升级到 phonegap 3.0.0 和 xcode 5 并且出现此错误: onDeviceReady: => try
我在 phonegap 应用程序中出于存储目的访问 Android 文件系统时遇到问题。我搜索并找到了很多不适合我的情况的解决方案! 我知道 deviceready 被发射和检查的必要性,它被发射了。
我编写了以下代码,使用 HADOOP 的 LocalFileSytem 将几个字节写入本地文件。我使用了 flush() ,据我所知,它会刷新 JVM 缓冲区,而 hsynch() 会刷新操作系统缓冲
在我们的应用程序中,用户可以下载 PDF 并通过 iOS 上的 InAppBrowser 或 Android 上的本地 PDF 阅读器打开它。为了存储文件,我们使用 Phonegap 的 LocalF
我调查了很多问题,但这些都没有解决我的问题。 我已经安装了文件插件。 当我键入 `cordova plugin ls 时,我得到以下结果: [ 'org.apache.cordova.file' ]
我正在使用 appgyver steroids (phonegap) 并尝试将照片从相机 API 保存到应用程序文件空间,以便在我重新扫描/重新加载应用程序时它不会被删除。我正在按照 cordova
我想在我的 Android WebView 中显示目录列表,仅使用在 WebView 中单击按钮。 webView 启动正常,正在监听事件,但出现异常 未捕获的 ReferenceError:Loca
设置hadoop configuration后,即使jar文件中存在java.lang.RuntimeException: java.lang.ClassNotFoundException: org.
我是一名优秀的程序员,十分优秀!