我跑了namenode -format.这是我的输出.我尝试更改文件权限chmod 777 hadoop.
我相信这行是错误ERROR namenode.NameNode:java.io.IOException:无法创建目录/ your/path/to/hadoop/tmp/dir/hadoop-hadoop/dfs/name/current
adoop@alexander-desktop:/usr/local/hadoop/bin$ ./hadoop namenode -format
12/07/03 17:03:56 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = alexander-desktop/127.0.1.1
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 0.20.2
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-0.20 -r 911707; compiled by 'chrisdo' on Fri Feb 19 08:07:34 UTC 2010
************************************************************/
12/07/03 17:03:56 INFO namenode.FSNamesystem: fsOwner=hadoop,hadoop
12/07/03 17:03:56 INFO namenode.FSNamesystem: supergroup=supergroup
12/07/03 17:03:56 INFO namenode.FSNamesystem: isPermissionEnabled=true
12/07/03 17:03:56 ERROR namenode.NameNode: java.io.IOException: Cannot create directory /your/path/to/hadoop/tmp/dir/hadoop-hadoop/dfs/name/current
at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.clearDirectory(Storage.java:295)
at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:1086)
at org.apache.hadoop.hdfs.server.namenode.FSImage.format(FSImage.java:1110)
at …Run Code Online (Sandbox Code Playgroud) 所以,我正在将文件数据提供给需要a的API,Reader我想要一种报告进度的方法.
看起来应该直截了当地编写一个FilterInputStream包装的实现,FileInputStream跟踪读取的字节数与总文件大小,并触发一些事件(或调用某些update()方法)来报告小数进度.
(或者,它可以报告绝对字节读取,而其他人可以进行数学计算 - 在其他流式传输情况下可能更常用.)
我知道我以前见过这个,我甚至可能以前做过,但我找不到代码,而且我很懒.有没有人得到它?或者有人可以提出更好的方法吗?
一年(有点)之后......
我在下面根据Adamski的答案实施了一个解决方案,并且它有效,但经过几个月的使用后我不推荐它.当您有大量更新时,解雇/处理不必要的进度事件会产生巨大的成本.基本的计数机制很好,但是对于那些关心进展调查的人来说要好得多,而不是把它推到他们身上.
(如果你知道总的大小,你可以尝试每隔1%的变化或者其他任何事情来发射一个事件,但这不值得麻烦.通常,你没有.)
我需要能够用Java模仿'tail -f'.我正在尝试读取一个日志文件,因为它是由另一个进程写的,但是当我打开文件来读取它时,它会锁定文件而另一个进程无法再写入它.任何帮助将不胜感激!
这是我目前使用的代码:
public void read(){
Scanner fp = null;
try{
fp = new Scanner(new FileReader(this.filename));
fp.useDelimiter("\n");
}catch(java.io.FileNotFoundException e){
System.out.println("java.io.FileNotFoundException e");
}
while(true){
if(fp.hasNext()){
this.parse(fp.next());
}
}
}
Run Code Online (Sandbox Code Playgroud) 嗨,我想从resteasy服务器返回一个文件.为此,我在客户端有一个链接,它使用ajax调用rest服务.我想在休息服务中返回该文件.我尝试了这两个代码块,但两个都没有按照我的要求工作.
@POST
@Path("/exportContacts")
public Response exportContacts(@Context HttpServletRequest request, @QueryParam("alt") String alt) throws IOException {
String sb = "Sedat BaSAR";
byte[] outputByte = sb.getBytes();
return Response
.ok(outputByte, MediaType.APPLICATION_OCTET_STREAM)
.header("content-disposition","attachment; filename = temp.csv")
.build();
}
Run Code Online (Sandbox Code Playgroud)
.
@POST
@Path("/exportContacts")
public Response exportContacts(@Context HttpServletRequest request, @Context HttpServletResponse response, @QueryParam("alt") String alt) throws IOException {
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=temp.csv");
ServletOutputStream out = response.getOutputStream();
try {
StringBuilder sb = new StringBuilder("Sedat BaSAR");
InputStream in =
new ByteArrayInputStream(sb.toString().getBytes("UTF-8"));
byte[] outputByte = sb.getBytes();
//copy binary contect to output stream …Run Code Online (Sandbox Code Playgroud) 我正在处理二进制流,需要有效地跳过我不感兴趣的一系列数据,以及一些将被处理的数据.
InputStream.skip(long) 在保证方面做得不多:
跳过并丢弃此输入流中的n个字节的数据.由于各种原因,跳过方法可能最终跳过一些较小数量的字节,可能为0.这可能是由许多条件中的任何一个引起的; 在跳过n个字节之前到达文件末尾只有一种可能性.返回跳过的实际字节数.
我需要知道发生了两件事之一:
很简单.但是,在此描述中提供的宽大意味着,例如,BufferedInputStream可以跳过几个字节并返回.当然,它告诉我它只是跳过了那几个,但不清楚为什么.
所以我的问题是:你是否能够InputStream.skip(long)以这样的方式使用你知道什么时候流结束或跳过成功?
我知道那里有几个类似的有问题的问题,但是大多数人都忘了close()在他们的流上发布指令.这是不同的.
让我们说我有以下最小的例子:
public void test() throws IOException
{
InputStream in;
if( file.exists() )
{
in = new FileInputStream( file );
}
else
{
in = new URL( "some url" ).openStream();
}
in.close();
}
Run Code Online (Sandbox Code Playgroud)
这Resource leak: 'in' is never closed在Eclipse(Juno SR1)中给了我一个警告.但当我in.close()进入条件块时,警告消失了:
public void test() throws IOException
{
InputStream in;
if( file.exists() )
{
in = new GZIPInputStream( new FileInputStream( file ) );
in.close();
}
else
{
in = new URL( "some URL" ).openStream();
}
} …Run Code Online (Sandbox Code Playgroud) 嗨,我刚开始学习android开发,我正在尝试构建一个从文件中读取文本的应用程序.我一直在网上搜索,但我似乎没有找到这样做的方式,所以我有几个问题..
1.怎么做?在android中逐行读取文件的首选方法是什么?
2.我应该在哪里存储文件?它应该在raw文件夹中还是在assets文件夹中?
所以这就是我已经尝试过的:"(我认为问题可能在于找到文件..)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.filereader);
try {
// open the file for reading
InputStream fis = new FileInputStream("text.txt");
// if file the available for reading
if (fis != null) {
// prepare the file for reading
InputStreamReader chapterReader = new InputStreamReader(fis);
BufferedReader buffreader = new BufferedReader(chapterReader);
String line;
// read every line of the file into the line-variable, on line at the time
do {
line = buffreader.readLine();
// do something with the …Run Code Online (Sandbox Code Playgroud) 根据AsynchronousFileChannel和AsynchronousChannelGroup的文档,异步 NIO 使用专用线程池,“处理 IO 事件”。我找不到任何明确的说明在这种情况下“处理”是什么意思,但根据this,我很确定在一天结束时,这些专用线程上会发生阻塞。为了缩小范围,我正在使用 Linux 并基于Alex Yursha 的回答,没有非阻塞 IO 之类的东西,只有 Windows 在某些级别上支持它。
我的问题是:使用异步 NIO 与在我自己创建的专用线程池上运行的同步 IO 相比有什么好处?考虑到引入的复杂性,什么情况下仍然值得实施?
我正在使用Android-Universal-Image-LoaderHTTPS在我的Android应用程序上从远程服务器加载图像.要访问映像,客户端应提供有效的令牌,有时服务器可能会返回"过期的crsf令牌"错误.为了处理此行为,应定义自定义ImageDownloader.下面是我的实现中应该覆盖的方法的基本实现.
protected InputStream getStreamFromNetwork(String imageUri, Object extra) throws IOException {
HttpURLConnection conn = createConnection(imageUri, extra);
int redirectCount = 0;
while (conn.getResponseCode() / 100 == 3 && redirectCount < MAX_REDIRECT_COUNT) {
conn = createConnection(conn.getHeaderField("Location"), extra);
redirectCount++;
}
InputStream imageStream;
try {
imageStream = conn.getInputStream();
} catch (IOException e) {
// Read all data to allow reuse connection (http://bit.ly/1ad35PY)
IoUtils.readAndCloseStream(conn.getErrorStream());
throw e;
}
if (!shouldBeProcessed(conn)) {
IoUtils.closeSilently(imageStream);
throw new IOException("Image request failed with response code " + conn.getResponseCode());
} …Run Code Online (Sandbox Code Playgroud) 我有一个35GB的CSV文件。我想读取每一行,并在符合条件的情况下将其写到新的CSV中。
try (BufferedWriter writer = Files.newBufferedWriter(Paths.get("source.csv"))) {
try (BufferedReader br = Files.newBufferedReader(Paths.get("target.csv"))) {
br.lines().parallel()
.filter(line -> StringUtils.isNotBlank(line)) //bit more complex in real world
.forEach(line -> {
writer.write(line + "\n");
});
}
}
Run Code Online (Sandbox Code Playgroud)
这大约需要。7分钟 是否可以进一步加快该过程?
java-io ×10
java ×9
android ×2
inputstream ×2
asynchronous ×1
directory ×1
file-io ×1
filelock ×1
hadoop ×1
ioexception ×1
java-stream ×1
nio ×1
rest ×1
resteasy ×1
skip ×1
stream ×1