标签: java-io

hadoop java.io.IOException:在运行namenode -format时

我跑了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)

directory hadoop ioexception java-io

11
推荐指数
2
解决办法
2万
查看次数

用于进度报告的InputStream或Reader包装器

所以,我正在将文件数据提供给需要a的API,Reader我想要一种报告进度的方法.

看起来应该直截了当地编写一个FilterInputStream包装的实现,FileInputStream跟踪读取的字节数与总文件大小,并触发一些事件(或调用某些update()方法)来报告小数进度.

(或者,它可以报告绝对字节读取,而其他人可以进行数学计算 - 在其他流式传输情况下可能更常用.)

我知道我以前见过这个,我甚至可能以前做过,但我找不到代码,而且我很懒.有没有人得到它?或者有人可以提出更好的方法吗?


一年(有点)之后......

我在下面根据Adamski的答案实施了一个解决方案,并且它有效,但经过几个月的使用后我不推荐它.当您有大量更新时,解雇/处理不必要的进度事件会产生巨大的成本.基本的计数机制很好,但是对于那些关心进展调查的人来说要好得多,而不是把它推到他们身上.

(如果你知道总的大小,你可以尝试每隔1%的变化或者其他任何事情来发射一个事件,但这不值得麻烦.通常,你没有.)

java inputstream java-io

10
推荐指数
3
解决办法
1万
查看次数

Java:在不锁定文件的情况下打开和读取文件

我需要能够用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)

java filelock java-io

10
推荐指数
1
解决办法
9391
查看次数

从Resteasy服务器返回文件

嗨,我想从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)

java rest file-io resteasy java-io

10
推荐指数
1
解决办法
1万
查看次数

在java.io.InputStream及其子类型中可靠地跳过数据

我正在处理二进制流,需要有效地跳过我不感兴趣的一系列数据,以及一些将被处理的数据.

InputStream.skip(long) 在保证方面做得不多:

跳过并丢弃此输入流中的n个字节的数据.由于各种原因,跳过方法可能最终跳过一些较小数量的字节,可能为0.这可能是由许多条件中的任何一个引起的; 在跳过n个字节之前到达文件末尾只有一种可能性.返回跳过的实际字节数.

我需要知道发生了两件事之一:

  1. 小溪结束了
  2. 跳过了字节

很简单.但是,在此描述中提供的宽大意味着,例如,BufferedInputStream可以跳过几个字节并返回.当然,它告诉我它只是跳过了那几个,但不清楚为什么.

所以我的问题是:你是否能够InputStream.skip(long)以这样的方式使用你知道什么时候流结束或跳过成功?

java inputstream skip stream java-io

10
推荐指数
1
解决办法
4645
查看次数

资源泄漏:'in'永远不会关闭,尽管它已关闭

我知道那里有几个类似的有问题的问题,但是大多数人都忘了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)

java java-io

10
推荐指数
2
解决办法
9002
查看次数

在android中逐行读取文本文件

嗨,我刚开始学习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)

java android java-io

10
推荐指数
1
解决办法
3万
查看次数

Java 中的 Async File NIO 有什么好处?

根据AsynchronousFileChannelAsynchronousChannelGroup的文档,异步 NIO 使用专用线程池,“处理 IO 事件”。我找不到任何明确的说明在这种情况下“处理”是什么意思,但根据this,我很确定在一天结束时,这些专用线程上会发生阻塞。为了缩小范围,我正在使用 Linux 并基于Alex Yursha 的回答,没有非阻塞 IO 之类的东西,只有 Windows 在某些级别上支持它。

我的问题是:使用异步 NIO 与在我自己创建的专用线程池上运行的同步 IO 相比有什么好处?考虑到引入的复杂性,什么情况下仍然值得实施?

java asynchronous nio java-io

10
推荐指数
1
解决办法
834
查看次数

代理InputStream的方法

我正在使用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)

java android java-io

9
推荐指数
1
解决办法
987
查看次数

如何逐行复制大数据文件?

我有一个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 java-io java-stream

9
推荐指数
1
解决办法
139
查看次数